Files
slp-modular-cms/aidlc-docs/features/slp-modular-cms-api/inception/application-design/services.md
T

2.0 KiB

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