Identity & Access – Diagrams (Mermaid)
These diagrams visualise the SSO + RBAC model for institutional reviewers.
1. OIDC Login Flow (University SSO → CepatEdge)
mermaid
sequenceDiagram
autonumber
actor U as User (Staff/HOD/Tech/Admin)
participant SPA as CepatEdge SPA (Browser)
participant IdP as University IdP (OIDC)
participant API as CepatEdge API (Workers)
participant DB as Neon (Users & Roles)
U->>SPA: Click "Login with University SSO"
SPA->>IdP: Redirect to /authorize (client_id, redirect_uri, scopes)
U->>IdP: Authenticate (password, MFA, etc.)
IdP-->>SPA: Redirect back with authorization code
SPA->>API: POST /auth/oidc/callback (code)
API->>IdP: Exchange code for ID token + access token
IdP-->>API: ID token (userId, email, groups...) + access token
API->>API: Verify token (signature, issuer, audience, exp)
API->>API: Map IdP groups → CepatEdge role (employee/technician/HOD/admin)
API->>DB: Upsert user + role mapping
API->>API: Issue short-lived access token + refresh token
API-->>SPA: Set HttpOnly cookies / return tokens
SPA-->>U: Redirect to dashboard with authenticated session2. IdP Groups → CepatEdge Roles
mermaid
flowchart LR
classDef idp fill:#1f77b4,stroke:#0b3a69,color:#ffffff
classDef app fill:#2ca02c,stroke:#145214,color:#ffffff
subgraph IdP_Groups[University IdP Groups]
G1[MAINT-STAFF]:::idp
G2[MAINT-TECHNICIAN]:::idp
G3[MAINT-HOD]:::idp
G4[MAINT-ADMIN]:::idp
end
subgraph AppRoles[CepatEdge Roles]
R1[employee]:::app
R2[technician]:::app
R3[department_head]:::app
R4[admin]:::app
end
G1 --> R1
G2 --> R2
G3 --> R3
G4 --> R4
note over AppRoles: Priority (if multiple groups):<br/>admin > department_head > technician > employee3. Logout + Revocation Overview
mermaid
sequenceDiagram
autonumber
actor U as User
participant SPA as CepatEdge SPA
participant API as CepatEdge API
participant DB as Neon (Sessions/Revocation)
participant IdP as University IdP
U->>SPA: Click "Logout"
SPA->>API: POST /auth/logout (current refresh token)
API->>DB: Mark refresh token/session as revoked
API-->>SPA: Clear cookies / success
SPA-->>U: Show logged-out state
rect rgb(255,245,230)
note over API,DB: On next request, access token expiry +<br/>revocation checks ensure the user is fully logged out.
end
opt Single Logout (optional)
API->>IdP: Front-/back-channel logout request
IdP-->>U: Ends IdP session (user logged out from SSO)
end