Skip to content

Expose role and verification dates, make notifications non-blocking - #2

Merged
goncoolio merged 1 commit into
mainfrom
claude/kit-client-update-deps-q4bkmo
Aug 7, 2026
Merged

goncoolio merged 1 commit into
mainfrom
claude/kit-client-update-deps-q4bkmo

Conversation

@goncoolio

Copy link
Copy Markdown
Owner

Deux correctifs nécessaires pour que kit_client puisse afficher correctement le profil. Ils complètent la PR #1, qui avait déjà repris la majeure partie des endpoints d'authentification.

getOnlyUserData omettait le rôle et les dates de vérification

Le helper ne renvoyait que uuid, nom, prenoms, email, tel, address. Il alimente pourtant la réponse de l'inscription (createNewUser) et celle de la mise à jour de profil (updateUserService).

Le client remplace son état utilisateur par la réponse reçue : role, status, email_verified_at et tel_verified_at étaient donc effacés côté client après une inscription ou une modification de profil — le badge de rôle disparaissait et les badges de vérification devenaient incohérents.

Les deux dates sont ramenées à null lorsqu'elles valent undefined : sur une instance fraîchement créée par User.create, elles ne sont pas encore hydratées et JSON.stringify supprime purement et simplement les clés, si bien que la forme du payload changeait d'un appel à l'autre.

Notifications SMTP bloquantes après une opération déjà enregistrée

confirmEmailService, confirmTelService et confirmPasswordCodeService envoient un email après avoir écrit le changement en base. Un await sendEmail(...) qui lève faisait répondre 502 alors que l'opération avait bien eu lieu :

  • confirmation email/téléphone : le client ne rafraîchissait pas le profil (il ne le fait que sur un 200), son badge restait périmé alors que le compte était vérifié ;
  • réinitialisation de mot de passe : l'utilisateur pouvait croire à un échec et réessayer avec un code déjà consommé.

Ces trois envois passent par un helper sendNotificationEmail qui journalise l'erreur sans la propager. L'inscription était déjà traitée ainsi depuis la PR #1 ; les emails porteurs d'un code (inscription, reset-password, mobile-reset-password) restent bloquants, puisqu'un échec y empêche réellement l'utilisateur de poursuivre.

Vérification

npm test : 84 tests, 6 suites, tous verts (80 existants + 4 ajoutés dans tests/profile-payload.test.js, couvrant la forme du payload et les deux confirmations sous panne SMTP simulée).


Generated by Claude Code

Deux points restants pour que le client puisse afficher correctement le
profil.

getOnlyUserData omettait role, status et les dates de vérification. Ces
champs alimentent le badge de rôle et les badges « Verified » du client,
qui remplace son état par la réponse reçue après une inscription ou une
mise à jour de profil : les omettre les effaçait. Les dates sont
ramenées à null quand elles valent undefined, sinon elles disparaissent
de la réponse JSON sur une instance fraîchement créée et la forme du
payload change d'un appel à l'autre.

Les notifications envoyées après une confirmation d'email, de téléphone
ou une réinitialisation de mot de passe faisaient répondre en erreur si
le SMTP tombait, alors que le changement était déjà écrit en base. Le
client ne rafraîchissait alors pas le profil et son badge restait
périmé, et pour la réinitialisation l'utilisateur pouvait croire à un
échec puis réessayer avec un code déjà consommé. L'inscription avait
déjà été traitée de cette manière, les trois autres suivent. Les emails
porteurs d'un code restent bloquants.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VP7toBNjKohZASo9wF67i4
@goncoolio
goncoolio merged commit 126ebef into main Aug 7, 2026
4 checks passed
@goncoolio
goncoolio deleted the claude/kit-client-update-deps-q4bkmo branch August 17, 2026 00:07
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.

2 participants