Email & Password Login
Feature Detail
Description
Email and password authentication is the foundational login mechanism for all Meander users at MVP launch, enabling peer mentors, coordinators, and organization administrators to access the platform using familiar credentials. The system issues short-lived JWT access tokens paired with rotating refresh tokens to maintain persistent sessions without requiring repeated logins. Session revocation is supported by users and administrators alike, with tokens stored in the platform secure store on mobile and HTTP-only SameSite cookies on the admin portal, satisfying the Authentication Module's portability requirement.
Sources & reasoning
Line 42 explicitly designates email/password as the MVP login method, with BankID/Vipps deferred to Fase 2. Line 319 repeats this in the Fase 1 MVP scope list. This is the entry-point authentication mechanism that unblocks all other features at launch, mapping to MVP by ordinal phase position.
-
docs/source/likeperson.md · line 42**MVP leveres med e-post/passord-innlogging; BankID og Vipps ruller ut i Fase 2**
-
docs/source/likeperson.md · line 319E-post/passord innlogging (BankID/Vipps i fase 2)
Analysis
Email and password login is the prerequisite for every other platform capability - without it no user can access any feature. Delivering this at MVP unblocks all four organizations from piloting the platform immediately while BankID and Vipps integrations are completed in Phase 2. The rotating refresh token model balances security with usability, ensuring sessions survive app restarts without exposing long-lived credentials. Multi-tenant isolation is preserved since credentials are scoped per organization, and admin-initiated revocation provides the security controls required for a platform handling sensitive personal data under GDPR and Bufdir reporting obligations.
Built on the Authentication Module (Product 3) with strict boundary separation: the module owns only identity and session state, never authorization logic or product data. JWT access tokens expire in 15 minutes; rotating refresh tokens extend sessions silently, matching the Flutter ApiHttpClient auto-refresh on 401 behavior described in the source. The module exposes a stable contract (sign-in, sign-out, refresh, identity lookup) ensuring future extractability into a standalone service without API changes for consumers. Password storage uses bcrypt with an appropriate cost factor; all endpoints require HTTPS. Mobile tokens go into flutter_secure_storage; the admin portal uses HTTP-only cookies.
Quality Assurance
Peer Mentor (primary, mobile) · Coordinator (same flow, mobile) · Organization Administrator (primary, admin portal) · Global Administrator (primary, admin portal — no org context)Peer Mentor
Quick UAT
- Åpne Meander-appen. Bekreft at innloggingsskjermen vises med feltene «E-post» og «Passord».
- Skriv inn feil passord og trykk «Logg inn». Bekreft at en feilmelding vises uten å avsløre om e-postadressen finnes i systemet.
- Skriv inn riktig e-postadresse og passord og trykk «Logg inn». Bekreft at hjemskjermen for Likeperson lastes.
- Lukk appen helt og ĂĄpne den igjen. Bekreft at du er fortsatt innlogget uten ĂĄ mĂĄtte oppgi passord pĂĄ nytt.
- Åpne Innstillinger og trykk «Logg ut». Bekreft at du sendes tilbake til innloggingsskjermen og lokal token er slettet.
Quick UAT — Accessibility
-
Åpne Meander-appen. Bekreft at innloggingsskjermen vises med feltene «E-post» og «Passord».
- Screen reader VoiceOver annonserer skjermtittel «Logg inn» og to inndatafelter med labels «E-post» og «Passord».
- Keyboard / focus Tab-rekkefølge: e-postfelt → passordfelt → Logg inn-knapp → Glemt passord-lenke.
- Focus visibility Synlig fokusring pĂĄ aktivt felt; alle interaktive elementer er tastaturnagivable.
- Touch target Knapper og felt er minimum 24Ă—24 CSS px.
- Contrast 4.5:1 for feltlabels og placeholder-tekst; feltramme er 3:1 mot bakgrunn.
-
Skriv inn feil passord og trykk «Logg inn». Bekreft at en feilmelding vises uten å avsløre om e-postadressen finnes i systemet.
- Screen reader Feilmelding annonseres som live region etter innsending; ikke som alert-dialog som forstyrrer flyt.
- Focus visibility Fokus flyttes til feilmeldingsteksten eller tilbake til passordfelt etter avvist innlogging.
- Live region 'Innlogging mislyktes. Sjekk e-postadresse og passord og prøv igjen.'
- Contrast Feilmeldingstekst har 4.5:1 kontrast; feil indikeres ikke utelukkende via rød farge.
-
Skriv inn riktig e-postadresse og passord og trykk «Logg inn». Bekreft at hjemskjermen for Likeperson lastes.
- Screen reader Ny skjerm annonseres med tittel «Hjem» eller rollespecifikt navn etter vellykket innlogging.
- Keyboard / focus Logg inn-knapp aktiveres med Enter eller Space.
- Live region 'Innlogget. GĂĄr til hjemskjerm.'
- Zoom Innloggingsskjema er fullt brukbart ved 200 % zoom uten horisontal scrolling.
-
Lukk appen helt og ĂĄpne den igjen. Bekreft at du er fortsatt innlogget uten ĂĄ mĂĄtte oppgi passord pĂĄ nytt.
- Screen reader Hjemskjermen annonseres direkte uten at innloggingsskjermen dukker opp.
- Focus visibility Fokus starter på første interaktive element på hjemskjermen.
-
Åpne Innstillinger og trykk «Logg ut». Bekreft at du sendes tilbake til innloggingsskjermen og lokal token er slettet.
- Screen reader «Logg ut»-knapp er merket og annonseres tydelig; innloggingsskjermen annonseres etter utlogging.
- Keyboard / focus Logg ut nĂĄs via Tab i Innstillinger-skjermen og aktiveres med Enter.
- Live region 'Du er logget ut.'
Organization Administrator
Quick UAT
- Åpne Admin-portalen i nettleser. Bekreft at innloggingssiden vises med feltene «E-post» og «Passord».
- Skriv inn feil passord og trykk «Logg inn». Bekreft at en tydelig feilmelding vises uten å røpe om kontoen eksisterer.
- Skriv inn riktig e-postadresse og passord og trykk «Logg inn». Bekreft at Admin-dashbordet med KPI-kort og aktivitetsfeed lastes.
- Oppdater nettleserfanen. Bekreft at du er fortsatt innlogget (HTTP-only SameSite cookie er aktiv).
- Trykk «Logg ut» i toppmenyen. Bekreft at du sendes tilbake til innloggingssiden og sessionen er avsluttet server-side.
Quick UAT — Accessibility
-
Åpne Admin-portalen i nettleser. Bekreft at innloggingssiden vises med feltene «E-post» og «Passord».
- Screen reader JAWS annonserer sidetittel og to skjemafelt med label-attributter «E-post» og «Passord».
- Keyboard / focus Tab-rekkefølge: e-postfelt → passordfelt → Logg inn-knapp.
- Focus visibility Synlig fokusring vises pĂĄ alle interaktive elementer.
- Contrast 4.5:1 for feltlabels; feltramme er 3:1 mot sidens bakgrunn.
-
Skriv inn feil passord og trykk «Logg inn». Bekreft at en tydelig feilmelding vises uten å røpe om kontoen eksisterer.
- Screen reader Feilmelding injiseres i en aria-live-region og leses opp automatisk.
- Live region 'Innlogging mislyktes. Kontroller e-postadresse og passord.'
- Contrast Feilmeldingens tekst har 4.5:1 kontrast; ikke kun rød farge som signal.
-
Skriv inn riktig e-postadresse og passord og trykk «Logg inn». Bekreft at Admin-dashbordet med KPI-kort og aktivitetsfeed lastes.
- Screen reader Sidetittel «Admin-dashbord» annonseres ved sidelasting.
- Keyboard / focus Logg inn-knapp aktiveres med Enter; ingen skjemainnsending krever mus.
- Zoom Innloggingsskjema og dashbord-layout er brukbare ved 200 % zoom.
-
Oppdater nettleserfanen. Bekreft at du er fortsatt innlogget (HTTP-only SameSite cookie er aktiv).
- Screen reader Dashbordet lastes uten innloggingsprompt; sidetittel annonseres korrekt.
- Focus visibility Fokus starter på første interaktive element i hovednav etter refresh.
-
Trykk «Logg ut» i toppmenyen. Bekreft at du sendes tilbake til innloggingssiden og sessionen er avsluttet server-side.
- Screen reader «Logg ut»-knapp har aria-label; innloggingssiden annonseres med tittel etter omdirigering.
- Keyboard / focus «Logg ut» nås med Tab fra toppmenyen og aktiveres med Enter.
- Live region 'Du er logget ut.'
Global Administrator
Quick UAT
- Åpne Admin-portalen i nettleser. Bekreft at innloggingssiden vises med feltene «E-post» og «Passord».
- Skriv inn Global Administrator-legitimasjon og trykk «Logg inn». Bekreft at du landes på sikkerhetsdashbordet uten organisasjonsdata.
- Forsøk å navigere til en organisasjonsspesifikk side (f.eks. brukerliste for en org) uten aktiv støttetilgangsgrant. Bekreft at tilgang nektes med en tydelig melding.
- Trykk «Logg ut». Bekreft at du sendes tilbake til innloggingssiden og sessionen er avsluttet.
Quick UAT — Accessibility
-
Åpne Admin-portalen i nettleser. Bekreft at innloggingssiden vises med feltene «E-post» og «Passord».
- Screen reader JAWS annonserer sidetittel og skjemafelt med korrekte label-attributter.
- Keyboard / focus Tab-rekkefølge: e-postfelt → passordfelt → Logg inn-knapp.
- Contrast 4.5:1 for feltlabels og knappetekst.
-
Skriv inn Global Administrator-legitimasjon og trykk «Logg inn». Bekreft at du landes på sikkerhetsdashbordet uten organisasjonsdata.
- Screen reader Sidetittel «Sikkerhetsdashbord» annonseres etter innlogging; ingen org-spesifikke elementer er til stede.
- Live region 'Innlogget som Global Administrator. Ingen organisasjonsdata tilgjengelig uten støttetilgang.'
-
Forsøk å navigere til en organisasjonsspesifikk side (f.eks. brukerliste for en org) uten aktiv støttetilgangsgrant. Bekreft at tilgang nektes med en tydelig melding.
- Screen reader Tilgangsnektet-melding leses opp som live region; sidetittel reflekterer avvist tilstand.
- Focus visibility Fokus flyttes til feilmeldingselementet ved tilgangsnekt.
- Contrast Tilgangsnektet-melding oppfyller 4.5:1 kontrast.
-
Trykk «Logg ut». Bekreft at du sendes tilbake til innloggingssiden og sessionen er avsluttet.
- Screen reader «Logg ut»-knapp har aria-label; innloggingssiden annonseres med tittel etter omdirigering.
- Keyboard / focus «Logg ut» nås med Tab og aktiveres med Enter.
- Live region 'Du er logget ut.'
Expected End State
-
Peer Mentor
Hjemskjermen for Likeperson er lastet; JWT-token er lagret i enhetens sikre lager (TokenStore); refresh-token er registrert i SessionRepository.
-
Coordinator
Hjemskjermen for Koordinator er lastet; JWT-token er lagret i enhetens sikre lager; refresh-token er registrert i SessionRepository.
-
Organization Administrator
Admin-dashbordet er lastet; HTTP-only SameSite cookie er satt i nettleseren; sessionen er aktiv i SessionRepository.
-
Global Administrator
Sikkerhetsdashbordet er lastet uten organisasjonsdata; HTTP-only SameSite cookie er satt; sessionen er aktiv uten org-kontekst.
Components (22)
Shared Components
These components are reused across multiple features
User Stories
No user stories have been generated for this feature yet.