fix(auth): preserve analytics by revoking sessions on logout#15
Open
joelev wants to merge 1 commit intosdamico:mainfrom
Open
fix(auth): preserve analytics by revoking sessions on logout#15joelev wants to merge 1 commit intosdamico:mainfrom
joelev wants to merge 1 commit intosdamico:mainfrom
Conversation
Contributor
Author
|
Reviewer checklist:\n\n1. Confirm logout now revokes viewer session () instead of deleting rows.\n2. Confirm denies revoked sessions and does not update for revoked rows.\n3. Confirm migration 013 is additive/idempotent ( + index).\n4. Confirm admin-session revocation and cookie-clearing behavior remain unchanged. |
Contributor
Author
|
Reviewer checklist:
|
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Replace hard-delete logout behavior with explicit viewer-session revocation to preserve analytics and avoid FK-related logout failures.
Beads
Problem
POST /api/logoutdeleted the currentsessionsrow. That can:eventsanalytics rows, andsessionswithout cascading delete semantics.Root Cause
Logout invalidation was implemented as physical row deletion instead of logical revocation.
Changes
api/logout.jsDELETE FROM sessionswithUPDATE sessions SET revoked_at = NOW()for viewer sessions.api/_lib/auth.jsgetSessionnow requiresrevoked_at IS NULL.last_seenupdates are guarded withrevoked_at IS NULL.migrations/013_session_revocation.sqlsessions.revoked_at TIMESTAMPTZ(idempotent).idx_sessions_revoked_at.Validation
UPDATEand no longer executesDELETE FROM sessionsgetSessionnpm run buildpasses:Built content/page.html (63624 bytes, 9 slides)Risk
revoked_atin production.Rollback
260344d.revoked_atcolumn/index can remain safely unused.