[Bug] Gestionnaire — combo Relais vide / « Aucun relais » dans la modale (GET /relais interdit) #151

Closed
opened 2026-07-17 14:23:59 +00:00 by jmartin · 1 comment
Owner

Contexte

En super admin / admin, la modale « Modifier un Gestionnaire » affiche correctement le Relais principal (ex. Bezons Sud) et la liste déroulante est peuplée.

En gestionnaire (ex. Lucas MOREAU) :

  • la carte liste affiche bien Relais : Bezons Sud
  • à l’ouverture de la modale, le champ Relais affiche « Aucun relais » et la liste n’est pas peuplée
  • impossible d’agir correctement sur le rattachement RPE

Cause probable

GET /relais est restreint aux rôles super_admin et administrateur uniquement :

@Roles(RoleType.SUPER_ADMIN, RoleType.ADMINISTRATEUR)
findAll() // relais.controller.ts

Le front (AdminUserFormDialog._loadRelais) appelle RelaisService.getRelais(). En 403, le catch fait :

  • _relais = []
  • _selectedRelaisId = null ← efface la valeur connue depuis user.relaisId

D’où l’affichage « Aucun relais » alors que la carte a le bon libellé (relaisNom déjà fourni par l’API users/gestionnaires).

Comportement attendu

  • Un gestionnaire peut lister les relais (GET /relais en lecture) pour peupler les combobox
  • À l’ouverture de la modale, le relais actuel reste sélectionné (Bezons Sud)
  • La liste contient au moins les relais actifs (comme en admin)
  • En cas d’échec API, ne pas reset _selectedRelaisId si l’utilisateur a déjà un relaisId / relaisNom (fallback d’affichage)

À trancher (produit)

Un gestionnaire doit-il pouvoir modifier le relais (le sien / celui d’un autre gestionnaire), ou seulement le voir en lecture dans la modale ?

  • Option A : lecture seule du champ Relais pour le rôle gestionnaire
  • Option B : édition autorisée (alignée admin) si droits métier OK

Périmètre

  • Backend : relais.controller.ts — ajouter RoleType.GESTIONNAIRE sur GET (list/get) ; CRUD write peut rester admin-only
  • Frontend : gestionnaires_create.dart — robustesse _loadRelais (ne pas nullifier la sélection sur erreur ; option fallback item depuis initialUser.relaisNom)

Critères d'acceptation

  • Connecté en gestionnaire → ouvrir sa fiche → Relais = valeur réelle (pas « Aucun relais »)
  • Liste déroulante peuplée (au moins le relais courant + actifs)
  • Admin / super admin : pas de régression
  • Lié #150 (combobox RPE fiche AM) : même prérequis GET /relais pour gestionnaire

Milestone

0.1.0

## Contexte En **super admin / admin**, la modale « Modifier un Gestionnaire » affiche correctement le **Relais principal** (ex. Bezons Sud) et la liste déroulante est peuplée. En **gestionnaire** (ex. Lucas MOREAU) : - la **carte** liste affiche bien `Relais : Bezons Sud` - à l’ouverture de la modale, le champ Relais affiche **« Aucun relais »** et la liste n’est **pas peuplée** - impossible d’agir correctement sur le rattachement RPE ## Cause probable `GET /relais` est restreint aux rôles **super_admin** et **administrateur** uniquement : ```ts @Roles(RoleType.SUPER_ADMIN, RoleType.ADMINISTRATEUR) findAll() // relais.controller.ts ``` Le front (`AdminUserFormDialog._loadRelais`) appelle `RelaisService.getRelais()`. En 403, le `catch` fait : - `_relais = []` - **`_selectedRelaisId = null`** ← efface la valeur connue depuis `user.relaisId` D’où l’affichage « Aucun relais » alors que la carte a le bon libellé (`relaisNom` déjà fourni par l’API users/gestionnaires). ## Comportement attendu - [ ] Un **gestionnaire** peut **lister** les relais (`GET /relais` en lecture) pour peupler les combobox - [ ] À l’ouverture de la modale, le relais actuel reste sélectionné (Bezons Sud) - [ ] La liste contient au moins les relais actifs (comme en admin) - [ ] En cas d’échec API, **ne pas** reset `_selectedRelaisId` si l’utilisateur a déjà un `relaisId` / `relaisNom` (fallback d’affichage) ## À trancher (produit) Un gestionnaire doit-il pouvoir **modifier** le relais (le sien / celui d’un autre gestionnaire), ou seulement le **voir** en lecture dans la modale ? - Option A : lecture seule du champ Relais pour le rôle gestionnaire - Option B : édition autorisée (alignée admin) si droits métier OK ## Périmètre - Backend : `relais.controller.ts` — ajouter `RoleType.GESTIONNAIRE` sur `GET` (list/get) ; CRUD write peut rester admin-only - Frontend : `gestionnaires_create.dart` — robustesse `_loadRelais` (ne pas nullifier la sélection sur erreur ; option fallback item depuis `initialUser.relaisNom`) ## Critères d'acceptation - [ ] Connecté en gestionnaire → ouvrir sa fiche → Relais = valeur réelle (pas « Aucun relais ») - [ ] Liste déroulante peuplée (au moins le relais courant + actifs) - [ ] Admin / super admin : pas de régression - [ ] Lié #150 (combobox RPE fiche AM) : même prérequis `GET /relais` pour gestionnaire ## Milestone **0.1.0**
jmartin added this to the 0.1.0 milestone 2026-07-17 14:23:59 +00:00
jmartin added the
bug
frontend
backend
ux
gestionnaire
admin
phase-1
api
v0.1.0
labels 2026-07-17 14:23:59 +00:00
Author
Owner

Livré sur master et déployé : GET /relais autorisé pour gestionnaire + robustesse combo front.

Livré sur **master** et déployé : `GET /relais` autorisé pour gestionnaire + robustesse combo front.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jmartin/petitspas#151
No description provided.