38 lines
2.3 KiB
Markdown
38 lines
2.3 KiB
Markdown
# 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/`.
|