Poweruser kann einem Admin die Admin-Rolle nehmen oder ihn löschen #137

Open
opened 2026-10-24 11:30:13 +00:00 by claude · 0 comments
Collaborator

Ein Poweruser darf einem anderen Benutzer die Admin-Rolle nicht geben (UserService.validate → requireAdminFor, 403). Nehmen kann er sie aber: PUT /api/users/{id} prüft nur die neuen Rollen. Schickt der Poweruser die Rollen eines Admins ohne admin, verliert der Admin die Rolle, solange es nicht der letzte ist. DELETE /api/users/{id} löscht einen Admin ebenfalls ohne Prüfung der Rolle des Aufrufers; geschützt ist nur der letzte Admin.

Erwartet: Einen Admin ändern oder löschen darf nur ein Admin – wie beim Passwort, das seit der URL-Neuordnung Etappe 2 über requireAdminFor(user.roles, …) geschützt ist.

Fundstelle: backend/src/main/java/ch/sffs/tt/shared/service/UserService.java, update (Rollenprüfung nur auf newRoles) und delete.

Gefunden im Gesamt-Review der URL-Neuordnung Etappe 2 (24.10.2026). Bestand schon vorher, nicht Teil der Etappe.

Ein Poweruser darf einem anderen Benutzer die Admin-Rolle nicht **geben** (`UserService.validate` → `requireAdminFor`, 403). **Nehmen** kann er sie aber: `PUT /api/users/{id}` prüft nur die *neuen* Rollen. Schickt der Poweruser die Rollen eines Admins ohne `admin`, verliert der Admin die Rolle, solange es nicht der letzte ist. `DELETE /api/users/{id}` löscht einen Admin ebenfalls ohne Prüfung der Rolle des Aufrufers; geschützt ist nur der letzte Admin. **Erwartet:** Einen Admin ändern oder löschen darf nur ein Admin – wie beim Passwort, das seit der URL-Neuordnung Etappe 2 über `requireAdminFor(user.roles, …)` geschützt ist. **Fundstelle:** `backend/src/main/java/ch/sffs/tt/shared/service/UserService.java`, `update` (Rollenprüfung nur auf `newRoles`) und `delete`. Gefunden im Gesamt-Review der URL-Neuordnung Etappe 2 (24.10.2026). Bestand schon vorher, nicht Teil der Etappe.
Sign in to join this conversation.
No description provided.