Gå till innehållet

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.