Generierte Einladungslinks mit E-Mail können nicht eingelöst werden

Ich sende eine Anfrage an den API-Endpunkt /invites.json mit folgendem JSON:

{
    "email": "new.member@example.com",
    "skip_email": true,
    "max_redemptions_allowed": 1,
    "expires_at": << aktuelles Datum + 1 Monat >>,
    "group_names": "example_group"
}

Dadurch wird eine gültige Einladung erstellt, deren Link ich dann an den Benutzer weitergebe.

Wenn der Benutzer versucht, die Einladung einzulösen, schlägt dies jedoch unter discourse/app/controllers/invites_controller.rb at main · discourse/discourse · GitHub fehl. Es wird die generische Fehlermeldung invite.error_message ausgegeben, da die Aktualisierung der Datenbank aus irgendeinem Grund nicht funktioniert.

Ich habe versucht, den Code nachzuvollziehen, aber mir ist nichts Offensichtliches aufgefallen.

Hier ist ein Beispiel-Eintrag aus der Tabelle 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

Haben Sie es über die Benutzeroberfläche versucht? Funktioniert es? Wenn ja, was ist der Unterschied zwischen der Anfrage, die die Benutzeroberfläche stellt, und der, die Sie durchgeführt haben?

Gibt es im Verzeichnis /logs auf der Website etwas?

Leider gab es bisher nichts in den Protokollen. Ich habe es noch nicht über die Benutzeroberfläche versucht, werde mich aber darum kümmern.

Übrigens: Gibt es irgendwo einen Beitrag, der beschreibt, wie man ein Patch anwendet oder einen Fork in der Produktion ausführt? Siehe meinen Kommentar hier: Install Discourse for development using Docker - #152 by jessicah.

@sam es scheint, dass dies nur einige Benutzer betrifft und nicht andere, aber ich konnte nicht herausfinden, was der Unterschied ist :-/

Ich würde gerne einen Patch ausführen, der zusätzliche Protokollierung hinzufügt, aber wie im Link in der vorherigen Nachricht erwähnt, kann ich zwar eine Entwicklungsumgebung ausführen, aber nicht in meiner Produktionsinstanz zum Laufen bringen, also weiß ich wirklich nicht, wie ich das debuggen soll :frowning:

Nicht alle Benutzer dürfen Einladungen versenden. Sind Sie sicher, dass der Benutzer, der Einladungen über die API durchführt, über die entsprechende Berechtigung verfügt?

invited_by_id ist 1, auch bekannt als Admin, und wird für alle Einladungen verwendet.

1 „Gefällt mir“

Hallo Jessica,

Unser Einladungscode hat sich seit April enorm verändert. Ich bin neugierig, ob du hier immer noch Probleme feststellst?

cc @dan

2 „Gefällt mir“