Ajout du joueur responsable
CI - Security, Lint & Tests / validate (push) Canceled after 0s

This commit is contained in:
cedrick2711
2026-09-27 14:25:29 -04:00
parent bd9ed4bdc7
commit 2e5903b131
18 changed files with 795 additions and 14 deletions
+28
View File
@@ -64,6 +64,31 @@ voulue, elle n'est écrite nulle part ailleurs qu'ici.
| Coach | rattaché à l'équipe, par la relation m2m **ou** par la colonne héritée |
| Recruteur, Joueur | toujours faux |
### `can_manage_team_matches(team)`
Plus étroite que `can_manage_this_org_team`, et c'est voulu : elle répond à
« peut-on gérer les matchs et les entraînements de cette équipe ? ».
| Rôle | Règle |
|---|---|
| Président, Gérant | toujours vrai |
| Coach | rattaché à l'équipe (m2m **ou** colonne héritée) |
| Joueur responsable | vrai pour **sa seule** équipe |
| Recruteur, Joueur | faux |
### Le joueur responsable
Un **joueur responsable** est un joueur qu'un **président** désigne, depuis la
page Équipes, sur la ligne de son équipe (étoile à côté du bouton de retrait).
Il peut planifier, modifier et supprimer les **matchs et entraînements** de
cette équipe, et rien d'autre : ni l'effectif, ni les notes, ni le statut
partant/remplaçant, qui restent réservés au personnel.
Le drapeau vit sur `team_players.is_team_representative` (voir
`docs/database-schema.md`). La désignation est la décision du président —
`can_designate_team_representative()`, vrai seulement pour `Admin` — pour
qu'un responsable ne puisse pas se reproduire lui-même.
## Le piège : deux façons d'être rattaché
C'est le point le plus coûteux de tout le modèle d'autorisation, et il est
@@ -117,6 +142,9 @@ contexte de requête.
| `attached_org_teams(user)` | Les équipes auxquelles cette personne est rattachée, quel que soit son rôle |
| `visible_org_teams(user)` | Ce qu'elle a le droit de voir |
| `can_manage_org_team(user, team)` | Peut-elle administrer cette équipe |
| `can_manage_team_matches(user, team)` | Peut-elle gérer les matchs et entraînements de cette équipe |
| `is_team_representative(user, team)` | Est-elle le responsable désigné de cette équipe |
| `representative_org_teams(user)` | Les équipes dont elle est le responsable |
| `coach_player_ids(coach)` | Les joueurs qu'il encadre |
| `coach_can_access_player(coach, id)` | Peut-il lire la fiche de ce joueur |
| `can_manage_player_contract(user, id)` | Peut-elle déposer un contrat pour lui |