FEAT: UI Admin — éditer l'email d'un utilisateur #88

Open
opened 2026-08-12 10:30:06 +02:00 by nonobis · 1 comment
Owner

Contexte

Le dialog « Modifier un utilisateur » (UsersPage.razor) permet déjà nom/thème/langue/rôles/verrouillage/mot de passe, mais l'email est en lecture seule.

État actuel

  • UpdateUserCommand ne transporte que DisplayName, Theme, Language (pas d'email).
  • UsersPage.razor ligne 135 : @_editUser!.Email affiché en texte brut, non éditable.

À faire

  1. Étendre UpdateUserCommand / UpdateUserHandler pour accepter un nouvel email (changement via UserManager.SetEmailAsync/SetUserNameAsync si l'email sert de username).
  2. Ajouter un champ MudTextField email dans le dialog d'édition, pré-rempli.
  3. Valider l'unicité de l'email côté back-end (message détaillé si déjà pris).
  4. Journaliser l'audit User.EmailChanged avec old/new.

Critères d'acceptation

  • L'admin peut changer l'email d'un utilisateur depuis l'UI.
  • Email dupliqué → message d'erreur clair.
  • L'entrée d'audit est créée avec l'ancienne et la nouvelle valeur.

Fichiers concernés

  • src/Heimdall.Application/Users/Commands/UpdateUser/
  • src/Heimdall.Web/Components/Pages/UsersPage.razor
  • src/Heimdall.Web/Services/HeimdallApiClient.cs


Maquette

Maquette

Description

Le dialog « Modifier un utilisateur » gagne un champ email éditable (MudTextField), pré-rempli avec l'email actuel. Validation d'unicité au blur : erreur inline sous le champ si l


Maquette

Maquette

## Contexte Le dialog « Modifier un utilisateur » (`UsersPage.razor`) permet déjà nom/thème/langue/rôles/verrouillage/mot de passe, mais **l'email est en lecture seule**. ## État actuel - `UpdateUserCommand` ne transporte que `DisplayName`, `Theme`, `Language` (pas d'email). - `UsersPage.razor` ligne 135 : `@_editUser!.Email` affiché en texte brut, non éditable. ## À faire 1. Étendre `UpdateUserCommand` / `UpdateUserHandler` pour accepter un nouvel email (changement via `UserManager.SetEmailAsync`/`SetUserNameAsync` si l'email sert de username). 2. Ajouter un champ `MudTextField` email dans le dialog d'édition, pré-rempli. 3. Valider l'unicité de l'email côté back-end (message détaillé si déjà pris). 4. Journaliser l'audit `User.EmailChanged` avec old/new. ## Critères d'acceptation - L'admin peut changer l'email d'un utilisateur depuis l'UI. - Email dupliqué → message d'erreur clair. - L'entrée d'audit est créée avec l'ancienne et la nouvelle valeur. ## Fichiers concernés - `src/Heimdall.Application/Users/Commands/UpdateUser/` - `src/Heimdall.Web/Components/Pages/UsersPage.razor` - `src/Heimdall.Web/Services/HeimdallApiClient.cs` --- --- ## Maquette - **Lien Penpot** : [nonobis-design-system › page admin](https://penpot.tordais.cc/?page=127dfd1c-12b5-80f7-8008-79c8ea073ccc) ![Maquette](https://forgejo.tordais.cc/attachments/ffa26880-c510-49c8-9b82-536690b43801) - [Détails / composants MudBlazor (README)](https://forgejo.tordais.cc/attachments/14f0bb27-6f07-4a37-bd2b-d2538152c5b1) - Statut : maquette appliquée dans Penpot ✓ ## Description Le dialog « Modifier un utilisateur » gagne un champ email éditable (MudTextField), pré-rempli avec l'email actuel. Validation d'unicité au blur : erreur inline sous le champ si l --- ## Maquette - **Lien Penpot** : [nonobis-design-system › page admin](https://penpot.tordais.cc/?page=127dfd1c-12b5-80f7-8008-79c8ea073ccc) ![Maquette](https://forgejo.tordais.cc/attachments/ffa26880-c510-49c8-9b82-536690b43801) - [Détails / composants MudBlazor (README)](https://forgejo.tordais.cc/attachments/14f0bb27-6f07-4a37-bd2b-d2538152c5b1) - Statut : maquette appliquée dans Penpot ✓
Author
Owner

Maquette the-designer intégrée (14/08/2026) :

Maquette the-designer intégrée (14/08/2026) : - Aperçu (PNG) : https://forgejo.tordais.cc/attachments/ffa26880-c510-49c8-9b82-536690b43801 - Détails / composants MudBlazor (README) : https://forgejo.tordais.cc/attachments/14f0bb27-6f07-4a37-bd2b-d2538152c5b1 - Statut : application Penpot différée (plugin MCP non connecté) — maquette locale consultable
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
nonobis/Heimdall#88
No description provided.