Phantom-Anmeldungen (zwei Benutzer mit demselben Konto nach der Migration)

Hallo, ich habe ein Problem, das bereits vor mehreren Discourse-Updates begonnen hat: Ich erhalte Benachrichtigungen, dass ein neuer Nutzer auf Freigabe wartet, stelle aber fest, dass die Überprüfungsliste leer ist.

Dies tritt nur auf, wenn ein einzelner Nutzer eine Freigabe beantragt. Wenn mehrere Personen warten, kann ich alle bis auf einen in der Liste sehen – einer wird jedoch immer nicht angezeigt.

Mit anderen Worten: Viele Leute konnten sich nicht anmelden.

In einem separaten Thread wurde vorgeschlagen, dass das Multi-Select-Plugin möglicherweise involviert ist und Discourse dazu veranlasst, die Länge der Warteschlange um eins zu erhöhen.

Insgesamt erscheint dies jedoch unwahrscheinlich, da etwas passieren muss, das an manchen Tagen eine Benachrichtigung auslöst und an anderen nicht. Zudem begann das Problem nicht mit der Installation des Plugins, sondern erst einige Monate später. Ich kann dies nur mit einem Discourse-Update in Verbindung bringen, da ich glaube, dass seitdem keine weiteren Plugins installiert oder Änderungen vorgenommen wurden.

Hat dies noch jemand anderes erlebt? Und was könnte die Lösung sein?

Falls es doch möglich ist: @jjaffeux, könnte die Korrektur „FIX: makes value parsing more resilient“, die Sie an diesem Plugin vorgenommen haben, mit diesem Problem zusammenhängen?

Ist dieses Plugin also nur mit der Kernfunktionalität von Discourse verknüpft oder darauf basierend? Mir ist das noch nicht ganz klar.

Hallo – mir ist das ebenfalls nicht ganz klar. Könnte es beides sein?
Das Problem ist nicht bei der ersten Installation des Plugins aufgetreten, sondern begann vor einigen Core-Updates. Falls das Plugin überhaupt eine Rolle spielt, könnte es vielleicht zu einer unbeabsichtigten Interaktion kommen?

Ich kann das Deinstallieren des Plugins leider nicht testen, um zu prüfen, ob das Problem weiterhin besteht, da es missionkritisch ist: Die Überprüfung von Benutzeranmeldungen hängt von den Antworten ab, die die Nutzer nur mit aktivem Plugin geben können (Benutzer müssen Auswahlmöglichkeiten aus einer Dropdown-Liste treffen).

GitHub - procourse/discourse-multiselect-user-field · GitHub sollte eigentlich kein Plugin sein, da es nur JavaScript enthält.

Ich würde zunächst empfehlen, den „schlechten Zustand

1 „Gefällt mir“

Hallo, danke, Sam.

Leider ergeben sich im abgesicherten Modus die gleichen Ergebnisse: Als Reaktion auf eine Benachrichtigung über ausstehende Benutzer fehlt immer noch einer in der Warteschlange zur Überprüfung, selbst wenn ich den Discourse im abgesicherten Modus besuche und alle drei Elemente der Website-Anpassung deaktiviert sind.

Was deutet das an?

Möglicherweise benötigen wir einen Experten für die Prüfungsqueue, der sich dieses Thema ansieht. Ich werde dies markieren, und jemand wird sich in den nächsten Tagen bei Ihnen melden.

Exakte Schritte zur Reproduktion des Problems wären unglaublich hilfreich.

Danke, Sam.
Es ist sehr schwierig, die genauen Schritte zu identifizieren – ich bin mir nicht sicher, was ich getan habe, das ungewöhnlich sein könnte, und ich kann den Beginn des Problems keinem bestimmten Ereignis zuschreiben.

Meiner Meinung nach sind die Hauptverdächtigen entweder ein Discourse-Update oder ein Update des Multi-Select-Plugins von @j.jaffeux am 14. März, um die Werteparsing robuster zu machen.

Das Problem ist, dass neue Anmeldungen so sporadisch sind, dass Wochen vergehen können, ohne dass eine stattfindet, sodass Ursache und Wirkung zeitlich sehr weit auseinanderliegen können.

Können Sie das Problem selbst reproduzieren, indem Sie den Chrome-Inkognito-Modus verwenden und gefälschte Konten erstellen?

Ich denke, ich muss eine funktionierende E-Mail-Adresse angeben, damit eine Bewerbung überhaupt in die Warteschlange gelangt?

