low complexity extracted Authentication & Access Control Confidence: 100%
6
Components
198
Shared
18
User Stories
Yes
Analyzed

Description

A pre-login screen that allows users to select which organization they belong to before proceeding with authentication. This is required because the app serves multiple organizations (NHF, Blindeforbundet, HLF, Barnekreftforeningen) each with their own terminology, branding, and configuration. The selected organization determines the label system, terminology, and org-specific configuration loaded throughout the app. Selection must persist across sessions so returning users are not forced to re-select on every login.

Analysis

Business Value

Enables a single app to serve multiple organizations with distinct identities and configurations, reducing maintenance overhead while preserving each org's brand and terminology.

Implementation Notes

Implemented as a StatefulShellRoute entry point. Organization choice stored locally (SharedPreferences or similar). Drives the OrganizationLabels system for dynamic terminology throughout the app.

Components (204)

User Interface (2)

Service Layer (1)

Data Layer (1)

Infrastructure (2)

Shared Components

These components are reused across multiple features

User Interface (59)

ui Role Switch Widget medium Shared ui Role-Aware Bottom Navigation medium Shared ui Activity Type Selection Screen low Shared ui Speech-to-Text Field Overlay medium Shared ui Receipt Capture Widget medium Shared ui Peer Mentor Single Selector low Shared ui Proxy Audit Badge Widget low Shared ui Export Period Picker low Shared ui Contact Card Widget low Shared ui Contact Search Bar low Shared ui Peer Mentor Card Widget low Shared ui Activity History List low Shared ui Multi-Chapter Affiliation Chip Widget medium Shared ui Certification Status Badge low Shared ui Duplicate Activity Warning Dialog medium Shared ui Mentor Multi-Select Widget medium Shared ui Map Filter Panel medium Shared ui Claim Status Badge low Shared ui Export Date Range Picker low Shared ui Custom Date Range Picker low Shared ui Duplicate Activity Warning Dialog low Shared ui Proxy Activity Form medium Shared ui Proxy Peer Mentor Selector medium Shared ui Expected Return Date Picker low Shared ui Pause Activation Screen low Shared ui Pause Status Indicator low Shared ui Admin KPI Stat Widget low Shared ui Organisation Hierarchy Navigator high Shared ui Bufdir Period Selector Widget low Shared ui Export History List medium Shared ui Activity Type Donut Chart medium Shared ui Monthly Activity Bar Chart medium Shared ui Statistics Period Filter Bar low Shared ui Statistics Summary Cards low Shared ui Notification Badge Widget low Shared ui Certificate Expiry Status Indicator low Shared ui Animated Stat Card Widget medium Shared ui In-App Notification Banner low Shared ui Accessible Modal Sheet Widget high Shared ui Live Region Announcer medium Shared ui Semantics Wrapper Widget medium Shared ui Sensitive Field Warning Dialog high Shared ui Confirm Before Submit Screen medium Shared ui Inline Contextual Help Widget low Shared ui Labelled Navigation Bar low Shared ui Plain Language Error Display low Shared ui Single-Action Screen Layout medium Shared ui Wizard Progress Indicator low Shared ui Accessible Text Style System medium Shared ui Accessible Touch Target Wrapper low Shared ui Contrast-Safe Color Palette Widget medium Shared ui Accessible Bottom Navigation Bar medium Shared ui Modal Close Button low Shared ui Persistent Back Button low Shared ui Vertical Scroll Container low Shared ui Organization Card Widget low Shared ui Terminology-Aware Text Widget low Shared ui FeatureGate Widget low Shared ui Chapter Switcher medium Shared

Service Layer (52)

