medium complexity extracted Security & Audit Confidence: 100%
5
Components
18
Shared
0
User Stories
Yes
Analyzed

Description

Session Management enables Organization Administrators to view and forcibly terminate active user sessions within their organization. Administrators can inspect all authenticated sessions including device type, login timestamp, last activity time, and IP address. Forced revocation is available per individual session or for all sessions of a given user - essential for responding to compromised accounts, offboarding departing staff, or enforcing immediate access termination. The page integrates with the Authentication Module's admin-initiated revocation API and writes every revocation event to the Audit Log for traceability.

Sources & reasoning

Line 208 lists admin-initiated session revocation as an explicit core capability of the Authentication Module. Line 276 describes the session lifecycle - sessions end cleanly when the refresh chain is broken - which requires an admin surface to trigger that break on demand. Admin-security is always-on for the Admin Web Portal MVP, confirming this feature ships at launch.

Analysis

Business Value

Immediate session revocation reduces the window of unauthorized access from hours (token lifetime) to seconds (forced revocation). When a peer mentor's device is lost or stolen, or a coordinator leaves the organization, administrators need the ability to terminate all active sessions without waiting for token expiry. This is a baseline security control expected by regulated organizations handling health and personal data. The capability also enables audit compliance by ensuring revocation events are recorded with a clear timeline that can be referenced during incident investigation or data protection authority inquiries. Without admin-initiated revocation, the platform cannot meet the session control expectations of health-adjacent nonprofit organizations.

Implementation Notes

Session Management queries the auth_sessions and refresh_tokens tables managed by the Authentication Module via SessionAdminService. Tenant scoping is enforced - an Org Admin queries only sessions belonging to their organization's users; a Global Admin cannot view another org's sessions unless a support access grant is active. Forced revocation marks the session and all associated refresh tokens as revoked in a single atomic transaction; the next API call from the mobile client with a revoked token returns 401 and triggers local credential clearance via the auto-refresh error handler. The Next.js page uses server actions for revocation to prevent CSRF. Every revocation event is written to audit_log_entries via AuditLogService within the same transaction.

Quality Assurance

Organization Administrator (primary) · Global Administrator (primary, support-access-gated)
2
Scenarios
10
UAT Steps
28
A11y Annotations
3
Role Boundaries
Organization Administrator

Organization Administrator

Quick UAT

  1. Logg inn i Admin-portalen som Organisasjonsadministrator. Naviger til Sikkerhet → Øktadministrasjon.
  2. Gjennomgå listen over aktive økter og bekreft at enhettype, påloggingstidspunkt, siste aktivitet og IP-adresse vises for hver rad.
  3. Velg én enkelt økt og trykk Avslutt økt. Bekreft handlingen i bekreftelsesdialogen.
  4. Bekreft at den avsluttede økten forsvinner umiddelbart fra listen.
  5. Finn en bruker med flere aktive økter og trykk Avslutt alle økter for denne brukeren. Bekreft handlingen.
  6. Naviger til Revisjonslogg og bekreft at begge revokasjonshandlingene er logget med administratorens identitet og tidsstempel.

Quick UAT — Accessibility

  1. Logg inn i Admin-portalen som Organisasjonsadministrator. Naviger til Sikkerhet → Øktadministrasjon.
    • Screen reader Sideoverskrift 'Øktadministrasjon' annonseres; navigasjonsmeny leses som landmerke; tab-rekkefølge: sidehode → sidebar → innholdsområde.
    • Keyboard / focus Sidebar-lenken 'Øktadministrasjon' nås med Tab og aktiveres med Enter.
  2. Gjennomgå listen over aktive økter og bekreft at enhettype, påloggingstidspunkt, siste aktivitet og IP-adresse vises for hver rad.
    • Screen reader Tabellkolonner annonseres med overskrifter; hver rad leses som 'Rad N av M, [enhet], [tidspunkt], [IP]'.
    • Keyboard / focus Tabellnavigasjon med piltaster; kolonneoverskrifter er tilgjengelige.
    • Zoom Tabellen skaleres uten horisontal scrolling ved 200 % zoom; alle kolonner forblir lesbare.
    • Contrast IP-adresser og tidsstempler møter 4.5:1 mot bakgrunn; statusikoner bruker ikke farge alene.
  3. Velg én enkelt økt og trykk Avslutt økt. Bekreft handlingen i bekreftelsesdialogen.
    • Screen reader Bekreftelsesdialog annonseres som modal; fokus flyttes automatisk inn i dialogen; knapper 'Bekreft' og 'Avbryt' leses.
    • Keyboard / focus Dialog nås uten mus; Tab sykler mellom 'Bekreft' og 'Avbryt'; Escape lukker uten handling.
    • Focus visibility Synlig fokusring på Avslutt-knapp og dialogknapper; fokus returnerer til tabellraden etter lukking.
    • Touch target ≥ 24×24 CSS px for Avslutt-knapp og dialogknapper.
  4. Bekreft at den avsluttede økten forsvinner umiddelbart fra listen.
    • Screen reader Fjerning fra tabell annonseres; radantall oppdateres.
    • Live region 'Økt avsluttet. Én økt fjernet fra listen.' annonseres via polite live-region.
  5. Finn en bruker med flere aktive økter og trykk Avslutt alle økter for denne brukeren. Bekreft handlingen.
    • Screen reader Bekreftelsesdialog for bulk-avslutning annonseres med antall berørte økter; fokus flyttes inn i dialogen.
    • Keyboard / focus Bulk-avslutningsknapp nås med Tab fra brukernavn-raden; Enter åpner dialog.
    • Focus visibility Synlig fokusring på Avslutt alle-knapp.
    • Touch target ≥ 24×24 CSS px.
  6. Naviger til Revisjonslogg og bekreft at begge revokasjonshandlingene er logget med administratorens identitet og tidsstempel.
    • Screen reader Logg-tabell leses med kolonneoverskrifter; revokasjonsrader identifiseres ved handlingstype 'Økt avsluttet'.
    • Keyboard / focus Revisjonslogg-lenke i sidebar nås med Tab og aktiveres med Enter.
