# 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).