Ich habe keine E-Mail-Adressen, die ich nicht bereits für Testzwecke verwendet habe – alle haben bereits Konten.

Wenn du Gmail hast, kannst du die ±Adressierung verwenden … jane+etwas@gmail.com geht an jane@gmail.com.

OK, das war interessant – ich habe versucht, wie oben beschrieben, mein Gmail-Konto zu verwenden. Selbst als ich in einem anderen Browserfenster auf meine Gmail-Webseite gegangen bin und auf die von Discourse generierte Bestätigungs-E-Mail gewartet habe, wurde ich über meine normale Administrator-E-Mail-Adresse über eine neue Anmeldung zur Prüfung informiert (und die Warteschlange war wie zuvor leer). Ich hatte die Adresse falsch eingegeben, daher habe ich die E-Mail nie an mein Gmail-Konto erhalten und konnte nie verifizieren.

Wenn dies kein Zufall ist, werden Administrator-Benachrichtigungen vielleicht zu früh ausgelöst? Das würde jedoch nicht erklären, warum JEDE Benachrichtigung genau eine fehlende Person in der Warteschlange betrifft – vermutlich wird es nicht immer so sein, dass ein Bewerber die E-Mail-Adresse nicht verifiziert, während alle anderen dies tun.

** Bearbeiten

Anschließend habe ich meine Gmail-Adresse in diesem Anmeldefenster im Inkognito-Modus korrigiert und die Bestätigungs-E-Mail erneut gesendet – diese tauchte dann in meinem Gmail-Browserfenster auf. Ich habe dies erfolgreich über die Bestätigungs-URL in einem weiteren Inkognito-Fenster verifiziert. Es wurde keine weitere Benachrichtigung an meine Administrator-E-Mail-Adresse gesendet, daher kann ich nur annehmen, dass die erste Benachrichtigung tatsächlich mit diesem neuen Anmeldeversuch zusammenhing.

In einem weiteren Browserfenster habe ich die Seite erneut im abgesicherten Modus besucht, mich als Administrator angemeldet und dieselbe Warteschlange mit einer Person zur Prüfung gesehen – diesmal war mein neuer Testaccount sichtbar und konnte genehmigt werden.

Trägt dies etwas zur Aufklärung des Problems bei?

Als Nachfassung: Ich habe es erneut versucht und über ein Inkognito-Fenster einen neuen Fake-Account erstellt (diesmal mit korrekter Adresse auf Anhieb). Dieser Versuch verlief wie erwartet erfolgreich. Als ich auf die per E-Mail gesendete Administrator-Benachrichtigung über ein normales Browserfenster reagierte, sah ich den neuen Benutzer in der Warteschlange.

Ich habe den Vorgang wiederholt, diesmal mit einer neuen Anmeldung über ein Standardfenster und der Antwort auf die Benachrichtigung ebenfalls über ein Standardfenster (zu keinem Zeitpunkt Inkognito-Modus oder abgesicherter Modus). Auch hier funktionierte alles wie es sollte. Das Problem (oder vielleicht sogar zwei Probleme – die Benachrichtigung an den Administrator noch vor der E-Mail-Verifizierung durch den Bewerber sowie das Nichterscheinen der unvollständigen oder abgeschlossenen Bewerbung in der Warteschlange) war also auf den ersten Versuch beschränkt.

Ich bin erneut nicht sicher, ob dies viel zur Klarheit beiträgt, aber vielleicht funktionieren nach einem vom System missglückten ersten Anmeldeversuch (der eine phantomhafte Benachrichtigung generierte) nachfolgende Anmeldungen problemlos? Vielleicht kehrt das System nach einer gewissen Zeit ohne weitere Anmeldeaktivitäten wieder in den Fehlermodus zurück?

Hallo @Paul_King

Ich vermute, dass eine Migration, die ich ungefähr zur gleichen Zeit wie den von dir erwähnten Commit hinzugefügt habe, dieses Problem verursacht hat. Dadurch erscheinen einige nicht genehmigte Benutzer so, als befänden sie sich in der Warteschlange für die Prüfung, was zu seltsamen Benachrichtigungen führt.

Kannst du bitte diese Abfrage im Daten-Explorer ausführen, um dies zu bestätigen?

SELECT COUNT(*)
FROM users
INNER JOIN reviewables r ON r.target_id = users.id
WHERE r.type = 'User' AND r.status = 1 AND users.approved = FALSE
1 „Gefällt mir“

