# Functional Design Plan — Unit 02: Identity & RBAC Dit plan beschrijft de stappen voor het functioneel ontwerpen van de Identity & Role-Based Access Control (RBAC) module (Unit 02). ## Functional Design Stappen - [x] Analyseren van de hiërarchische rollen logica (Eigenaar > Beheerder > Gebruiker). - [x] Ontwerpen van de gebruikersbeheer workflows (aanmaken, wijzigen, verwijderen). - [x] Definiëren van de JWT authenticatie flow (login, token refresh). - [x] Uitwerken van de autorisatie regels voor module-specifieke rechten. - [x] Opstellen van de domein entiteiten (User, Role, Token). ## Vragen voor Functional Design (Unit 02) ### 1. Initiële Gebruiker (Bootstrapping) **Vraag 1.1**: Hoe moet de allereerste "Eigenaar" (Owner) van het systeem worden aangemaakt? - A) Via een database seed script bij de eerste start. - B) Via een specifieke configuratie in `appsettings.json`. - C) Via een verborgen/tijdelijk endpoint dat na eerste gebruik wordt gedeactiveerd. ### 2. Gebruikersuitnodiging (FR-03) **Vraag 2.1**: Voor de creatie van nieuwe gebruikers: welke methode heeft de voorkeur voor de MVP? - A) **Direct**: Beheerder vult e-mail, rol én wachtwoord in. Account is direct actief. - B) **Uitnodiging**: Beheerder vult e-mail en rol in; systeem genereert een tijdelijk token/link waarmee de gebruiker zelf een wachtwoord instelt. ### 3. Hiërarchie Handhaving **Vraag 3.1**: Waar moet de hiërarchie-controle (bijv. Beheerder mag Eigenaar niet wijzigen) primair plaatsvinden? - A) **Service Layer**: In de `IUserService` wordt bij elke actie gecontroleerd of de uitvoerder voldoende rechten heeft t.o.v. de doelgebruiker. - B) **Authorization Policies**: Gebruikmaken van custom `RequirementHandlers` die de hiërarchie valideren voordat de controller actie wordt aangeroepen. ### 4. Refresh Tokens **Vraag 4.1**: Hoe moeten Refresh Tokens worden opgeslagen? - A) In de SQL database (gekoppeld aan de Gebruiker). - B) In-memory (alleen geschikt voor single-instance, gaat verloren bij restart). - C) Geen refresh tokens in de eerste versie van de MVP (alleen access tokens). ## Volgende Stappen Na beantwoording van deze vragen worden de artifacts (`business-rules.md`, `logic-model.md`, `entities.md`) gegenereerd in `aidlc-docs/construction/identity-rbac/functional-design/`.