Roller och behörigheter¶
Rollsystemet i Salieri bygger på sex fasta systemroller (SystemRoleType). Varje inloggning (ApplicationUser) länkas till en eller flera användarroller (UserRole), och varje användarroll kan tillhöra en eller flera systemroller. Vid inloggning läggs en role-claim per systemroll in i JWT-token (8 h), och API:t kontrollerar behörighet med tre policies.
Systemroller¶
- Användare (
User) — basrollen. Kan logga in, se och hantera bokningar samt läsa grunddata. - Användarhanterare (
UserManager) — hanterar inloggningar: listar användare, godkänner/avvisar registreringar, redigerar användarroller. - Datahanterare (
DataManager) — hanterar grunddata: skapar/uppdaterar platser, byggnader, våningsplan, rum och uppslagslistor samt import/export. - Systemhanterare (
SystemManager) — full behörighet, inklusive borttagning av grunddata (enda rollen som får radera). - Bokningsansvarig (
BookingManager) — får redigera och ta bort bokningar skapade av andra användare. Ger inga andra utökade rättigheter. - Tjänsteanvändare (
ServiceUser) — reserverad för framtida automatik (t.ex. säkerhetskopiering). Används inte av någon policy i nuläget.
Policies¶
| Policy | Systemroller som uppfyller den |
|---|---|
ManageUsers |
UserManager, SystemManager |
ManageData |
DataManager, SystemManager |
ManageSystem |
SystemManager |
Plan [Authorize] utan policy kräver endast giltig JWT (oavsett roll).
Behörighetsmatris (API)¶
| Område | Anonym | Inloggad | ManageUsers |
ManageData |
ManageSystem |
|---|---|---|---|---|---|
POST /api/account/login, /register, /forgot-password |
✓ | ✓ | |||
POST /api/account/change-password, GET /api/account/me |
✓ | ||||
GET /api/account/users, godkänn/avvisa/redigera/ta bort användare |
✓ | ||||
GET /api/bookings |
✓ | ||||
Skapa bokning (POST /api/bookings) — skapare sparas (CreatedByUserId + CreatedByName) |
✓ | ||||
Uppdatera/ta bort bokning — endast skaparen, BookingManager eller SystemManager (övriga får 403) |
(ägare) | ✓¹ | |||
GET /api/userroles/public (endast Id + Namn, för registrering), GET /api/data/schema |
✓ | ✓ | |||
GET /api/rooms, GET /api/userroles |
✓ | ||||
GET byggnader, våningsplan, platser, uppslagslistor |
✓ | ||||
| Skapa/uppdatera rum, byggnader, våningsplan, platser, uppslagslistor | ✓ | ||||
GET /api/data/export, POST /api/data/import |
✓ | ||||
| Skapa/uppdatera/ta bort användarroller | ✓ | ||||
| Ta bort rum, byggnader, våningsplan, platser | ✓ |
Därutöver gäller: kontot måste vara godkänt (IsApproved, annars 403 pendingApproval) och vid tvingat lösenordsbyte (MustChangePassword) måste lösenordet bytas innan systemet kan användas.
¹ BookingManager är ingen policy utan kontrolleras direkt i BookingsController tillsammans med SystemManager. DataManager ger ingen rätt att ändra andra användares bokningar. Skaparens namn visas i bokningsdetaljer och som initialer i kalendervyn (okänd för äldre bokningar utan skapare, system för bokningar skapade av seed-admin).
Användarroller¶
En användarroll är en namnsatt gruppering av användare (t.ex. Musiker, Stämledare) som kan tillhöra en eller flera systemroller. Minst en användarroll måste anges vid registrering. Användarroller (inklusive vilka systemroller de tillhör) hanteras under ManageUsers. Rum kopplas till användarroller via BookableByRoles.
---
title: Salieri - Roller och inloggning
---
erDiagram
direction TB
Användare 1--1 Inloggning : "har en"
Inloggning }|--|{ Användarroll : "har en eller flera"
Användarroll }|--|{ Systemroll : "tillhör en eller flera"
Speciella inloggningar¶
Förutom normala användarinloggningar ovan finns också några specialinloggningar. Detta gäller t.ex. inloggningsuppgifter till Microsoft Azure-portalen där systemet driftas. Dessa inloggningar dokumenteras inte här utan levereras separat till systemägaren.