Hallo Roman,

ich habe es gerade ausgeführt und, vorausgesetzt, ich habe es richtig gemacht (siehe Screenshot), war die Anzahl null

.

Meine Discourse-Installation zeigt derzeit jedoch ebenfalls keine wartenden Benutzer an.
Ich habe gerade einen weiteren Fake-Account erstellt und die Adresse verifizieren lassen, aber bisher wurde keine Benachrichtigung an meine Administratoren-E-Mail gesendet. Als ich mich erneut als Administrator auf meiner Seite angemeldet habe, habe ich die Abfrage erneut ausgeführt, und die Anzahl war wieder null. Diesmal meldet Discourse jedoch (korrekt), dass ein Benutzer zur Überprüfung wartet

.

Normalerweise sind Benachrichtigungse-Mails für zu überprüfende Benutzer an meine Administratoren-Adresse fast sofort unterwegs, daher bin ich ziemlich sicher, dass diese nie gesendet wurde. Jetzt fast das genaue Gegenteil!

*EDIT – Ich habe gerade eine Benachrichtigung erhalten, dass ZWEI Benutzer zur Überprüfung warten (nach einer uncharakteristischen Verzögerung). Dennoch zeigte das kleine rote Symbol neben dem Hamburger-Menü die Zahl ‘1’, und beim Klicken auf den Wartebereich wurde nur meine eigene einzelne Fake-Anmeldung von oben angezeigt – die ich genehmigt habe, woraufhin Discourse anzeigte, dass keine weiteren Benutzer zur Überprüfung vorhanden sind.

Danach habe ich die Abfrage erneut ausgeführt – und die Anzahl war null.

1 „Gefällt mir“

Entschuldigung, ich habe festgestellt, dass die WHERE-Klausel falsch ist. Sie sollte r.type = 'ReviewableUser' statt User lauten.

Können Sie stattdessen diesen Befehl ausführen?

SELECT COUNT(*)
FROM users
INNER JOIN reviewables r ON r.target_id = users.id
WHERE r.type = 'ReviewableUser' AND r.status = 1 AND users.approved = FALSE
1 „Gefällt mir“

Hallo Roman,
ich habe gerade eine weitere Phantom-Nachricht erhalten. Nach deinem letzten Beitrag habe ich die neue Abfrage ausgeführt – dasselbe Ergebnis: count=0.

Es muss also etwas anderes sein. Ich werde das untersuchen.

3 „Gefällt mir“

Hey @Paul_King,

hättest du vielleicht einen Moment, um zu prüfen, ob auf deiner Seite nicht genehmigte Benutzer vorhanden sind, die keinem überprüfbaren Objekt zugeordnet sind? Ich habe versucht, diesen Fehler nachzustellen, bisher aber ohne Erfolg.

Hier ist eine Abfrage, um das zu prüfen:

SELECT COUNT(*) 
FROM users u
LEFT JOIN reviewables r ON r.target_id = u.id AND r.type = 'ReviewableUser'
WHERE approved = false AND r.id IS NULL

Versuche auch folgendes:

SELECT COUNT(*) FROM users WHERE approved = false AND active = true
1 „Gefällt mir“

Hallo, danke Roman.

Hier ist das Ergebnis der ersten Abfrage:

Ich bin mir nicht sicher, ob es relevant ist, aber es gibt viele Beiträge, die aus einer eingegangenen Yahoo-Gruppe importiert wurden, die der Vorgänger des aktuellen Forums ist. Sie wurden aus Gründen der Kontinuität und Durchsuchbarkeit zusammengeführt. Die Ersteller dieser alten Beiträge (die bis in die frühen 2000er Jahre zurückreichen) haben oft keine Konten im aktuellen Forum.

Die Ergebnisse der zweiten Abfrage unten:

Das war sehr interessant – wie kann jemand ein nicht genehmigtes Konto haben, aber dennoch aktiv sein? Außer wenn ich es als Administrator bin? Wie kann ich die Abfrage anpassen, um diesen Benutzer zu identifizieren?

Das bedeutet lediglich, dass das Konto auf die Genehmigung wartet.

SELECT * FROM users WHERE approved = false AND active = true

Der Benutzername wird ein Link zum Benutzerprofil sein. Nachdem Sie ihn identifiziert haben, könnten Sie mir das created_at-Datum mitteilen? Ich möchte wissen, ob wir um dieses Datum herum etwas geändert haben.