Les liens d'invitation générés par e-mail ne peuvent pas être échangés

Je poste sur le point de terminaison de l’API /invites.json avec le JSON suivant :

{
    "email": "new.member@example.com",
    "skip_email": true,
    "max_redemptions_allowed": 1,
    "expires_at": << date actuelle + 1 mois >>
    "group_names": "example_group"
}

Cela crée une invitation valide, dont je récupère le lien d’invitation et le fournis à l’utilisateur.

Cependant, lorsque l’utilisateur tente de réclamer l’invitation, cela échoue à discourse/app/controllers/invites_controller.rb at main · discourse/discourse · GitHub avec l’erreur générique invite.error_message due à l’échec de la mise à jour de la base de données pour une raison quelconque.

J’ai essayé de retracer le code, mais je ne vois rien d’évident qui ressorte.

Voici un exemple d’enregistrement dans la table invites :

  id  |            invite_key            |            email             | invited_by_id | user_id | redeemed_at |         created_at         |         updated_at         | deleted_at | deleted_by_id |       invalidated_at       | moderator | custom_message | emailed_status | max_redemptions_allowed | redemption_count |       expires_at
 1587 | 4b4e........................2307 | example@gmail.com            |             1 |         |             | 2021-04-11 23:51:05.253528 | 2021-04-11 23:51:05.253528 |            |               |                            | f         |                |              0 |                       1 |                0 | 2021-05-11 11:51:05.193

Avez-vous essayé de le faire depuis l’interface utilisateur ? Cela fonctionne-t-il ? Si oui, quelle est la différence entre la requête effectuée par l’interface et celle que vous avez faite ?

Y a-t-il des éléments dans /logs sur le site ?

Malheureusement, il n’y a rien dans les journaux. Je n’ai pas encore essayé depuis l’interface utilisateur, je vais m’en occuper.

Au fait, existe-t-il un article quelque part qui explique comment appliquer un correctif ou exécuter un fork en production ? Voir mon commentaire ici : Install Discourse for development using Docker - #152 by jessicah.

@sam il semble que cela ne concerne que certains utilisateurs et pas d’autres, mais je n’ai pas réussi à identifier ce qui est différent :-/

Je pourrais lancer un correctif ajoutant un journalisation supplémentaire, mais selon le lien dans le message précédent, bien que je puisse exécuter un environnement de développement, je ne parviens pas à le faire fonctionner sur mon instance de production. Je ne sais donc pas vraiment comment déboguer :frowning:

Tous les utilisateurs ne sont pas autorisés à inviter. Êtes-vous certain que l’utilisateur effectuant les invitations via l’API dispose de la permission d’invitation ?

invited_by_id est 1, c.-à-d. admin, utilisé pour toutes les invitations.

1 « J'aime »

Bonjour Jessica,

Notre code d’invitation a considérablement changé depuis avril. Je me demandais si vous rencontrez toujours des problèmes de ce côté-là ?

cc @dan

2 « J'aime »