Skip to content

fix(admin): compte créé par l'admin utilisable immédiatement (emailVerified) - #33

Closed
Siruv wants to merge 3 commits into
GMS64260:mainfrom
Siruv:fix/email-verified-compte-admin
Closed

fix(admin): compte créé par l'admin utilisable immédiatement (emailVerified)#33
Siruv wants to merge 3 commits into
GMS64260:mainfrom
Siruv:fix/email-verified-compte-admin

Conversation

@Siruv

@Siruv Siruv commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Fixes #32

Problème

Un compte créé via la route admin POST /api/admin/users ne peut jamais se connecter : la création ne positionne pas emailVerified (défaut Prisma false), sans token de vérification ni email envoyé. authorize() dans src/lib/auth.ts refuse alors la connexion avec « Email non vérifié », et il n'existe aucun moyen de débloquer le compte (le PATCH admin n'accepte pas ce champ). Impasse totale sur une instance auto-hébergée sans SMTP.

Correctif

Backend

  • POST /api/admin/users : le compte est créé avec emailVerified: true (un admin qui crée un compte de ses mains n'a pas besoin de vérification email)
  • PATCH /api/admin/users/[id] : accepte désormais emailVerified ; quand on marque l'email comme vérifié, le token et l'expiration de vérification sont purgés
  • GET /api/admin/users et la page /admin/users exposent emailVerified

UI (admin)

  • Badge « Email vérifié » / « Email non vérifié » dans la colonne Statut de la liste des utilisateurs
  • Action « Marquer l'email comme vérifié » dans le menu de chaque ligne (visible uniquement pour les comptes non vérifiés) — permet de débloquer un compte existant

Signalement honnête de l'échec d'envoi

  • envoyerVerification (src/lib/mail-verification.ts) : sendMail retourne undefined quand le SMTP n'est pas configuré, mais envoyerVerification répondait quand même { envoye: true }. Désormais, si le résultat est falsy, il retourne { envoye: false, cause: 'envoi_impossible' } — l'inscrit ne lit plus « Vérifiez votre email » pour un message qui n'est jamais parti.
  • sendMail (src/lib/mail.ts) n'est PAS modifié (15 appelants dépendent de son comportement actuel).

Validation

  • npx tsc --noEmit : aucune erreur dans les fichiers modifiés (les 16 erreurs restantes sont pré-existantes dans scripts/, cf. PR fix(seed): importer les variétés enrichies et arboricoles au déploiement #31)
  • npm run lint:ci : gate OK, aucune erreur nouvelle
  • npx vitest run : 1550 tests passent ; les 3 échecs restants sont les 2 échecs pré-existants connus sur main (growth-campaign RFC 8058, irrigation-recording synchronize)

Aucun changement de schéma Prisma, aucune migration.

@GMS64260 GMS64260 closed this in 1c081fe Aug 31, 2026
@GMS64260

Copy link
Copy Markdown
Owner

Merci, le constat de l'issue #32 était exact et bloquant. Le correctif arrivé sur main (commit 1c081fe) couvre la même chose que ta PR : emailVerified posé à la création par l'admin, badge d'état et action « Marquer l'email comme vérifié » dans l'écran admin. Il va un cran plus loin sur le cas qui t'a probablement fait tomber dessus : une instance sans SMTP. L'absence de serveur de messagerie devient une erreur explicite distincte d'un refus d'adresse, et l'écran d'inscription dit désormais « demandez l'activation à l'administrateur » au lieu de « réessayez ». Ta remarque sur sendMail qui rendait undefined en silence était le bon fil à tirer. Je ferme la PR au profit de ce correctif, merci encore pour le signalement.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Compte créé par l'admin impossible à utiliser : emailVerified jamais positionné

2 participants