service Authentication Service medium Shared service Authentication Session Manager medium Shared service Biometric Authentication Service medium Shared service Biometric Authentication Service medium Shared service Biometric Authentication Service medium Shared service Permission Checker Service medium Shared service Role State Manager medium Shared service No-Access Route Guard low Shared service Activity Type Metadata Resolver low Shared service Chapter Scope Resolver medium Shared service Organisation Hierarchy Resolver medium Shared service Coordinator Notification Service medium Shared service Duplicate Activity Detection Service high Shared service Mentor Filter Service low Shared service Receipt Threshold Validator low Shared service Approval Status Notification Service medium Shared service Threshold Evaluation Service medium Shared service Declaration Encryption Service high Shared service Organization Feature Flag Service low Shared service Participant Deduplication Service high Shared service Reporting Period Service medium Shared service Activity Attribution Service low Shared service Proxy Duplicate Detection Service medium Shared service Pause Management Service medium Shared service Pause Notification Service medium Shared service Admin Export Service medium Shared service Admin Row-Level Security Guard high Shared service Organisation Hierarchy Service high Shared service User Management Service high Shared service Role Access Validator low Shared service Peer Mentor Stats Aggregator medium Shared service Push Notification Dispatcher medium Shared service Notification Preference Service low Shared service Scenario Deep-Link Router medium Shared service Scenario Notification Content Builder medium Shared service Badge Criteria Integration medium Shared service Activity Summary Aggregator low Shared service Focus Management Service medium Shared service Screen Reader Detection Service medium Shared service Sensitive Field Privacy Guard high Shared service Plain Language Content Service medium Shared service Wizard State Manager medium Shared service Tab State Manager medium Shared service Organization Route Guard medium Shared service Tenant Context Service high Shared service Label Key Resolver Service low Shared service Organization Labels Notifier medium Shared service FeatureFlagProvider (Riverpod) medium Shared service Access Scope Service high Shared service Hierarchy Aggregation Service high Shared service Hierarchy Service high Shared service Unit Assignment Service medium Shared

Data Layer (33)

Infrastructure (54)

infrastructure Keyboard-Aware Layout Utility low Shared infrastructure Supabase Auth Client low Shared infrastructure Deep Link / OAuth Redirect Handler medium Shared infrastructure Secure Storage Adapter low Shared infrastructure Supabase Session Manager medium Shared infrastructure URL Launcher Utility low Shared infrastructure Local Storage Adapter low Shared infrastructure Supabase Activity Client low Shared infrastructure Organization Labels Provider low Shared infrastructure Supabase Client low Shared infrastructure Organisation Field Config Loader medium Shared infrastructure Speech-to-Text Adapter medium Shared infrastructure File Download Handler low Shared infrastructure Duplicate Reviewed Flag Middleware low Shared infrastructure Contact RLS Query Builder low Shared infrastructure Contact Form Validator low Shared infrastructure Design Token Theme low Shared infrastructure Organization Labels Provider low Shared infrastructure Supabase Client Provider low Shared infrastructure Search Debounce Utility low Shared infrastructure Expense Type Analytics Tracker low Shared infrastructure Receipt Image Picker Integration low Shared infrastructure CSV / JSON File Generator medium Shared infrastructure Coordinator Role Guard low Shared infrastructure Nightly Job Scheduler medium Shared infrastructure Supabase RLS Policy Configuration high Shared infrastructure Export File Storage Adapter low Shared infrastructure Supabase Storage Adapter low Shared infrastructure Peer Mentor Pause Management Service medium Shared infrastructure Push Notification Service medium Shared infrastructure fl_chart Adapter medium Shared infrastructure Push Notification Service low Shared infrastructure FCM Push Notification Sender medium Shared infrastructure FCM Notification Dispatcher medium Shared infrastructure Push Notification Dispatcher medium Shared infrastructure Supabase Realtime Subscription Service medium Shared infrastructure Organisation Data Isolation Guard low Shared infrastructure Push Notification Dispatcher medium Shared infrastructure Deep Link Handler medium Shared infrastructure QR Code Generator low Shared infrastructure Share Sheet Bridge low Shared infrastructure Semantics Service Facade medium Shared infrastructure Accessibility Design Token Enforcer medium Shared infrastructure Accessible Theme Builder medium Shared infrastructure Navigation Route Configuration medium Shared infrastructure Accessibility Live Region Announcer low Shared infrastructure Feature Flag Provider low Shared infrastructure Secure Storage Adapter low Shared infrastructure Supabase RLS Tenant Scope Configurator medium Shared infrastructure Label Key Registry low Shared infrastructure Terminology Riverpod Providers low Shared infrastructure WCAG Semantics Label Resolver low Shared infrastructure Feature Flag Key Constants low Shared infrastructure RLS Policy Manager high Shared

User Stories (18)

Complete Onboarding Progress Tracking During First-Time Org Selection
medium 2 pts

As a As a Peer Mentor (Likeperson)

I want to see a clear onboarding progress indicator when I select my organization for the first time

So that I understand how many setup steps remain before I can start using the app and do not feel lost during my first session

