@RolesAllowed nennt Rollen als Text statt über die Klasse Roles #116

Open
opened 2026-10-19 19:38:25 +00:00 by claude · 0 comments
Collaborator

Aus #45 (Toter Code, Prüfung 03.10.2026) ausgegliedert – kein toter Code, sondern Einheitlichkeit (Olli, 19.10.2026).

Befund

shared/Roles.java beschreibt sich als „die einzige Quelle für Zugriffsprüfungen“ und erklärt, die Konstanten seien auch in @RolesAllowed verwendbar. Im Backend stehen aber (Stand 19.10.2026) 82 @RolesAllowed-Zeilen mit Text-Literalen wie "admin", "poweruser" in 34 Dateien, und nur 6 Zeilen nutzen die Konstanten (CupTableauResource, SubstituteResource, TeamMatchWorkflowResource).

Folge: Ein Tippfehler im Rollennamen fällt dem Compiler nicht auf, und wer eine Rolle umbenennt, muss den Text an 82 Stellen suchen.

Vorschlag

Alle @RolesAllowed auf Roles.ADMIN, Roles.POWERUSER, … umstellen. Rein mechanisch, kein Verhalten ändert sich; die bestehenden Zugriffstests decken es ab. Danach optional eine Prüfung (Test oder ArchUnit-artig), die Literale in @RolesAllowed abweist, damit es so bleibt.

Aus [#45](https://issues.sffs-tt-basel.ch/sffs-tt-basel/sffs-tt-issues/issues/45) (Toter Code, Prüfung 03.10.2026) ausgegliedert – kein toter Code, sondern Einheitlichkeit (Olli, 19.10.2026). ## Befund `shared/Roles.java` beschreibt sich als „die einzige Quelle für Zugriffsprüfungen“ und erklärt, die Konstanten seien auch in `@RolesAllowed` verwendbar. Im Backend stehen aber (Stand 19.10.2026) **82** `@RolesAllowed`-Zeilen mit Text-Literalen wie `"admin"`, `"poweruser"` in **34** Dateien, und nur **6** Zeilen nutzen die Konstanten (`CupTableauResource`, `SubstituteResource`, `TeamMatchWorkflowResource`). Folge: Ein Tippfehler im Rollennamen fällt dem Compiler nicht auf, und wer eine Rolle umbenennt, muss den Text an 82 Stellen suchen. ## Vorschlag Alle `@RolesAllowed` auf `Roles.ADMIN`, `Roles.POWERUSER`, … umstellen. Rein mechanisch, kein Verhalten ändert sich; die bestehenden Zugriffstests decken es ab. Danach optional eine Prüfung (Test oder ArchUnit-artig), die Literale in `@RolesAllowed` abweist, damit es so bleibt.
Sign in to join this conversation.
No description provided.