Eingeladener gelöschter Benutzer erneut

Wahrscheinlich ein Randfall: Beim Testen eines API-Endpunkts (/invites.json) lief zunächst alles reibungslos. Nachdem ich den eingeladenen Benutzer gelöscht habe, erhalte ich nun eine 422-Antwort von diesem Endpunkt. Im Data Explorer sehe ich, dass der Benutzer nicht mehr existiert, aber die Einladung ist weiterhin in der invites-Tabelle aufgeführt.

Ist es möglich, einen Benutzer mit einer E-Mail-Adresse einzuladen, die zuvor gelöscht wurde?

4 „Gefällt mir“

Hallo, willkommen! Zur Klärung: Hat der eingeladene Nutzer die Einladung angenommen bzw. sein Konto erstellt, bevor Sie ihn gelöscht haben?

1 „Gefällt mir“

Danke! Ja, ich habe die Einladung angenommen und dann das Konto gelöscht.

1 „Gefällt mir“

Okay, ich konnte den von dir beschriebenen Vorgang nicht reproduzieren, es sei denn, ich habe etwas bezüglich dessen, was du erreichen möchtest, missverstanden (das ist durchaus möglich). Es könnte helfen, wenn du erklärst, was du erwartet hast zu sehen, im Vergleich zu dem, was du tatsächlich siehst.

Ich verwende jedoch:

Version: 2.7.0beta7
Betriebssystem: Ubuntu 20.04.1 LTS

Und ich habe Folgendes getan:

  • Einen Benutzer mit einer bestimmten E-Mail-Adresse über die Benutzeroberfläche eingeladen (Admin > Benutzer > Einladungen senden)
    • Einladung gesendet und die Option ausgewählt, die Einladung auf eine bestimmte E-Mail-Adresse zu beschränken
  • Die Einladung von der angegebenen E-Mail-Adresse in einem separaten Inkognito-Fenster angenommen
  • Als Admin-Benutzer in meinem ursprünglichen Fenster den neu registrierten Benutzer gelöscht
  • Postman verwendet, um einen GET-Antrag an https://example.dev/u/my-dev-user/invited.json zu senden
    • Ist dies der Endpunkt, den du verwendet hast? Du hast /invites.json erwähnt, aber ich erhalte damit immer eine 404-Fehlermeldung. Ich bin mir nicht ganz sicher, ob dieser Endpunkt existiert.
  • Nach dem Löschen des Benutzers habe ich folgende Antwort erhalten, was ich erwartet habe, da ich den Benutzer gelöscht habe: keine ausstehenden, keine eingelösten und keine abgelaufenen Einladungen:
{
    "invites": [],
    "can_see_invite_details": true,
    "counts": {
        "pending": 0,
        "expired": 0,
        "redeemed": 0,
        "total": 0
    }
}

Das sollte möglich sein – ich habe dieselbe E-Mail-Adresse, die ich oben gelöscht habe, ohne Probleme erneut eingeladen.

2 „Gefällt mir“

Ah, sorry, ich hätte den Endpunkt genauer angeben sollen. Discourse API Docs

Die Schritte, die ich durchgeführt habe:

  • Benutzer über den POST-Endpunkt einladen: Discourse API Docs
  • Die Einladung per E-Mail annehmen
  • Als Administrator anmelden und den Benutzer löschen
  • Versuch, den Benutzer erneut über Schritt 1 einzuladen. Diesmal erhalte ich eine 422-Antwort mit dem Fehler: ```
    {
    “failed”: “FAILED”
    }
2 „Gefällt mir“

Ah, und als Nachtrag: Die Einladung funktioniert über die Admin-Oberfläche, wie Sie beschrieben haben, aber nicht über das POST-Endpunkt, das ich verwende.

1 „Gefällt mir“

Aah, verstanden, jetzt ist es klar – ja, das kann ich jetzt reproduzieren.

Ich kann über die API mit einer POST-Anfrage reguläre Einladungen an brandneue E-Mail-Adressen senden:
Ich erhalte die erwartete Antwort:

ANFRAGE: https://example.dev/invites.json?email=example%2Bsomething@hey.com
TATSÄCHLICHE ANTWORT

{
    "id": 7,
    "invite_key": "inviteKEY",
    "link": "https://example.dev/invites/inviteKEY",
    "email": "example+something@hey.com",
    "emailed": true,
    "custom_message": null,
    "created_at": "2021-04-26T23:57:08.602Z",
    "updated_at": "2021-04-26T23:57:08.602Z",
    "expires_at": "2021-05-26T23:57:08.594Z",
    "expired": false,
    "topics": [],
    "groups": []
}
  • Dann logge ich mich woanders ein und akzeptiere die Einladung für diesen Benutzer.
  • Anschließend logge ich mich wieder als Admin ein und lösche den Benutzer mit der E-Mail: example+something@hey.com
  • Danach sende ich dieselbe POST-Anfrage erneut an die API, um diesen Benutzer erneut einzuladen.

ANFRAGE: https://example.dev/invites.json?email=example%2Bsomething@hey.com
ERWARTETE ANTWORT

{
    "id": 8,
    "invite_key": "newinviteKEY",
    "link": "https://example.dev/invites/newinviteKEY",
    "email": "example+something@hey.com",
    "emailed": true,
    "custom_message": null,
    "created_at": "2021-04-26T23:59:08.602Z",
    "updated_at": "2021-04-26T23:59:08.602Z",
    "expires_at": "2021-05-26T23:59:08.594Z",
    "expired": false,
    "topics": [],
    "groups": []
}

TATSÄCHLICHE ANTWORT

{
    "failed": "FAILED"
}
3 „Gefällt mir“

Ah gut, ich war also nicht der Einzige :slight_smile: Ich bin neu hier. Wird das jetzt als Fehler gemeldet, oder gibt es einen anderen Ort, an dem man das posten kann, z. B. GitHub?

1 „Gefällt mir“

Das sollte, wenn ich das richtig verstehe, als Bericht dienen! Zwischen uns beiden haben wir meiner Meinung nach die Anforderungen für einen Fehlerbericht weitgehend erfüllt.

Und hoffentlich wird uns jemand, der eine Erklärung, eine Workaround-Lösung und/oder eine Korrektur liefern kann, mitteilen, was zu tun ist.

6 „Gefällt mir“

@hcw-rohan @weallwegot Dieser Fehler wurde in #12927 behoben.

Hallo,

ich vermute, dass die Fehlerbehebung entweder rückgängig gemacht wurde oder nicht mehr funktioniert, da ich heute auf diesen Fehler gestoßen bin. Ich habe die folgenden Schritte durchgeführt, um das Problem zu identifizieren:

  • Einen Benutzer im Admin-Bereich gelöscht
  • Den Benutzer über die API eingeladen
  • Fehlermeldung erhalten

  • Ausstehende Einladungen für den gelöschten Benutzer gelöscht
  • Den gelöschten Benutzer erneut über die API eingeladen
  • Erfolgsmeldung erhalten
  • Einladung erhalten, aber beim Klicken darauf erschien die Warnung: „Entschuldigung! Diese Einladung ist nur für neue Benutzer gedacht, die noch kein bestehendes Konto haben.

Hallo Greg,

Ich habe versucht, den Fehler nachzustellen, aber bei mir hat es funktioniert, einen gelöschten Benutzer erneut einzuladen. Ich habe sowohl Einladungen per E-Mail als auch per Link getestet.

Bist du sicher, dass du beim Aufruf der Einladungsseite nicht eingeloggt warst? Es gibt nur einen einzigen Codepfad, der diese Meldung anzeigt, und ich sehe keine offensichtlichen Probleme.