Wächter auflösen: Zugangsprüfung im Service mit CurrentUser/Caller und Prüfern in domain/ #152
Labels
No labels
Kind
Bug
Kind
Enhancement
Kind
Maintenance
Priority
P1
Priority
P2
Priority
P3
Status
In Progress
Status
Need More Info
Status
Zur Abnahme
Änderungen Wettspielreglement
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sffs-tt-basel/sffs-tt-issues#152
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Die Zugangsprüfungen sind über Resources und Services verstreut. Bei jedem neuen Weg muss jemand daran denken, die Prüfung selbst aufzurufen. Vergisst er es, kann jeder eingeloggte Nutzer den Weg mit seinem Token direkt aufrufen.
Entschieden (Olli, 21.10.2026):
docs/2026-10-20-service-verantwortlichkeiten.md, Abschnitt „Wächter“ (Z. 220-258). Kurz:CurrentUserinshared/service, eine Instanz je Anfrage, liefert den WertCaller(personId, clubId, isVerband).domain/ohne Datenbank und ohne Login:MatchAccessValidator(heuteCaptainAccessGuard.checkAccess),ClubAccessValidator(heuteClubAccessGuard), einSeasonPhaseValidator(Meldefenster heuteRegistrationWindowGuard, abgeschlossene Saison heuteSeasonResolver.requireWritable, „Saison läuft“ heuteSeasonPhaseRules).@RequireHomeCaptain).Caller.isVerbandstatt Rollenliste, EndungGuardentfällt.Stand heute (25.10.2026,
main67413ac), gezählt: 18 Aufrufe eines Wächters in Resources, 10 in Services (grep -rn "clubAccessGuard\.\|accessGuard\.\|guard\.require" backend/src/main/java). Laut Analyse betrifft der Umbau 66 Endpunkte, die einen Wächter oderSeasonResolveraufrufen.Beim Umbau zu entscheiden: Bekommt jede Service-Operation den
Callerals Parameter (saveOfficials(caller, clubId, request)), oder holt der Service ihn selbst überCurrentUser? Für den Parameter spricht (Gespräch 25.10.):Callerselbst („Spielleiter von Verein 17“), ohne Login. Das Projekt hat kein Werkzeug, um in Service-Tests ein Login vorzutäuschen (keinquarkus-test-security-jwt, kein Mockito).Callerist gar nicht aufrufbar.Was danach wegfallen kann (aus Etappe 5a der URL-Neuordnung): 5a baut für Ämter, Spiellokale und PDF je eine öffentliche innere Schicht ohne Zugangsprüfung (
ClubRegistrationService.writeOfficials,writeHomeVenues,PdfService.renderClubPdf), weil die Service-Tests kein Login haben. Olli hat das am 25.10. als bewusste Lücke hingenommen, sie steht im ADR 0038. Mit diesem Umbau verschwinden die inneren Schichten wieder.Bezug: #122 und der Service-Zuschnitt (gleiches Analyse-Dokument). Login-Schutz ist eine andere Baustelle: #151.