Acceptance Criteria
  • Given I am a first-time user who has just completed BankID or Vipps authentication, When the org selection screen appears, Then an onboarding progress indicator is visible showing my current step in the setup flow
  • Given I am a returning user with a previously persisted org selection, When I open the app and reach the org selection screen, Then no onboarding progress indicator is shown
  • Given the onboarding progress indicator is visible, When I select an organization and proceed, Then the indicator updates to reflect completion of this step before navigating forward
  • +1 more
View Full Story →
See Organization-Specific Terminology on the Selection Screen
medium 3 pts

As a As a Peer Mentor (Likeperson)

I want the organization selection screen to use each organization's own terminology for roles and labels

So that I immediately recognize which organization I am selecting and understand the role I hold there using language familiar to that organization

Acceptance Criteria
  • Given I belong to two organizations with different terminology configurations, When the org selection screen loads, Then each organization card displays the role label using that organization's own terminology
  • Given an organization has a custom label configured for 'peer mentor', When I view that organization's card, Then the role is displayed using the custom label, not a hardcoded default
  • Given terminology data is not yet loaded for an organization, When that org's card is rendered, Then a sensible fallback label is shown and the UI does not crash or show a blank role label
  • +1 more
View Full Story →
Complete Onboarding Progress Tracking During First-Time Org Selection
medium 2 pts

As a As a Coordinator

I want to see a clear onboarding progress indicator when I select my organization for the first time

So that I understand how many setup steps remain before I can start using the app and do not feel lost during my first session

Acceptance Criteria
  • Given I am a first-time user who has just completed BankID or Vipps authentication, When the org selection screen appears, Then an onboarding progress indicator is visible showing my current step in the setup flow
  • Given I am a returning user with a previously persisted org selection, When I open the app and reach the org selection screen, Then no onboarding progress indicator is shown
  • Given the onboarding progress indicator is visible, When I select an organization and proceed, Then the indicator updates to reflect completion of this step before navigating forward
  • +1 more
View Full Story →
See Organization-Specific Terminology on the Selection Screen
medium 3 pts

As a As a Coordinator

I want the organization selection screen to use each organization's own terminology for roles and labels

So that I immediately recognize which organization I am selecting and understand the role I hold there using language familiar to that organization

Acceptance Criteria
  • Given I belong to two organizations with different terminology configurations, When the org selection screen loads, Then each organization card displays the role label using that organization's own terminology
  • Given an organization has a custom label configured for 'peer mentor', When I view that organization's card, Then the role is displayed using the custom label, not a hardcoded default
  • Given terminology data is not yet loaded for an organization, When that org's card is rendered, Then a sensible fallback label is shown and the UI does not crash or show a blank role label
  • +1 more
View Full Story →
Complete Onboarding Progress Tracking During First-Time Org Selection
medium 2 pts

As a As a Organization Administrator

I want to see a clear onboarding progress indicator when I select my organization for the first time

So that I understand how many setup steps remain before I can start using the app and do not feel lost during my first session

Acceptance Criteria
  • Given I am a first-time user who has just completed BankID or Vipps authentication, When the org selection screen appears, Then an onboarding progress indicator is visible showing my current step in the setup flow
  • Given I am a returning user with a previously persisted org selection, When I open the app and reach the org selection screen, Then no onboarding progress indicator is shown
  • Given the onboarding progress indicator is visible, When I select an organization and proceed, Then the indicator updates to reflect completion of this step before navigating forward
  • +1 more
View Full Story →
See Organization-Specific Terminology on the Selection Screen
medium 3 pts

As a As a Organization Administrator

I want the organization selection screen to use each organization's own terminology for roles and labels

So that I immediately recognize which organization I am selecting and understand the role I hold there using language familiar to that organization

Acceptance Criteria
  • Given I belong to two organizations with different terminology configurations, When the org selection screen loads, Then each organization card displays the role label using that organization's own terminology
  • Given an organization has a custom label configured for 'peer mentor', When I view that organization's card, Then the role is displayed using the custom label, not a hardcoded default
  • Given terminology data is not yet loaded for an organization, When that org's card is rendered, Then a sensible fallback label is shown and the UI does not crash or show a blank role label
  • +1 more
View Full Story →
Resume Session in Correct Organizational Context After App Restart
high 5 pts

As a As a Peer Mentor (Likeperson)

I want the app to remember which organization I last selected and resume in that context when I reopen the app

So that I do not need to repeat the organization selection every time I open the app, reducing friction for my daily use