Global Administrator

Global Administrator

Quick UAT

  1. Logg inn som Global Administrator. Bekreft at en aktiv støttetilgangstillatelse fra målorganisasjonen er på plass (vises i organisasjonsoversikten).
  2. Naviger til målorganisasjonens kontekst og åpne Sikkerhet → Øktadministrasjon.
  3. Bekreft at kun aktive økter innenfor den tildelte organisasjonen vises — ingen andre organisasjoners data er synlig.
  4. Avslutt én økt for en valgt bruker og bekreft at handlingen logges i organisasjonens revisjonslogg med Global Administrators identitet.

Quick UAT — Accessibility

  1. Logg inn som Global Administrator. Bekreft at en aktiv støttetilgangstillatelse fra målorganisasjonen er på plass (vises i organisasjonsoversikten).
    • Screen reader Støttetilgangsstatus annonseres som statusmelding ved innlasting; fokus plasseres på første interaktive element.
    • Keyboard / focus Organisasjonsoversikten nås med Tab; støttetilgangsindikator er lesbar uten mus.
  2. Naviger til målorganisasjonens kontekst og åpne Sikkerhet → Øktadministrasjon.
    • Screen reader Organisasjonskontekst bekreftes i sideoverskriften; 'Øktadministrasjon' annonseres ved navigasjon.
    • Keyboard / focus Kontekstbytte og sidebar-navigasjon tilgjengelig med tastatur.
  3. Bekreft at kun aktive økter innenfor den tildelte organisasjonen vises — ingen andre organisasjoners data er synlig.
    • Screen reader Tabellinnhold leses; organisasjonsnavn bekreftes i tabelloverskrift eller sidetittel.
    • Contrast Organisasjonsindikator ikke formidlet kun med farge; tekstlabel inkludert.
  4. Avslutt én økt for en valgt bruker og bekreft at handlingen logges i organisasjonens revisjonslogg med Global Administrators identitet.
    • Screen reader Bekreftelsesdialog annonseres; fokus flyttes inn; live-region bekrefter avslutning.
    • Focus visibility Fokus returnerer til tabellraden etter at dialogen lukkes.
    • Touch target ≥ 24×24 CSS px for alle handlingsknapper.
    • Live region 'Økt avsluttet. Hendelse registrert i revisjonslogg.' annonseres via polite live-region.

Role Boundaries

3 role(s) must NOT access this feature
  • Peer Mentor

    Screen is not present in mobile app navigation; direct API call to session-admin endpoints returns 403 Forbidden.

  • Coordinator

    Screen is not present in mobile app navigation; Coordinators do not have Admin Web Portal login access; direct API call returns 403 Forbidden.

  • Prospective Organization Representative

    No authenticated session for the Admin Web Portal; all admin endpoints return 401 Unauthorized.

Expected End State

  • Organization Administrator

    All targeted sessions are immediately invalidated; affected users lose access within seconds of revocation. Every revocation action is recorded in the Audit Log with the administrator's identity, timestamp, and the revoked session ID.

  • Global Administrator

    The targeted session within the support-access-granted organization is invalidated and logged in that organization's Audit Log under the Global Administrator's identity. Access is strictly scoped to the granted organization; no cross-tenant data is exposed.

User Stories

No user stories have been generated for this feature yet.