-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
PP-12546 hold payments in state after completion (#3868)
frontend now holds up to 10 charge objects on the client to allow users who navigate back to Pay from the service to see the status of their payment a charge will be removed from the client if 10 charges exist and an 11th payment is started the logic for determining which charge to remove is documented in this ADR: https://github.com/alphagov/pay-architecture/blob/main/adr/026-keep-payments-in-cookie-for-longer.md - new ChargeState model - new csrf secret management middleware - csrf secret is set at the root of the session object as part of a gradual migration of csrf behaviour - remove used csrf token store from frontend state - add new cookie functions for handling charge state - remove unused session code from server
- Loading branch information
Showing
21 changed files
with
563 additions
and
96 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
const logger = require('../utils/logger')(__filename) | ||
|
||
class ChargeState { | ||
/** | ||
* @param {Number} [createdAt] | ||
* @param {Number} [accessedAt] | ||
* @param {boolean} [isTerminal] | ||
*/ | ||
constructor (createdAt, accessedAt, isTerminal) { | ||
this.createdAt = createdAt || epochSecondsNow() | ||
this.accessedAt = accessedAt || epochSecondsNow() | ||
this.isTerminal = isTerminal || false | ||
} | ||
|
||
updateAccessedAt () { | ||
this.accessedAt = epochSecondsNow() | ||
} | ||
|
||
markTerminal () { | ||
this.updateAccessedAt() | ||
this.isTerminal = true | ||
} | ||
|
||
toString () { | ||
return `${this.createdAt},${this.accessedAt},${this.isTerminal ? 'T' : 'F'}` | ||
} | ||
} | ||
|
||
const chargeStateFromString = (data) => { | ||
try { | ||
const dataParts = data.split(',') | ||
if (dataParts.length === 3) { | ||
return new ChargeState(Number(dataParts[0]), Number(dataParts[1]), dataParts[2] === 'T') | ||
} else { | ||
logger.error('argument is not a valid ChargeState') | ||
return null | ||
} | ||
} catch (e) { | ||
logger.warn(`Error de-serialising ChargeState from string: ${e.message}`) | ||
return null | ||
} | ||
} | ||
|
||
const epochSecondsNow = () => { | ||
return Math.floor(Date.now() / 1000) | ||
} | ||
|
||
module.exports = { | ||
ChargeState, | ||
chargeStateFromString, | ||
epochSecondsNow | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.