Member Associations
Feature Detail
Description
This feature manages the assignment of users to one or more member associations (local chapters) within an organization. NHF specifically calls out that members can belong to up to five local associations, which complicates activity attribution and reporting. Org Admins maintain the membership records, resolve overlaps, and configure how a user's activities are credited across the associations they belong to.
Sources & reasoning
NHF (§66) explicitly requires multi-chapter membership handling to prevent double-reporting; listed as a feature of admin-organization in §378. Core Product since it depends on hierarchy and is not in the MVP admin scope.
-
docs/source/likeperson.md · line 66Håndtering av medlemmer i flere lokallag (opptil 5): Avklare tilhørighet og hindre dobbeltrapportering.
-
docs/source/likeperson.md · line 378Member Associations
Analysis
Multi-association membership is not an edge case - it's the norm for active volunteers in federated Norwegian non-profits. Ignoring it causes double-counting in activity statistics, incorrect Bufdir reports, and confusion when coordinators try to determine which association 'owns' an activity. Solving it explicitly removes a frequent source of reporting errors and prevents the duplicate-activity registration problem NHF specifically called out. For the platform, getting this right early avoids painful retrofitting of statistics, reports, and the duplicate-detection feature once data has accumulated.
Backed by the member_associations table (one_to_many between users and organizations) capturing each user's membership in specific associations within the org hierarchy. The admin portal exposes a membership management surface allowing assignment, removal, and primary-association designation. Activities reference the association they were performed under; reporting queries aggregate by association while statistics deduplicate at the user level. Validation prevents a single activity from being credited to multiple associations simultaneously without an explicit split.
Quality Assurance
Organization Administrator (primary) · Global Administrator (same flow, time-bounded support access)Organization Administrator
Quick UAT
- Logg inn i Admin-portalen som Organisasjonsadministrator. Åpne Organisasjon → Medlemstilknytninger og søk opp en bruker som tilhører flere lokallag.
- Trykk Legg til tilknytning, velg et lokallag fra listen, og lagre.
- Marker ett av lokallagene som Primær tilknytning og bekreft endringen.
- Forsøk å legge til et sjette lokallag og bekreft at systemet blokkerer handlingen med feilmelding om maks fem tilknytninger.
- Fjern én tilknytning via Fjern-knappen, bekreft i dialogen, og verifiser at brukerens tilknytningsliste oppdateres umiddelbart.
Quick UAT — Accessibility
-
Logg inn i Admin-portalen som Organisasjonsadministrator. Åpne Organisasjon → Medlemstilknytninger og søk opp en bruker som tilhører flere lokallag.
- Screen reader Sideoverskrift 'Medlemstilknytninger' annonseres; tab-rekkefølge: hovedmeny → sideoverskrift → søkefelt → resultatliste.
- Keyboard / focus Søkefeltet nås med Tab; piltaster navigerer treffliste; Enter åpner brukerens tilknytningspanel.
- Focus visibility Synlig fokusring (min 2px) på søkefelt og trefflinjer.
-
Trykk Legg til tilknytning, velg et lokallag fra listen, og lagre.
- Screen reader Knapp 'Legg til tilknytning' annonseres; dialog åpnes og fokus flyttes til første kontroll; dialog-rolle 'modal' kunngjøres.
- Keyboard / focus Esc lukker dialogen; Tab er fanget inne i dialogen; lokallags-nedtrekksliste ĂĄpnes med Enter/Space og navigeres med piltaster.
- Focus visibility Fokus flyttes til første feltet i dialogen ved åpning og tilbake til utløserknappen ved lukking.
- Touch target ≥ 24×24 CSS px på Legg til-knapp og dialog-handlingsknapper.
-
Marker ett av lokallagene som Primær tilknytning og bekreft endringen.
- Screen reader Radioknapp 'Primær tilknytning' annonseres med valgt/ikke-valgt tilstand; endring kunngjøres via polite live region.
- Keyboard / focus Piltaster bytter mellom radio-alternativer i samme gruppe; Space velger.
- Live region 'Primær tilknytning satt til {lokallagsnavn}.'
- Contrast Primær-status angis ikke kun ved farge — også ikon og tekstetikett 'Primær'.
-
Forsøk å legge til et sjette lokallag og bekreft at systemet blokkerer handlingen med feilmelding om maks fem tilknytninger.
- Screen reader Feilmelding annonseres via assertive live region: 'Maks fem tilknytninger tillatt. Fjern en eksisterende før du legger til ny.'
- Focus visibility Fokus flyttes til feilmeldingen; meldingen er programmatisk knyttet til Lagre-knappen via aria-describedby.
- Contrast Feilmelding bruker både ikon og tekst, ikke bare rød farge; tekstkontrast ≥ 4.5:1.
-
Fjern én tilknytning via Fjern-knappen, bekreft i dialogen, og verifiser at brukerens tilknytningsliste oppdateres umiddelbart.
- Screen reader Bekreftelsesdialog 'Vil du fjerne tilknytning til {lokallag}?' annonseres; etter bekreftelse leses 'Tilknytning fjernet'.
- Keyboard / focus Tab mellom Avbryt og Bekreft i dialogen; Esc avbryter.
- Touch target ≥ 24×24 CSS px på Fjern- og bekreftelsesknapper.
- Live region 'Tilknytning til {lokallag} fjernet. Brukeren har nĂĄ {n} aktive tilknytninger.'
Role Boundaries
3 role(s) must NOT access this feature-
Peer Mentor (Likeperson)
Medlemstilknytninger er en Admin-portal-funksjon. Likepersoner logger kun inn i Mobilappen; skjermen finnes ikke i mobilnavigasjonen, og direkte API-kall returnerer 403.
-
Coordinator (Koordinator)
Koordinatorer har ikke pĂĄlogging til Admin-portalen. Funksjonen er ikke synlig i deres mobilkontekst; deep-link til admin-URL gir innloggings-redirect uten tilgang.
-
Prospective Buyer
Salgsnettstedet har ingen pĂĄlogging. Ingen rute til Medlemstilknytninger eksisterer; funksjonen er fullstendig isolert fra det offentlige domenet.
Expected End State
Brukerens tilknytningssett er oppdatert i Member Association Store med maks fem aktive lokallag og nøyaktig én primær tilknytning. Endringen er umiddelbart synlig på Member Associations-siden, brukes av attribusjonslogikken for å hindre dobbeltrapportering på tvers av lokallag, og er logget i organisasjonens revisjonslogg med utførende administrators identitet og tidsstempel.
Components (8)
Shared Components
These components are reused across multiple features
User Stories
No user stories have been generated for this feature yet.