La connexion par e-mail ne fonctionne pas

Je reçois le même message « Le lien par e-mail est trop ancien » que dans ce fil : Email login link is too old

Désolé, ce lien de connexion par e-mail est trop ancien. Cliquez sur le bouton Se connecter et utilisez « J'ai oublié mon mot de passe » pour obtenir un nouveau lien.

Ma configuration est suffisamment différente pour que je pense devoir ouvrir un nouveau fil.

Mon hôte est un VPS Ubuntu 20.04. HAProxy est configuré devant l’installation officielle basée sur Docker. HAProxy gère les certificats SSL, mais Discourse est toujours configuré pour forcer le HTTPS.

J’ai configuré deux sites. Sur l’un, la connexion par e-mail fonctionne parfaitement. Sur l’autre, elle échoue avec cette erreur.

J’ai ajouté la variable d’environnement TZ aux deux conteneurs. Lorsque j’exécute date dans l’un ou l’autre conteneur, ou sur mon serveur, ils renvoient tous la même heure.

J’ai récemment migré d’un serveur à un autre. J’ai simplement copié l’intégralité du répertoire du projet vers le nouveau serveur, puis reconstruit. J’ai rencontré quelques problèmes, mais je ne me souviens plus lesquels ; j’ai fini par tout remettre en place, du moins je le croyais…

Des idées ?

Devrais-je partager mes fichiers de conteneur ?

L’avez-vous essayé avec un autre utilisateur et une autre adresse e-mail ? Y a-t-il une chance que vous consultiez le mauvais e-mail, plus ancien ? J’ai moi-même rencontré ce problème par le passé.

D’accord, un nouvel utilisateur peut donc se connecter via la méthode par e-mail.

Lors du dépannage avec la tâche rake admin:create, j’ai fini par créer un nouvel utilisateur administrateur. Cet utilisateur peut se connecter via un mot de passe.

J’ai pu créer un tout nouveau compte, et ce compte a pu se connecter par e-mail après que j’ai initialement utilisé le mot de passe pour me connecter.

C’est mon utilisateur administrateur original qui pose problème. Je viens de réussir à réinitialiser son mot de passe, ce qui m’a permis de me connecter avec un mot de passe. Après m’être déconnecté, j’ai essayé de me connecter par e-mail. Cela a généré la même erreur qu’auparavant. Lorsque j’ai réessayé de me connecter avec un mot de passe, le système indique : « Vous ne pouvez pas encore vous connecter. Nous avons précédemment envoyé un e-mail d’activation à l’adresse emailaddress. Veuillez suivre les instructions contenues dans cet e-mail pour activer votre compte. »

Si je passe par mon autre utilisateur administrateur pour renvoyer l’e-mail de réinitialisation du mot de passe, je peux répéter le processus et me retrouver au même point.

C’est étrange. On dirait que cet utilisateur se voit attribuer un lien de connexion avec une date d’expiration incorrecte, alors que tous les autres liens sont correctement paramétrés. Existe-t-il une table que je pourrais consulter pour vérifier les données de liens défectueux ?

Y a-t-il un moyen d’activer le débogage ou autre chose pour aider à identifier ce qui se passe ?

D’accord, maintenant je suis encore plus confus. Sur mon utilisateur administrateur d’origine, j’ai réinitialisé le mot de passe à nouveau pour me connecter. Ensuite, j’ai ajouté et confirmé une autre adresse e-mail. Puis je l’ai définie comme principale et j’ai supprimé l’autre. Après cela, je me suis déconnecté et j’ai essayé de me connecter à nouveau via e-mail. Cette fois, cela a fonctionné.

La seule chose à laquelle je peux penser, c’est que l’e-mail qui fonctionne est celui que j’ai cru définir bien plus tôt, lorsque j’ai créé ce site pour la première fois. D’une manière ou d’une autre, dans le cadre du dépannage, il a été modifié pour une autre adresse. Je ne suis toujours pas sûr de savoir pourquoi cela aurait pu provoquer ces erreurs…

Quoi qu’il en soit. Peut-être que mes divagations aideront quelqu’un d’autre plus tard…