44 lines
2.0 KiB
Markdown
44 lines
2.0 KiB
Markdown
# Services — SlpModularCms.Api
|
|
|
|
Dit document beschrijft de service-laag en de orkestratie van componenten.
|
|
|
|
## 1. Module Orchestrator (Binnen API Shell)
|
|
Verantwoordelijk voor het ontdekken en laden van modules bij het opstarten.
|
|
|
|
- **Proces**:
|
|
1. Identificeer statisch gerefereerde projecten die `IModule` implementeren.
|
|
2. Scan de geconfigureerde "Modules" directory voor DLL's (dynamisch laden).
|
|
3. Roep `RegisterServices` aan op alle gevonden module-instanties.
|
|
4. Voeg de controllers van de modules toe aan de MVC-pipeline via `AddApplicationPart`.
|
|
|
|
## 2. Identity Service Orchestratie
|
|
De `IAuthService` maakt gebruik van ASP.NET Core Identity onder water om authenticatie te regelen.
|
|
|
|
- **Workflow Login**:
|
|
- `AuthService` roept `UserManager` aan voor validatie.
|
|
- Bij succes genereert `TokenService` een JWT met claims (ID, Rol).
|
|
- Refresh token wordt opgeslagen in de database.
|
|
|
|
## 3. Availability Check Flow
|
|
Cross-cutting concern dat door de hele applicatie heen loopt.
|
|
|
|
- **Interceptors/Middleware**:
|
|
- Elk inkomend request kan worden gecontroleerd tegen de `IAvailabilityService`.
|
|
- Als `IAvailabilityService.IsAvailableAsync()` false retourneert, stopt de pipeline met een `503 Service Unavailable`.
|
|
|
|
## 4. RBAC Policy Orchestratie
|
|
Het framework configureert globale policies op basis van de rollenhiërarchie.
|
|
|
|
- **Policies**:
|
|
- `RequireOwnerRole`: Vereist expliciet de Owner claim.
|
|
- `RequireAdminRole`: Vereist Admin OF Owner claim.
|
|
- `RequireUserRole`: Vereist User, Admin OF Owner claim.
|
|
|
|
## 5. Module-Specifieke Autorisatie
|
|
Naast de globale rollen kunnen Beheerders en Eigenaars rechten per module toekennen aan Gebruikers.
|
|
|
|
- **Mechanisme**:
|
|
- Het systeem houdt een koppeling bij tussen `User` en `Module` met bijbehorende permissies (bijv. `HasAccess`).
|
|
- **Custom Requirement**: Er wordt een `ModuleAccessRequirement` gedefinieerd die controleert of de huidige gebruiker expliciete toegang heeft tot de module die hij probeert te benaderen.
|
|
- **Override**: Eigenaars en Beheerders hebben standaard toegang tot alle modules (hiërarchie bypass).
|