Captain mit Vereinszuordnung kann die Vereinsmeldung seines Vereins ändern #160

Open
opened 2026-10-31 07:32:10 +00:00 by claude · 0 comments
Collaborator

Ein Login mit nur der Rolle Captain, der einem Verein zugeordnet ist, kann bei offenem Meldefenster die Vereinsmeldung seines eigenen Vereins ändern:

  • Ämter speichern (PUT /api/clubs/{club_id}/officials)
  • Spiellokale speichern (PUT /api/clubs/{club_id}/home-venues)
  • Mannschaften speichern und löschen (PUT/POST/DELETE /api/clubs/{club_id}/teams…)

Fremde Vereine erreicht er nicht.

Ursache: ClubAccessGuard.requireAccess prüft nur die Vereinsnummer im Token, nicht die Rolle. Die Spec Vereinsämter und Logins §3 sagt: Rechte am Verein hat der Spielleiter, „Verein des Logins = dieser Verein“. CaptainAccessGuard.requireClubClaim prüft genau das schon (Rolle Spielleiter und Vereinsnummer), ClubAccessGuard lässt die Rolle weg. TeamResource und ClubResource lassen die Rolle Captain auf Klassenebene zu, darum kommt er bis zur Prüfung.

Umfang: In der Dev-DB (Staging-Stand) haben 46 Logins mit nur der Rolle Captain eine Vereinszuordnung (gewollt, Spec Entscheidung 18).

Fix: ClubAccessGuard prüft dieselbe Regel wie requireClubClaim, an einer Stelle. Das Token bleibt unverändert. Test: Captain mit Verein wird abgewiesen.

Gefunden beim zweiten Review des Service-Zuschnitts (31.10.2026).

Ein Login mit nur der Rolle **Captain**, der einem Verein zugeordnet ist, kann bei offenem Meldefenster die Vereinsmeldung **seines eigenen** Vereins ändern: - Ämter speichern (`PUT /api/clubs/{club_id}/officials`) - Spiellokale speichern (`PUT /api/clubs/{club_id}/home-venues`) - Mannschaften speichern und löschen (`PUT`/`POST`/`DELETE /api/clubs/{club_id}/teams…`) Fremde Vereine erreicht er nicht. **Ursache:** `ClubAccessGuard.requireAccess` prüft nur die Vereinsnummer im Token, nicht die Rolle. Die Spec [Vereinsämter und Logins §3](https://forgejo.mydevlab.work/olli/sffs-tt-basel/src/branch/main/docs/superpowers/specs/2026-10-10-vereinsaemter-logins-design.md) sagt: Rechte am Verein hat der Spielleiter, „Verein des Logins = dieser Verein“. `CaptainAccessGuard.requireClubClaim` prüft genau das schon (Rolle Spielleiter **und** Vereinsnummer), `ClubAccessGuard` lässt die Rolle weg. `TeamResource` und `ClubResource` lassen die Rolle Captain auf Klassenebene zu, darum kommt er bis zur Prüfung. **Umfang:** In der Dev-DB (Staging-Stand) haben 46 Logins mit nur der Rolle Captain eine Vereinszuordnung (gewollt, Spec Entscheidung 18). **Fix:** `ClubAccessGuard` prüft dieselbe Regel wie `requireClubClaim`, an einer Stelle. Das Token bleibt unverändert. Test: Captain mit Verein wird abgewiesen. Gefunden beim zweiten Review des Service-Zuschnitts (31.10.2026).
Sign in to join this conversation.
No description provided.