Skip to content

feat(auth): implement atomic rollback for sign-in, refresh, logout, a… - #1688

Merged
Baskarayelu merged 1 commit into
Remitwise-Org:mainfrom
ojuotimi932:fix/atomic-rollback-auth-1645
Aug 29, 2026
Merged

feat(auth): implement atomic rollback for sign-in, refresh, logout, a…#1688
Baskarayelu merged 1 commit into
Remitwise-Org:mainfrom
ojuotimi932:fix/atomic-rollback-auth-1645

Conversation

@ojuotimi932

Copy link
Copy Markdown
Contributor

Closes #1645
…nd recovery flows

  • tokens.rs: Add TokenStoreSnapshot for snapshot/restore; wrap refresh() in rollback-safe boundary so partial revocation is impossible on issuance failure.
  • flows.rs: refresh_session() now syncs session tokens after rotation with rollback; logout()/logout_all() use snapshot-based rollback for token revocation + session supersession.
  • recovery.rs: complete_recovery() snapshots both RecoveryService and TokenStore before applying side effects; rolls back all changes on issuance failure.
  • refreshToken.provider.ts: Reorder refresh to create-before-revoke (new token persisted first, old token revoked second); audit logging is fire-and-forget so failed writes never block auth operations.
  • auth.controller.ts: Replace raw Error throw in logout-all with BadRequestException for consistent HTTP semantics.
  • Add regression tests proving no partial state on login failure, lockout, refresh, logout, and recovery replay/cancellation.

Closes #1645

🤖 Generated with Codebuff

…nd recovery flows

- tokens.rs: Add TokenStoreSnapshot for snapshot/restore; wrap refresh() in
  rollback-safe boundary so partial revocation is impossible on issuance failure.
- flows.rs: refresh_session() now syncs session tokens after rotation with
  rollback; logout()/logout_all() use snapshot-based rollback for token
  revocation + session supersession.
- recovery.rs: complete_recovery() snapshots both RecoveryService and TokenStore
  before applying side effects; rolls back all changes on issuance failure.
- refreshToken.provider.ts: Reorder refresh to create-before-revoke (new token
  persisted first, old token revoked second); audit logging is fire-and-forget
  so failed writes never block auth operations.
- auth.controller.ts: Replace raw Error throw in logout-all with
  BadRequestException for consistent HTTP semantics.
- Add regression tests proving no partial state on login failure, lockout,
  refresh, logout, and recovery replay/cancellation.

Closes Remitwise-Org#1645

🤖 Generated with Codebuff
Co-Authored-By: Codebuff <noreply@codebuff.com>
@Baskarayelu
Baskarayelu merged commit 62f95a8 into Remitwise-Org:main Aug 29, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Quality][High] authentication and account recovery: atomic rollback — QE-2026-08

3 participants