Profile Switching
Feature Detail
Description
Profile Switching allows users who belong to multiple local associations or hold multiple roles to switch between organizational contexts without logging out. When an Org Admin acts as a Coordinator in the mobile app, this feature enables fluid role transitions. The switch updates the active session context, refreshes organization-specific data, and adapts the home screen and available modules to reflect the selected profile, preventing double-reporting and ensuring correct activity attribution across organizations.
Sources & reasoning
Profile Switching is v1.0 per the blueprint [v1.0] marker, aligning with Fase 2 of the roadmap. The need is driven by NHF's multi-association requirement (line 106) requiring unambiguous affiliation to prevent double-reporting, and the platform-wide design decision that Org Admins are surfaced as Coordinators on mobile (line 257), both demanding a context-switch mechanism that does not require re-authentication.
-
docs/source/likeperson.md · line 106**HÄndtering av medlemmer i flere lokallag (opptil 5):** Avklare tilhÞrighet og hindre dobbeltrapportering.
-
docs/source/likeperson.md · line 257**On mobile, an Org Admin is surfaced as a Coordinator** - they use the same mobile experience as coordinators without a separate UI path.
Analysis
NHF explicitly requires handling members in multiple local associations (up to 5) with clear affiliation tracking and prevention of double-reporting. Profile Switching addresses this by letting users select their active organizational context before logging activities. For Org Admins surfaced as Coordinators on mobile, seamless role context switching prevents activities being attributed to the wrong organizational unit. This reduces administrative corrections, improves data integrity across all reporting workflows, and ensures Bufdir export figures reflect accurate per-organization activity counts.
Profile Switching is implemented as a ProfileSwitchWidget bottom sheet that retrieves available organizational memberships via ProfileSwitchService querying the UserOrganizationMemberships table. On selection the service issues a context-switch API call returning a session token scoped to the selected organization, replacing the current token in SecureStorage. The Riverpod provider tree is selectively invalidated to reload module toggles and organization labels without a full app restart. The UI blocks switching while unsynced mutations are pending, prompting the user to sync first to prevent cross-organization data leakage and attribution errors.
Quality Assurance
Coordinator (primary) · Peer Mentor (same flow)Coordinator
Quick UAT
- Logg inn i mobilappen som Koordinator med minst to organisasjonstilknytninger.
- PÄ hjemskjermen, trykk pÄ profilbyttewidgeten som viser gjeldende organisasjonsnavn.
- Bekreft at en liste over tilgjengelige profiler og organisasjoner vises.
- Velg en annen organisasjon fra listen.
- Bekreft at toppfeltet oppdateres med den valgte organisasjonens navn og at hjemskjermen lastes pÄ nytt.
- Naviger til Aktiviteter og bekreft at kun aktiviteter tilknyttet den valgte organisasjonen vises.
Quick UAT â Accessibility
-
Logg inn i mobilappen som Koordinator med minst to organisasjonstilknytninger.
- Screen reader Innloggingsskjerm annonseres med overskrift; tab-rekkefĂžlge: e-postfelt â passordfelt â Logg inn-knapp.
- Keyboard / focus Alle felt nÄs med Tab; Enter sender skjema.
-
PÄ hjemskjermen, trykk pÄ profilbyttewidgeten som viser gjeldende organisasjonsnavn.
- Screen reader TalkBack leser opp 'Profilbytteknapp, [organisasjonsnavn], dobbelttrykk for Ä Äpne'.
- Focus visibility Synlig fokusring pÄ profilbyttewidgeten; semantisk label inkluderer gjeldende organisasjonsnavn.
- Touch target â„ 24Ă24 CSS px
-
Bekreft at en liste over tilgjengelige profiler og organisasjoner vises.
- Screen reader Listebeholder annonseres med antall elementer, f.eks. 'Profilliste, 3 elementer'.
- Keyboard / focus Piltaster navigerer mellom listeelementer; Enter velger.
- Zoom Liste forblir lesbar og scrollbar ved 200% zoom uten horisontalt overflyt.
-
Velg en annen organisasjon fra listen.
- Screen reader Valgt element bekreftes: '[Organisasjonsnavn], valgt'.
- Touch target â„ 24Ă24 CSS px per listeelement.
- Contrast 4.5:1 for organisasjonsnavn; aktiv/inaktiv tilstand kommuniseres ikke utelukkende via farge.
-
Bekreft at toppfeltet oppdateres med den valgte organisasjonens navn og at hjemskjermen lastes pÄ nytt.
- Focus visibility Fokus flyttes til hjemskjermens overskrift etter bytte.
- Live region 'Profil byttet til [Organisasjonsnavn]. Hjemskjerm oppdatert.'
-
Naviger til Aktiviteter og bekreft at kun aktiviteter tilknyttet den valgte organisasjonen vises.
- Screen reader Aktivitetsliste annonseres med riktig organisasjonskontekst i overskriften.
- Keyboard / focus Aktiviteter-fane nÄs via Tab og aktiveres med Enter.
Role Boundaries
2 role(s) must NOT access this feature-
Global Administrator
Mobilappen viser en ingen-tilgang-skjerm for Global Administrator og omdirigerer til admin-portalen; profilbyttewidgeten vises ikke.
-
Prospective Organization Representative
Ingen mobil brukerkonto tildeles; innlogging i mobilappen avvises og profilbyttefunksjonen er utilgjengelig.
Expected End State
Aktiv sesjonskontekst er oppdatert til valgt organisasjon. Toppfelt, hjemskjerm og aktivitetsliste reflekterer ny organisasjonstilhĂžrighet. Alle fremtidige aktivitetsregistreringer krediteres den valgte organisasjonen.
Components (20)
Shared Components
These components are reused across multiple features
User Stories
No user stories have been generated for this feature yet.