-
Notifications
You must be signed in to change notification settings - Fork 0
In-flight board mutations can repopulate cleared state after logout #3306
Copy link
Copy link
Open
Labels
Priority IRelease-blocking or trust-breaking now; release scope still requires milestone membership.Release-blocking or trust-breaking now; release scope still requires milestone membership.bugSomething isn't workingSomething isn't workingfrontendPrimary implementation impact in Vue/TypeScript UI and client runtime.Primary implementation impact in Vue/TypeScript UI and client runtime.securityAuthentication, authorization, data protection, abuse prevention, and compliance-related changes.Authentication, authorization, data protection, abuse prevention, and compliance-related changes.testingTest coverage, harnesses, regression prevention, and verification pipeline work.Test coverage, harnesses, regression prevention, and verification pipeline work.
Description
Activity
Metadata
Metadata
Assignees
Labels
Priority IRelease-blocking or trust-breaking now; release scope still requires milestone membership.Release-blocking or trust-breaking now; release scope still requires milestone membership.bugSomething isn't workingSomething isn't workingfrontendPrimary implementation impact in Vue/TypeScript UI and client runtime.Primary implementation impact in Vue/TypeScript UI and client runtime.securityAuthentication, authorization, data protection, abuse prevention, and compliance-related changes.Authentication, authorization, data protection, abuse prevention, and compliance-related changes.testingTest coverage, harnesses, regression prevention, and verification pipeline work.Test coverage, harnesses, regression prevention, and verification pipeline work.
Projects
- StatusShow more project fieldsReview
Summary
resetForLogout()generation-gates and aborts board-list/detail reads, then clears all board state. It does not own or invalidate card, column, label, comment, or board mutation requests that were already in flight.Several mutation paths deliberately treat
currentBoard === nullas permission to commit into the selected-board collections (the pre-load/test convention). After logout, that same null value means the store was intentionally cleared. A late response can therefore repopulate the previous account's cards, labels, comments, columns, or boards and can emit a toast/error on the login screen or into a later session.Confirmed shape
resetForLogout()clears the store.Read cancellation does not cover this because most mutation API calls are not issued with a store-owned abort signal.
Expected design
Introduce one board-store session/mutation epoch owned by
resetForLogout():currentBoard === nullbehavior, if genuinely required, is made explicit rather than doubling as logout authority;Coordinate with #3305 so a stale mutation cannot clear a newer session's operation-owned loading state.
Acceptance
resetForLogout().Audit provenance
Found during the selected-board async-integrity pass behind #3299, #3301, #3303 and the loading-ownership follow-up #3305. Kept separate from those focused PRs to avoid cross-branch conflicts and to make the session boundary explicit.