Acceptance Criteria
  • Given I previously selected an organization and closed the app, When I reopen the app and authenticate with biometrics, Then I am taken directly to the home screen of my previously selected organization without seeing the org selection screen
  • Given I have a persisted organization selection, When the app launches and my membership in that organization has been revoked, Then I am redirected to the org selection screen with a message explaining that my access to the previous organization has changed
  • Given I have a persisted organization selection, When the app launches offline, Then the app uses the locally cached org context to load available offline data, displaying a banner indicating that data may be stale
  • +2 more
View Full Story →
Switch Organization During an Active Session
high 8 pts

As a As a Peer Mentor (Likeperson)

I want to switch to a different organization without logging out and back in

So that I can manage my responsibilities across multiple organizations efficiently within a single app session

Acceptance Criteria
  • Given I am in an active session with Organization A, When I access the organization switcher in settings, Then I see a list of all my organizations with the currently active one indicated
  • Given I select a different organization from the switcher, When the switch completes, Then I am taken to the home screen for the new organization and all visible data (contacts, activities, stats) reflects that organization only
  • Given I switch organizations, When the new tenant context is set, Then the Supabase RLS configuration is updated to scope all queries to the new organization's data
  • +2 more
View Full Story →
Resume Session in Correct Organizational Context After App Restart
high 5 pts

As a As a Coordinator

I want the app to remember which organization I last selected and resume in that context when I reopen the app

So that I do not need to repeat the organization selection every time I open the app, reducing friction for my daily use

Acceptance Criteria
  • Given I previously selected an organization and closed the app, When I reopen the app and authenticate with biometrics, Then I am taken directly to the home screen of my previously selected organization without seeing the org selection screen
  • Given I have a persisted organization selection, When the app launches and my membership in that organization has been revoked, Then I am redirected to the org selection screen with a message explaining that my access to the previous organization has changed
  • Given I have a persisted organization selection, When the app launches offline, Then the app uses the locally cached org context to load available offline data, displaying a banner indicating that data may be stale
  • +2 more
View Full Story →
Switch Organization During an Active Session
high 8 pts

As a As a Coordinator

I want to switch to a different organization without logging out and back in

So that I can manage my responsibilities across multiple organizations efficiently within a single app session

Acceptance Criteria
  • Given I am in an active session with Organization A, When I access the organization switcher in settings, Then I see a list of all my organizations with the currently active one indicated
  • Given I select a different organization from the switcher, When the switch completes, Then I am taken to the home screen for the new organization and all visible data (contacts, activities, stats) reflects that organization only
  • Given I switch organizations, When the new tenant context is set, Then the Supabase RLS configuration is updated to scope all queries to the new organization's data
  • +2 more
View Full Story →
Resume Session in Correct Organizational Context After App Restart
high 5 pts

As a As a Organization Administrator

I want the app to remember which organization I last selected and resume in that context when I reopen the app

So that I do not need to repeat the organization selection every time I open the app, reducing friction for my daily use

Acceptance Criteria
  • Given I previously selected an organization and closed the app, When I reopen the app and authenticate with biometrics, Then I am taken directly to the home screen of my previously selected organization without seeing the org selection screen
  • Given I have a persisted organization selection, When the app launches and my membership in that organization has been revoked, Then I am redirected to the org selection screen with a message explaining that my access to the previous organization has changed
  • Given I have a persisted organization selection, When the app launches offline, Then the app uses the locally cached org context to load available offline data, displaying a banner indicating that data may be stale
  • +2 more
View Full Story →
Switch Organization During an Active Session
high 8 pts

As a As a Organization Administrator

I want to switch to a different organization without logging out and back in

So that I can manage my responsibilities across multiple organizations efficiently within a single app session

Acceptance Criteria
  • Given I am in an active session with Organization A, When I access the organization switcher in settings, Then I see a list of all my organizations with the currently active one indicated
  • Given I select a different organization from the switcher, When the switch completes, Then I am taken to the home screen for the new organization and all visible data (contacts, activities, stats) reflects that organization only
  • Given I switch organizations, When the new tenant context is set, Then the Supabase RLS configuration is updated to scope all queries to the new organization's data
  • +2 more
View Full Story →
View and Select My Organization on App Launch
critical 5 pts

As a As a Peer Mentor (Likeperson)

I want to see a clear list of the organizations I belong to when I open the app, and select which one I am acting on behalf of

