Deaktivierte Benutzer werden manchmal nicht deaktiviert

Ich konnte dieses Problem nicht reproduzieren, aber im letzten Monat sind mir zwei Fälle aufgefallen, in denen ein Benutzer angeblich deaktiviert wurde (wie in den Protokollen der Mitarbeiteraktionen zu sehen ist), aber nicht tatsächlich deaktiviert wurde (der Benutzer konnte sich immer noch anmelden).

Zum Beispiel wurde dieser vor 29 Tagen “deaktiviert”, konnte mir aber heute eine private Nachricht senden (die einzigen anderen Mitarbeiteraktionen nach der Deaktivierung sind “E-Mail prüfen”).

Dies ist der andere Fall (ein anderer Mitarbeiter konnte denselben Benutzer 4 Stunden später erneut “deaktivieren”, ohne dass eine vorherige Reaktivierung erfolgte):

Ich verwende 2.9.0.beta9.

Dieses Problem besteht weiterhin (es tritt mehrmals im Monat auf). Ist es anderen auch aufgefallen?

Das ist der Controller-Code

Der StaffActionLogger funktioniert korrekt, aber ich frage mich, ob etwas in der User.deactivate-Methode fehlschlägt.

Was die Fehler gemeinsam haben, ist, dass sie von API-Anfragen stammen. Das verwende ich normalerweise:

PUT https://<MY_SITE>/admin/users/<USER_ID>/deactivate

Api-Username:<ADMIN_USER>
Api-Key:<KEY>

data: {"context":"/admin/users/<USER_ID>/<USER_NAME>"}

Ich erhalte immer “success: OK”

Gibt es noch andere Protokolle, die ich überprüfen oder Dinge, die ich versuchen könnte?

Ich bin auf 2.9.0.beta11

Dies geschieht immer noch sporadisch. Zum Beispiel wurde dieser Benutzer am 23. August ursprünglich „deaktiviert“, aber ich habe gerade bemerkt, dass er noch aktiv war und ihn tatsächlich deaktiviert.

Wie kann ein Benutzer zweimal deaktiviert werden (ohne eine Reaktivierung dazwischen)?

Ich habe eine tägliche Aufgabe, die eine Abfrage ausführt, um diese Situation zu überprüfen. Sie gab gestern nichts zurück und heute nur diesen einen Benutzer. Es scheint also, dass der Benutzer am 23. August korrekt deaktiviert wurde, aber gestern irgendwie reaktiviert wurde (ohne dass dies irgendwo protokolliert wurde).

Ist es möglich, einen Benutzer zu aktivieren (über API oder UI) und keine Spur zu hinterlassen? Ich gehe davon aus, dass dies nur durch direkte Änderung der Datenbank geschehen könnte, was ich sicher nicht getan habe (ich bin der einzige Administrator).

Das kann passieren. Alles, was ein deaktivierter Benutzer tun muss, um sein Konto wieder zu aktivieren, ist, sich auf der Website anzumelden und dann auf den Link in der E-Mail zur Aktivierung zu klicken, die ihm gesendet wird.

Wenn sich ein deaktivierter Benutzer anmeldet, sieht er dieses Modal:

Discourse sendet ihm eine E-Mail mit der Aufforderung „Bestätigen Sie Ihr neues Konto“:

Nachdem der Benutzer auf den Link in der E-Mail geklickt hat, wird er bei Discourse angemeldet.

Das ist seit jeher das Verhalten. Ich glaube nicht, dass es ein Fehler ist, aber ich könnte mich irren. Das Senden einer E-Mail „Bestätigen Sie Ihr neues Konto“ an einen Benutzer, der bereits ein Konto hat, erscheint etwas seltsam.

Bearbeiten: Um das gewünschte Verhalten zu erzielen, möchten Sie den Benutzer wahrscheinlich eher „sperren“ als deaktivieren.

4 „Gefällt mir“

Rätsel gelöst! Danke, Simon. Du kannst diesen Thread schließen.

1 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.