Un lien de vérification qui affichait une erreur en cas de succès
The email-confirm endpoint fired twice per page load and a non-atomic findUnique-then-update made the second call report 'Invalid or already-used token' on success.
Ça disait que ça marchait
Vert, 200, enregistré, « déjà géré » — et faux. Aucune erreur sur laquelle s'appuyer.
Inscrit un compte neuf, ouvert le vrai lien reçu par e-mail dans un vrai navigateur. L'interface affichait « Jeton de vérification d'e-mail invalide ou déjà utilisé » en rouge — mais la base montrait que le compte s'était vérifié correctement. La trace réseau montrait l'endpoint de confirmation qui partait deux fois pour un chargement de page, et le handler n'était pas sûr contre ça : un simple findUnique-puis-update sans atomicité, donc le second appel trouvait légitimement le jeton consommé et rapportait correctement un échec. Du point de vue de l'utilisateur, son compte allait bien et il obtenait une erreur effrayante.
Corrigé des deux côtés. Un ref guard sur le front-end pour que l'effet parte une fois par jeton, et le back-end réécrit en un updateMany atomique avec le match du jeton dans la clause WHERE, pour qu'un seul de deux appelants concurrents puisse le revendiquer — avec « zéro ligne matchée mais déjà vérifié » qui renvoie un succès, pour qu'un vrai doublon soit inoffensif plutôt qu'alarmant.
Ça n'existe qu'à l'intersection d'une bizarrerie de re-render du front-end et d'une fenêtre de course du back-end. Aucune des deux moitiés n'a l'air fausse seule, et je ne l'ai trouvé qu'en cliquant le vrai lien et en regardant la mauvaise chose se produire.