Initial commit with inital CMS
This commit is contained in:
+62
@@ -0,0 +1,62 @@
|
||||
# Business Logic Model — Unit 02: Identity & RBAC
|
||||
|
||||
Dit document beschrijft de processen en datastromen voor authenticatie en autorisatie.
|
||||
|
||||
## 1. Authenticatie Flow (JWT)
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Client
|
||||
participant AuthController
|
||||
participant AuthService
|
||||
participant UserManager
|
||||
participant Database
|
||||
|
||||
Client->>AuthController: Login(Email, Password)
|
||||
AuthController->>AuthService: AuthenticateAsync(Email, Password)
|
||||
AuthService->>UserManager: FindByEmailAsync(Email)
|
||||
UserManager->>Database: Get User
|
||||
Database-->>UserManager: User Data
|
||||
UserManager->>UserManager: CheckPasswordAsync(User, Password)
|
||||
AuthService->>AuthService: GenerateTokens(User)
|
||||
AuthService->>Database: Save RefreshToken
|
||||
AuthService-->>AuthController: AccessToken, RefreshToken
|
||||
AuthController-->>Client: 200 OK (Tokens)
|
||||
```
|
||||
|
||||
## 2. Uitnodigingsproces
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[Admin/Owner] -->|Create Invitation| B(InvitationService)
|
||||
B -->|Generate Token| C(InvitationToken)
|
||||
C -->|Save to DB| D[(Database)]
|
||||
B -->|Send Email| E[User]
|
||||
E -->|Click Link| F[Setup Page]
|
||||
F -->|Submit Password + Token| G(SetupController)
|
||||
G -->|Validate Token| B
|
||||
B -->|Create Account| H(UserManager)
|
||||
H -->|Activate User| D
|
||||
```
|
||||
|
||||
## 3. Hiërarchische Autorisatie Logic
|
||||
|
||||
De autorisatie wordt afgehandeld via ASP.NET Core `AuthorizationPolicies`.
|
||||
|
||||
- **Policy: `RequireLowerRole`**:
|
||||
- Haalt de rol van de huidige gebruiker (X) en de doelgebruiker (Y) op.
|
||||
- Vergelijkt de numerieke waarden van de rollen.
|
||||
- Slaagt alleen als `RoleValue(X) > RoleValue(Y)` (of `X == Y` en `X == Owner`).
|
||||
|
||||
## 4. Token Refresh Logic
|
||||
|
||||
1. Client stuurt `Expired Access Token` + `Refresh Token`.
|
||||
2. Systeem controleert of `Refresh Token` bestaat in de database en niet verlopen is.
|
||||
3. Systeem controleert of `Refresh Token` al eerder is gebruikt (Re-use detection).
|
||||
4. Indien geldig:
|
||||
- Genereer nieuw `Access Token`.
|
||||
- Genereer nieuw `Refresh Token` (Rotation).
|
||||
- Verwijder/Invalideer het oude `Refresh Token`.
|
||||
5. Indien ongeldig of re-use:
|
||||
- Trek alle tokens van de gebruiker in.
|
||||
- Retourneer `401 Unauthorized`.
|
||||
Reference in New Issue
Block a user