Biometric Session Authentication
Feature Detail
Description
After the initial login via email/password or BankID/Vipps, users can authenticate subsequent sessions using device biometrics — Face ID on iPhone or fingerprint on supported devices. This reduces friction for frequent users such as peer mentors logging multiple activities per week. Biometric auth is a local device-level gate; the underlying Supabase session token is refreshed upon successful biometric verification. If biometrics fail or are unavailable, fallback to credential login is required.
Analysis
Significantly reduces login friction for daily or weekly users, supporting the core design principle of minimal cognitive load and fewest possible steps to complete a registration.
Use Flutter local_auth package. Store encrypted session token in flutter_secure_storage. Biometric prompt shown on app resume if session is still valid. Fallback path to email/password login must always be accessible.
Components (202)
Shared Components
These components are reused across multiple features
User Interface (59)
Service Layer (52)
Data Layer (33)
Infrastructure (54)
User Stories (18)
As a As a Peer Mentor (Likeperson)
I want to be asked to re-authenticate with biometrics when I access sensitive operations like viewing encrypted contact details or submitting expense claims
So that the app protects sensitive data while still allowing low-friction access to routine registration tasks, without requiring me to log in and out repeatedly
- Given I am in an active session and navigate to a screen that displays encrypted personal data, When the screen loads, Then a biometric prompt overlay is displayed before the sensitive content is revealed
- Given the biometric step-up prompt is shown, When I authenticate successfully, Then the sensitive content is decrypted and displayed immediately
- Given the biometric step-up prompt is shown, When I cancel or fail biometric authentication, Then the sensitive content remains hidden and I am offered a password fallback or navigation back
- +3 more
As a As a Peer Mentor (Likeperson)
I want to be able to authenticate with biometrics and use the app even when I have no internet connection
So that I can register activities immediately after a visit even in areas with poor connectivity, and trust that my data will sync when I am back online
- Given I am authenticated and then lose network connectivity, When I try to register an activity, Then the registration flow works normally and data is queued for sync
- Given I am offline and the app is relaunched, When I authenticate with biometrics, Then the local biometric check succeeds and I can access the app using cached data
- Given I am offline after biometric authentication, When I navigate to a screen requiring live data, Then I see a clear non-alarming offline indicator and can view cached data where available
- +3 more
As a As a Coordinator
I want to be asked to re-authenticate with biometrics when I access sensitive operations like viewing encrypted contact details or submitting expense claims
So that the app protects sensitive data while still allowing low-friction access to routine registration tasks, without requiring me to log in and out repeatedly
- Given I am in an active session and navigate to a screen that displays encrypted personal data, When the screen loads, Then a biometric prompt overlay is displayed before the sensitive content is revealed
- Given the biometric step-up prompt is shown, When I authenticate successfully, Then the sensitive content is decrypted and displayed immediately
- Given the biometric step-up prompt is shown, When I cancel or fail biometric authentication, Then the sensitive content remains hidden and I am offered a password fallback or navigation back
- +3 more
As a As a Coordinator
I want to be able to authenticate with biometrics and use the app even when I have no internet connection
So that I can register activities immediately after a visit even in areas with poor connectivity, and trust that my data will sync when I am back online
- Given I am authenticated and then lose network connectivity, When I try to register an activity, Then the registration flow works normally and data is queued for sync
- Given I am offline and the app is relaunched, When I authenticate with biometrics, Then the local biometric check succeeds and I can access the app using cached data
- Given I am offline after biometric authentication, When I navigate to a screen requiring live data, Then I see a clear non-alarming offline indicator and can view cached data where available
- +3 more
As a As a Organization Administrator
I want to be asked to re-authenticate with biometrics when I access sensitive operations like viewing encrypted contact details or submitting expense claims
So that the app protects sensitive data while still allowing low-friction access to routine registration tasks, without requiring me to log in and out repeatedly
- Given I am in an active session and navigate to a screen that displays encrypted personal data, When the screen loads, Then a biometric prompt overlay is displayed before the sensitive content is revealed
- Given the biometric step-up prompt is shown, When I authenticate successfully, Then the sensitive content is decrypted and displayed immediately
- Given the biometric step-up prompt is shown, When I cancel or fail biometric authentication, Then the sensitive content remains hidden and I am offered a password fallback or navigation back
- +3 more
As a As a Organization Administrator
I want to be able to authenticate with biometrics and use the app even when I have no internet connection
So that I can register activities immediately after a visit even in areas with poor connectivity, and trust that my data will sync when I am back online
- Given I am authenticated and then lose network connectivity, When I try to register an activity, Then the registration flow works normally and data is queued for sync
- Given I am offline and the app is relaunched, When I authenticate with biometrics, Then the local biometric check succeeds and I can access the app using cached data
- Given I am offline after biometric authentication, When I navigate to a screen requiring live data, Then I see a clear non-alarming offline indicator and can view cached data where available
- +3 more
As a As a Peer Mentor (Likeperson)
I want to receive a clear and non-alarming message when my device does not support biometric authentication or when it is temporarily unavailable
So that I understand why biometric login is not offered and know what alternative I should use, without feeling that something is broken or that my account is compromised
- Given my device has no biometric hardware, When biometric setup is attempted, Then a banner explains that biometric login is not available on this device and I am directed to use password login
- Given my device has biometrics disabled at the OS level, When I attempt biometric login, Then a clear message tells me to enable biometrics in device settings or use password login instead
- Given biometric authentication fails due to too many failed attempts and the sensor locks, When I open the app, Then I am immediately shown the fallback login screen with a plain-language explanation
- +3 more
As a As a Peer Mentor (Likeperson)
I want to choose whether to enable biometric authentication and be able to turn it off if I change my mind
So that I have control over my security preferences and can accommodate personal or organizational security policies without being locked into a configuration I did not choose
- Given I complete first-time login successfully, When I reach the biometric setup prompt, Then I am shown a clear explanation of what biometric login does, with options to enable or skip
- Given I chose to skip biometric setup during onboarding, When I open the app settings later, Then I can find a 'Biometric Login' toggle and enable it at any time
- Given I have biometric authentication enabled, When I toggle it off in settings, Then my biometric session credential is removed from secure storage immediately
- +3 more
As a As a Coordinator
I want to receive a clear and non-alarming message when my device does not support biometric authentication or when it is temporarily unavailable
So that I understand why biometric login is not offered and know what alternative I should use, without feeling that something is broken or that my account is compromised
- Given my device has no biometric hardware, When biometric setup is attempted, Then a banner explains that biometric login is not available on this device and I am directed to use password login
- Given my device has biometrics disabled at the OS level, When I attempt biometric login, Then a clear message tells me to enable biometrics in device settings or use password login instead
- Given biometric authentication fails due to too many failed attempts and the sensor locks, When I open the app, Then I am immediately shown the fallback login screen with a plain-language explanation
- +3 more
As a As a Coordinator
I want to choose whether to enable biometric authentication and be able to turn it off if I change my mind
So that I have control over my security preferences and can accommodate personal or organizational security policies without being locked into a configuration I did not choose
- Given I complete first-time login successfully, When I reach the biometric setup prompt, Then I am shown a clear explanation of what biometric login does, with options to enable or skip
- Given I chose to skip biometric setup during onboarding, When I open the app settings later, Then I can find a 'Biometric Login' toggle and enable it at any time
- Given I have biometric authentication enabled, When I toggle it off in settings, Then my biometric session credential is removed from secure storage immediately
- +3 more
As a As a Organization Administrator
I want to receive a clear and non-alarming message when my device does not support biometric authentication or when it is temporarily unavailable
So that I understand why biometric login is not offered and know what alternative I should use, without feeling that something is broken or that my account is compromised
- Given my device has no biometric hardware, When biometric setup is attempted, Then a banner explains that biometric login is not available on this device and I am directed to use password login
- Given my device has biometrics disabled at the OS level, When I attempt biometric login, Then a clear message tells me to enable biometrics in device settings or use password login instead
- Given biometric authentication fails due to too many failed attempts and the sensor locks, When I open the app, Then I am immediately shown the fallback login screen with a plain-language explanation
- +3 more
As a As a Organization Administrator
I want to choose whether to enable biometric authentication and be able to turn it off if I change my mind
So that I have control over my security preferences and can accommodate personal or organizational security policies without being locked into a configuration I did not choose
- Given I complete first-time login successfully, When I reach the biometric setup prompt, Then I am shown a clear explanation of what biometric login does, with options to enable or skip
- Given I chose to skip biometric setup during onboarding, When I open the app settings later, Then I can find a 'Biometric Login' toggle and enable it at any time
- Given I have biometric authentication enabled, When I toggle it off in settings, Then my biometric session credential is removed from secure storage immediately
- +3 more
As a As a Peer Mentor (Likeperson)
I want to use Face ID or fingerprint to unlock the app after my first BankID/Vipps login
So that I can access the app quickly without re-entering credentials every session, making it practical to log multiple short activities throughout a busy day
- Given I have completed initial BankID or Vipps authentication, When I open the app in a new session, Then I am presented with a biometric prompt (Face ID or fingerprint) instead of a login form
- Given biometric authentication is enabled, When I successfully authenticate with Face ID or fingerprint, Then I am taken directly to the role-based home screen within 2 seconds
- Given biometric authentication is enabled, When I fail biometric authentication 3 times, Then I am offered a fallback option to use my password or re-authenticate via BankID/Vipps
- +3 more
As a As a Peer Mentor (Likeperson)
I want my authenticated session to be securely stored on my device so the app resumes where I left off
So that I can close and reopen the app between activities throughout the day without re-authenticating every time, supporting the low-friction registration workflow the app is designed around
- Given I successfully authenticate, When the session token is stored, Then it is written to encrypted secure storage (iOS Keychain or Android Keystore), never to plain SharedPreferences or localStorage
- Given a valid session is persisted, When I open the app after closing it, Then the session resume manager detects the token and either resumes silently or triggers biometric confirmation
- Given a persisted session has expired, When I open the app, Then I am redirected to the login screen with a clear message that my session has ended
- +3 more
As a As a Coordinator
I want to use Face ID or fingerprint to unlock the app after my first BankID/Vipps login
So that I can access the app quickly without re-entering credentials every session, making it practical to log multiple short activities throughout a busy day
- Given I have completed initial BankID or Vipps authentication, When I open the app in a new session, Then I am presented with a biometric prompt (Face ID or fingerprint) instead of a login form
- Given biometric authentication is enabled, When I successfully authenticate with Face ID or fingerprint, Then I am taken directly to the role-based home screen within 2 seconds
- Given biometric authentication is enabled, When I fail biometric authentication 3 times, Then I am offered a fallback option to use my password or re-authenticate via BankID/Vipps
- +3 more
As a As a Coordinator
I want my authenticated session to be securely stored on my device so the app resumes where I left off
So that I can close and reopen the app between activities throughout the day without re-authenticating every time, supporting the low-friction registration workflow the app is designed around
- Given I successfully authenticate, When the session token is stored, Then it is written to encrypted secure storage (iOS Keychain or Android Keystore), never to plain SharedPreferences or localStorage
- Given a valid session is persisted, When I open the app after closing it, Then the session resume manager detects the token and either resumes silently or triggers biometric confirmation
- Given a persisted session has expired, When I open the app, Then I am redirected to the login screen with a clear message that my session has ended
- +3 more
As a As a Organization Administrator
I want to use Face ID or fingerprint to unlock the app after my first BankID/Vipps login
So that I can access the app quickly without re-entering credentials every session, making it practical to log multiple short activities throughout a busy day
- Given I have completed initial BankID or Vipps authentication, When I open the app in a new session, Then I am presented with a biometric prompt (Face ID or fingerprint) instead of a login form
- Given biometric authentication is enabled, When I successfully authenticate with Face ID or fingerprint, Then I am taken directly to the role-based home screen within 2 seconds
- Given biometric authentication is enabled, When I fail biometric authentication 3 times, Then I am offered a fallback option to use my password or re-authenticate via BankID/Vipps
- +3 more
As a As a Organization Administrator
I want my authenticated session to be securely stored on my device so the app resumes where I left off
So that I can close and reopen the app between activities throughout the day without re-authenticating every time, supporting the low-friction registration workflow the app is designed around
- Given I successfully authenticate, When the session token is stored, Then it is written to encrypted secure storage (iOS Keychain or Android Keystore), never to plain SharedPreferences or localStorage
- Given a valid session is persisted, When I open the app after closing it, Then the session resume manager detects the token and either resumes silently or triggers biometric confirmation
- Given a persisted session has expired, When I open the app, Then I am redirected to the login screen with a clear message that my session has ended
- +3 more