[Feature] Add session and device listing with selective revocation #16

Closed
opened 2026-07-30 12:10:15 +02:00 by zemion · 1 comment
Owner

Moved from https://git.add-ideas.de/GovOPlaN/govoplan-core/issues/6 because session lifecycle and access administration are owned by Access.

Outcome

Authenticated users can inspect their active sessions/devices and revoke individual or all other sessions. Authorized administrators can inspect and revoke sessions within their governed scope without exposing session credentials.

Acceptance criteria

  • List active sessions with stable ID, current-session marker, creation/last-seen/expiry times, bounded device/client metadata, and revocation state.
  • Never return raw session tokens, token hashes, cookies, or unrelated network identifiers.
  • Revoke one session idempotently; support an explicit “revoke all other sessions” operation without revoking the command’s current session.
  • Re-authorization and central permission checks protect administrative revocation.
  • Revocation takes effect on the next authenticated request and emits a privacy-minimal audit event.
  • Access WebUI uses shared Core controls and clearly distinguishes the current session.
  • Tests cover self/admin authorization, current-session protection, expiry, repeated revocation, redaction, and optional module combinations.
<!-- moved-from-core-6 --> Moved from [https://git.add-ideas.de/GovOPlaN/govoplan-core/issues/6](https://git.add-ideas.de/GovOPlaN/govoplan-core/issues/6) because session lifecycle and access administration are owned by Access. ## Outcome Authenticated users can inspect their active sessions/devices and revoke individual or all other sessions. Authorized administrators can inspect and revoke sessions within their governed scope without exposing session credentials. ## Acceptance criteria - List active sessions with stable ID, current-session marker, creation/last-seen/expiry times, bounded device/client metadata, and revocation state. - Never return raw session tokens, token hashes, cookies, or unrelated network identifiers. - Revoke one session idempotently; support an explicit “revoke all other sessions” operation without revoking the command’s current session. - Re-authorization and central permission checks protect administrative revocation. - Revocation takes effect on the next authenticated request and emits a privacy-minimal audit event. - Access WebUI uses shared Core controls and clearly distinguishes the current session. - Tests cover self/admin authorization, current-session protection, expiry, repeated revocation, redaction, and optional module combinations.
Author
Owner

Implemented and pushed in govoplan-access commit 2be1dbc (feat(access): add governed session management).\n\nAcceptance evidence:\n- Added account-scoped active-session listing with stable IDs, current-session marker, creation/last-seen/expiry timestamps, bounded client labels, and explicit lifecycle state.\n- Response schemas exclude tokens, hashes, cookies, IP addresses, and unrelated request metadata.\n- Added idempotent single-session revocation and revoke-all-other-sessions while protecting the command session; revoked sessions fail the next authentication check and the principal cache is invalidated.\n- Added tenant-scoped administrator listing/revocation with central permission dependencies and interactive current-password reauthorization. Audit records contain stable actor/target/count facts only.\n- Added Settings > Sessions and devices plus a tenant-user session inspector using shared Core DataGrid, PageActionBar, TableActionGroup, Dialog, PasswordField, StatusBadge, and confirmation controls.\n- Added manifest permission/default authenticated role, view surface, bilingual DocumentationTopic, and docs/SESSION_MANAGEMENT.md.\n- Tests cover account/tenant scoping, current-session protection, expiry filtering, repeat revocation, next-request enforcement, serialization redaction, and administrator reauthorization.\n\nVerification passed: Access Ruff and 69-test suite; Access interface-pattern checks; manifest-shape and static contract checks; strict endpoint inventory; access-only production build/bundle budget; complete tools/checks/check-focused.sh including all backend/migration suites, 57 WebUI permutations, full-product build, seven Playwright conformance tests, and module-specific frontend checks.

Implemented and pushed in `govoplan-access` commit `2be1dbc` (`feat(access): add governed session management`).\n\nAcceptance evidence:\n- Added account-scoped active-session listing with stable IDs, current-session marker, creation/last-seen/expiry timestamps, bounded client labels, and explicit lifecycle state.\n- Response schemas exclude tokens, hashes, cookies, IP addresses, and unrelated request metadata.\n- Added idempotent single-session revocation and revoke-all-other-sessions while protecting the command session; revoked sessions fail the next authentication check and the principal cache is invalidated.\n- Added tenant-scoped administrator listing/revocation with central permission dependencies and interactive current-password reauthorization. Audit records contain stable actor/target/count facts only.\n- Added Settings > Sessions and devices plus a tenant-user session inspector using shared Core DataGrid, PageActionBar, TableActionGroup, Dialog, PasswordField, StatusBadge, and confirmation controls.\n- Added manifest permission/default authenticated role, view surface, bilingual DocumentationTopic, and `docs/SESSION_MANAGEMENT.md`.\n- Tests cover account/tenant scoping, current-session protection, expiry filtering, repeat revocation, next-request enforcement, serialization redaction, and administrator reauthorization.\n\nVerification passed: Access Ruff and 69-test suite; Access interface-pattern checks; manifest-shape and static contract checks; strict endpoint inventory; access-only production build/bundle budget; complete `tools/checks/check-focused.sh` including all backend/migration suites, 57 WebUI permutations, full-product build, seven Playwright conformance tests, and module-specific frontend checks.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan-access#16