So that I can work in the correct organizational context and ensure my activities, contacts, and reports are attributed to the right organization

Acceptance Criteria
  • Given I have authenticated and belong to one or more organizations, When the org selection screen loads, Then I see a card for each organization I am a member of, showing the organization name and my role
  • Given the org selection screen is displayed, When I tap an organization card, Then the app navigates to the role-based home screen for that organization and all subsequent data is scoped to that organization
  • Given I belong to only one organization, When I authenticate, Then the app may auto-select that organization and skip the selection screen, navigating directly to the home screen
  • +3 more
View Full Story →
Access the Organization Selection Screen with a Screen Reader
critical 5 pts

As a As a Peer Mentor (Likeperson)

I want to navigate the organization selection screen fully using VoiceOver or TalkBack

So that I can independently choose my organization without sighted assistance, in line with my organization's accessibility commitments

Acceptance Criteria
  • Given I am a VoiceOver user on iOS, When the org selection screen loads, Then focus is automatically placed on the first organization card and VoiceOver announces the organization name, my role, and that the card is tappable
  • Given I am using a screen reader, When I navigate through the list of organization cards, Then each card is announced with the organization name, my role within that organization, and any relevant status information
  • Given I am using a screen reader, When I double-tap to select an organization, Then VoiceOver announces confirmation of the selection and that the app is loading the home screen
  • +3 more
View Full Story →
View and Select My Organization on App Launch
critical 5 pts

As a As a Coordinator

I want to see a clear list of the organizations I belong to when I open the app, and select which one I am acting on behalf of

So that I can work in the correct organizational context and ensure my activities, contacts, and reports are attributed to the right organization

Acceptance Criteria
  • Given I have authenticated and belong to one or more organizations, When the org selection screen loads, Then I see a card for each organization I am a member of, showing the organization name and my role
  • Given the org selection screen is displayed, When I tap an organization card, Then the app navigates to the role-based home screen for that organization and all subsequent data is scoped to that organization
  • Given I belong to only one organization, When I authenticate, Then the app may auto-select that organization and skip the selection screen, navigating directly to the home screen
  • +3 more
View Full Story →
Access the Organization Selection Screen with a Screen Reader
critical 5 pts

As a As a Coordinator

I want to navigate the organization selection screen fully using VoiceOver or TalkBack

So that I can independently choose my organization without sighted assistance, in line with my organization's accessibility commitments

Acceptance Criteria
  • Given I am a VoiceOver user on iOS, When the org selection screen loads, Then focus is automatically placed on the first organization card and VoiceOver announces the organization name, my role, and that the card is tappable
  • Given I am using a screen reader, When I navigate through the list of organization cards, Then each card is announced with the organization name, my role within that organization, and any relevant status information
  • Given I am using a screen reader, When I double-tap to select an organization, Then VoiceOver announces confirmation of the selection and that the app is loading the home screen
  • +3 more
View Full Story →
View and Select My Organization on App Launch
critical 5 pts

As a As a Organization Administrator

I want to see a clear list of the organizations I belong to when I open the app, and select which one I am acting on behalf of

So that I can work in the correct organizational context and ensure my activities, contacts, and reports are attributed to the right organization

Acceptance Criteria
  • Given I have authenticated and belong to one or more organizations, When the org selection screen loads, Then I see a card for each organization I am a member of, showing the organization name and my role
  • Given the org selection screen is displayed, When I tap an organization card, Then the app navigates to the role-based home screen for that organization and all subsequent data is scoped to that organization
  • Given I belong to only one organization, When I authenticate, Then the app may auto-select that organization and skip the selection screen, navigating directly to the home screen
  • +3 more
View Full Story →
Access the Organization Selection Screen with a Screen Reader
critical 5 pts

As a As a Organization Administrator

I want to navigate the organization selection screen fully using VoiceOver or TalkBack

So that I can independently choose my organization without sighted assistance, in line with my organization's accessibility commitments

Acceptance Criteria
  • Given I am a VoiceOver user on iOS, When the org selection screen loads, Then focus is automatically placed on the first organization card and VoiceOver announces the organization name, my role, and that the card is tappable
  • Given I am using a screen reader, When I navigate through the list of organization cards, Then each card is announced with the organization name, my role within that organization, and any relevant status information
  • Given I am using a screen reader, When I double-tap to select an organization, Then VoiceOver announces confirmation of the selection and that the app is loading the home screen
  • +3 more
View Full Story →