Permission-revocation handling for live and offline sessions #39
Labels
No Label
area:auth
area:docs
area:export
area:ops
area:storage
area:supply-chain
auth
backend
blocked
collab
deployment
docs
effort:L
effort:M
effort:S
frontend
plugins
qa
vs-nfd
vs-nfd:blocker
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: stwaidele/dorfteich#39
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
Revoking write access must terminate live sessions and handle pending offline edits gracefully (realtime-collaboration.md).
Scope
Backend: on access-relevant changes (interim service now, grants later)
NOTIFYa pond channel; collab listens and re-validates open connections (downgrade to ro or close). Frontend: on downgrade/rejection after offline edits, keep local content visible with the 'your edit permission was removed — export your changes' dialog offering Markdown copy/download; discard local state only on explicit user choice.Acceptance criteria
Technical notes
Dependencies
Depends on #35, #36, #38.
Size: ~1.5 days
Conventions: English code/comments, clear human-readable code, no hard-coded UI strings (ADR 0012, add
deanden), permission checks only via the shared guard (docs/architecture/permissions.md). Read the referenced ADRs before starting.Done in
fa7ae03. GenericLISTEN/NOTIFYrevocation path (reused unchanged by #53): apiPondAccessNotifieremitspg_notify(pond_access_changed, pondId)on a permission-relevant change (interim: pond soft-delete); collab listens on a dedicated connection and closes the affected pond's open sessions, so clients reconnect and re-acquire a token reflecting current access. Frontend keeps local content visible on a refused token and offers Markdown export / explicit discard.NOTIFYcloses a live session <1s; unrelated ponds untouched).AccessRevokedDialogexports Markdown from the local editor doc; server state stays clean.PondAccessNotifier.notifyAccessChangedis the single seam #53 calls on grant changes.Pipeline green (CI+CD, Test+Int); live on Test: collab
access.listen.ready. Realro-downgrade is testable once #53 lands (see==modify interim).