Role-Based Access Control
Feature Detail
Description
Role-Based Access Control governs what each authenticated user can see and do within Meander, enforcing four defined roles: Peer Mentor, Coordinator, Organization Administrator, and Global Administrator. The feature ensures each role accesses only the navigation, screens, and API endpoints appropriate to their responsibilities, and that cross-organization data isolation is strictly enforced. Role evaluation happens server-side on every request, with the client assembling its navigation and home surface from the role context returned at session bootstrap, including the rule that Organization Admins are surfaced as Coordinators on mobile.
Sources & reasoning
Lines 256-259 define all four roles with explicit access boundaries, and line 322 names mobile role profiles as an MVP deliverable. RBAC is listed in the Fase 1 MVP scope and is a structural prerequisite for module toggles, multi-tenancy, and audit logging, making it critical and must_have at MVP.
-
docs/source/likeperson.md · line 256-259Peer Mentor (Likeperson): Creates and tracks activities and follow-ups. Logs in to the Mobile App only.
-
docs/source/likeperson.md · line 3222 mobilrolle-profiler: Peer Mentor, Coordinator (Organization Admins logger på som Coordinator i app-konteksten)
Analysis
Without RBAC the platform cannot safely serve multiple organizations or multiple role types from a single codebase - a peer mentor could access coordinator functions, or one organization's admin could view another's data. Strict role enforcement is a regulatory requirement given that the platform handles sensitive personal information under GDPR, and the audit log must record which role performed each action. The module toggle system depends on RBAC: disabled modules must be enforced server-side, and the role context determines which module set is visible to each user, making RBAC a structural prerequisite for both product security and the multi-tenant architecture.
RBAC is the consuming product's responsibility, explicitly excluded from the Authentication Module's scope. Role and organization membership claims are attached to the JWT as a generic claims bag by the Auth Module; the Next.js API layer unpacks and enforces them per endpoint. Flutter reads the role from the session bootstrap response and mounts the appropriate navigation and home widgets via the module registry. Organization Admin must emit a mobile-role field of Coordinator to avoid a separate UI path on mobile. Global Admin access to organization data is gated by a time-bounded support-access grant stored in organization settings and validated on every request, with every session logged in the org's audit trail.
Quality Assurance
Coordinator (primary) · Organization Administrator (surfaced as Coordinator on mobile) · Peer Mentor (subject) · Global Administrator (blocked on mobile)Coordinator
Quick UAT
- Logg inn i mobilappen som Koordinator med e-post og passord. Bekreft at hjemmeskjermen viser koordinatorvarianten med teamoversikt.
- Ă…pne bunnnavigasjonen og bekreft at alle fem faner er synlige: Hjem, Kontakter, Legg til, Arbeid, Varsler.
- Naviger til Arbeid-fanen og bekreft at alternativene for proxy-registrering og bulkregistrering er tilgjengelige.
- Ă…pne Statistikk og bekreft at teamrapporter vises i tillegg til personlig statistikk.
- Logg ut og bekreft at sesjonen avsluttes og innloggingsskjermen vises.
Quick UAT — Accessibility
-
Logg inn i mobilappen som Koordinator med e-post og passord. Bekreft at hjemmeskjermen viser koordinatorvarianten med teamoversikt.
- Screen reader Etter vellykket innlogging annonseres sidetittel 'Hjem – Koordinator'; ingen admin-spesifikke widgeter er til stede i lesetrekkefølgen.
- Keyboard / focus Tab-rekkefølge på innloggingsskjermen: e-postfelt → passordfelt → Logg inn-knapp.
- Focus visibility Synlig fokusring på alle inndatafelter og Logg inn-knapp; fokus flyttes til første element på hjemmeskjermen etter innlogging.
-
Ă…pne bunnnavigasjonen og bekreft at alle fem faner er synlige: Hjem, Kontakter, Legg til, Arbeid, Varsler.
- Screen reader Hver fane annonseres med navn og tilstand, f.eks. 'Hjem, fane, valgt, 1 av 5'.
- Touch target Alle faner er minimum 44Ă—44 CSS px.
- Contrast Aktiv fane skilles fra inaktive med både farge og understrek eller ikon – ikke farge alene.
-
Naviger til Arbeid-fanen og bekreft at alternativene for proxy-registrering og bulkregistrering er tilgjengelige.
- Screen reader Handlingsknapper annonseres med beskrivende etiketter: 'Registrer pĂĄ vegne av, knapp' og 'Bulkregistrering, knapp'.
- Keyboard / focus Tab-rekkefølge i Arbeid-fanen dekker begge handlingsknapper i logisk rekkefølge.
- Focus visibility Synlig fokusring pĂĄ begge handlingsknapper.
-
Ă…pne Statistikk og bekreft at teamrapporter vises i tillegg til personlig statistikk.
- Screen reader Overskriftene 'Min statistikk' og 'Teamrapporter' annonseres som nivĂĄ 2-overskrifter.
- Zoom Statistikkvisning er lesbar og ikke avskĂĄret ved 200 % zoom.
-
Logg ut og bekreft at sesjonen avsluttes og innloggingsskjermen vises.
- Screen reader Etter utlogging annonseres 'Innlogging' som ny sidetittel; alle sesjonsdata er fjernet fra lesertrekkefølgen.
- Focus visibility Fokus flyttes til e-postfeltet pĂĄ innloggingsskjermen.
Organization Administrator
Quick UAT
- Logg inn i mobilappen som Organisasjonsadministrator. Bekreft at hjemmeskjermen viser koordinatorvarianten – ingen separat admin-overflate.
- Ă…pne bunnnavigasjonen og bekreft at fanene er identiske med koordinatorrollen: Hjem, Kontakter, Legg til, Arbeid, Varsler.
- Bekreft at ingen admin-portalfunksjoner er tilgjengelige i mobilappen (ingen brukerstyring, Bufdir-eksport eller organisasjonsinnstillinger).
- Ă…pne Admin Web Portal i nettleser med samme bruker og bekreft at full admin-overflate med brukerstyring og rapportering er tilgjengelig.
Quick UAT — Accessibility
-
Logg inn i mobilappen som Organisasjonsadministrator. Bekreft at hjemmeskjermen viser koordinatorvarianten – ingen separat admin-overflate.
- Screen reader Sidetittel etter innlogging annonseres som koordinator-hjemside; ingen admin-panel-elementer er i lesetrekkefølgen.
- Focus visibility Fokus plasseres på første interaktive element på koordinator-hjemmeskjermen.
-
Ă…pne bunnnavigasjonen og bekreft at fanene er identiske med koordinatorrollen: Hjem, Kontakter, Legg til, Arbeid, Varsler.
- Screen reader Faner annonseres med de samme etikettene som for Koordinator-rollen; ingen ekstra faner er tilstede.
- Touch target Alle faner er minimum 44Ă—44 CSS px.
-
Bekreft at ingen admin-portalfunksjoner er tilgjengelige i mobilappen (ingen brukerstyring, Bufdir-eksport eller organisasjonsinnstillinger).
- Screen reader Ingen admin-relaterte menyelementer eller knapper er i lesetrekkefølgen for skjermleser.
- Focus visibility Tastaturfokus kan ikke nĂĄ skjulte eller nedtonte admin-elementer.
-
Ă…pne Admin Web Portal i nettleser med samme bruker og bekreft at full admin-overflate med brukerstyring og rapportering er tilgjengelig.
- Screen reader Admin-portalens sidetittel 'Dashboard – Organisasjonsadministrator' annonseres ved innlasting.
- Keyboard / focus Tab-rekkefølge i Admin Web Portal starter på primærnavigasjonen i sidepanelet.
Peer Mentor
Quick UAT
- Logg inn i mobilappen som Likeperson. Bekreft at hjemmeskjermen viser likepersonsvariant uten teamoversikt eller koordinatorfunksjoner.
- Ă…pne Arbeid-fanen og bekreft at proxy-registrering og bulkregistrering ikke er tilgjengelige.
- Åpne Statistikk og bekreft at kun personlig statistikk vises – ingen teamrapporter.
Quick UAT — Accessibility
-
Logg inn i mobilappen som Likeperson. Bekreft at hjemmeskjermen viser likepersonsvariant uten teamoversikt eller koordinatorfunksjoner.
- Screen reader Sidetittel annonseres som 'Hjem'; ingen koordinator-spesifikke widgeter er i lesetrekkefølgen.
- Focus visibility Fokus plasseres på første element relevant for likepersonsrollen.
-
Ă…pne Arbeid-fanen og bekreft at proxy-registrering og bulkregistrering ikke er tilgjengelige.
- Screen reader Kun tillatte handlinger for Likeperson annonseres; ingen skjulte elementer er tilgjengelige via skjermlesernavigasjon.
- Focus visibility Tab-navigasjon i Arbeid-fanen kan ikke nĂĄ koordinator-spesifikke handlingsknapper.
-
Åpne Statistikk og bekreft at kun personlig statistikk vises – ingen teamrapporter.
- Screen reader Overskriften 'Min statistikk' annonseres; 'Teamrapporter' er ikke til stede i DOM eller lesetrekkefølgen.
- Zoom Statistikkvisning er lesbar og ikke avskĂĄret ved 200 % zoom.
Global Administrator
Quick UAT
- Logg inn i mobilappen som Global Administrator med gyldige legitimasjonskoder.
- Bekreft at en 'ingen tilgang'-skjerm vises med melding om ĂĄ bruke Admin Web Portal i stedet.
- Bekreft at ingen navigasjonsfaner, aktivitetsdata eller organisasjonsdata er synlige eller tilgjengelige.
Quick UAT — Accessibility
-
Logg inn i mobilappen som Global Administrator med gyldige legitimasjonskoder.
- Screen reader Innloggingsskjema er fullt tilgjengelig for skjermleser; Tab-rekkefølge: e-postfelt → passordfelt → Logg inn-knapp.
- Keyboard / focus Alle innloggingselementer er tilgjengelige via tastatur.
- Focus visibility Etter innlogging flyttes fokus automatisk til ingen-tilgang-meldingen.
-
Bekreft at en 'ingen tilgang'-skjerm vises med melding om ĂĄ bruke Admin Web Portal i stedet.
- Screen reader Sidetittel 'Ingen tilgang' og forklaringstekst annonseres automatisk; lenke til Admin Web Portal annonseres som klikkbar lenke.
- Live region 'Ingen tilgang. Bruk Admin Web Portal for administrasjon.' annonseres som polite live region.
- Contrast Forklaringstekst oppfyller 4,5:1 kontrastforhold mot bakgrunn.
-
Bekreft at ingen navigasjonsfaner, aktivitetsdata eller organisasjonsdata er synlige eller tilgjengelige.
- Screen reader Ingen navigasjonselementer utover ingen-tilgang-skjermen er tilgjengelige via skjermlesernavigasjon.
- Focus visibility Tab-navigasjon forblir inne i ingen-tilgang-skjermen; ingen skjulte elementer er fokuserbare.
Role Boundaries
1 role(s) must NOT access this feature-
Prospective Organization Representative
Har ingen brukerkonto i plattformen; innloggingsforsøk avvises med 401. Mobilappen og Admin Web Portal er utilgjengelige.
Expected End State
-
Coordinator
Koordinator ser utvidet navigasjon med proxy-registrering, bulkregistrering og teamstatistikk. Alle API-forespørsler er bundet til koordinatorens organisasjonsscope og krever ikke admin-tilgang.
-
Organization Administrator
Organisasjonsadministrator ser koordinatoroverflate i mobilappen uten admin-spesifikke funksjoner. Full admin-tilgang er kun tilgjengelig via Admin Web Portal.
-
Peer Mentor
Likeperson ser kun egne aktiviteter, kontakter og personlig statistikk. Koordinator- og admin-overflater er ikke montert i navigasjonen.
-
Global Administrator
Global administrator presenteres med ingen-tilgang-skjerm i mobilappen og blir henvist til Admin Web Portal. Ingen organisasjonsdata er eksponert.
Components (20)
Shared Components
These components are reused across multiple features
User Stories
No user stories have been generated for this feature yet.