Files
slp-modular-cms/aidlc-docs/features/slp-modular-cms-api/construction/identity-rbac/functional-design/logic-model.md
T

2.1 KiB

Business Logic Model — Unit 02: Identity & RBAC

Dit document beschrijft de processen en datastromen voor authenticatie en autorisatie.

1. Authenticatie Flow (JWT)

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

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.