Anmeldemodal/-popup wird für private Instanz nicht angezeigt

Hallo!

Irgendwo zwischen dem Upgrade von 2.4.0.beta1 über 2.4.0.beta2 auf 2.4.0.beta4 (ich bin mir nicht sicher, bei welchem Upgrade genau) wurde das Registrierungsmodal für neue Benutzer nicht mehr angezeigt.

Wir nutzen das OpenID Connect-Plugin zur Authentifizierung unserer Benutzer. Die Anmeldung ist erforderlich, lokale Anmeldungen sind deaktiviert und neue Registrierungen sind erlaubt. Das Deaktivieren der Anmeldepflicht oder das Aktivieren lokaler Anmeldungen „löst“ das Problem, und Benutzer können sich wieder registrieren. Lokale Anmeldungen sollten jedoch weiterhin deaktiviert bleiben, und wir möchten auch weiterhin eine Anmeldung erzwingen.

Das OIDC-Log ist normal und zeigt eine Fetched userinfo response mit den Anmeldedaten des neuen Benutzers, obwohl kein Modal angezeigt wird. Ich habe versucht, eine frische Installation durchzuführen und das Backup wiederherzustellen, aber das Problem besteht weiterhin. Ohne die Wiederherstellung meines Backups wird das Modal jedoch angezeigt. Es scheint also etwas in meinem Backup zu geben, das dieses Problem verursacht :confused:

Unsere aktuelle Discourse-Version ist 2.4.0.beta6, und das Problem tritt auch hier auf.

Haben Sie Theme-Komponenten auf der Site installiert? Tritt das Problem im Safe-Modus weiterhin auf?

Fantastisch, du hattest recht! Das Entfernen der Knowledge Base-Komponente aus dem Theme hat bewirkt, dass das Modal wieder erscheint! Offensichtlich habe ich die Komponente zwischen einem dieser Updates installiert.

Seltsamerweise gilt dies nur, nachdem ich das Backup wiederhergestellt habe; bei einer sauberen Installation tritt mit der aktivierten Komponente kein solches Problem auf. Ich werde sie einfach deaktivieren, da wir sie ohnehin nicht genutzt haben.

Danke für die Unterstützung!

Das ist wirklich merkwürdig. Erinnern Sie sich an bestimmte Fehler bei dieser Komponente, zum Beispiel in der Entwicklerkonsole des Browsers?

Tatsächlich lese ich unter https://<HOST>/logs Folgendes: Uncaught TypeError: Cannot read property 'knowledge-base' of undefined

Zusätzlich tritt achtmal ein TypeError: E.idMap(...) is undefined auf, jedoch ohne Erwähnung der Knowledge-Base-Komponente. Der dazugehörige Backtrace lautet (URL: https://<HOST>/assets/application-301651b1c7400a000974a9cecafd44ad3304cf647cf17bcfa7af68e9ed1ac4b7.js, Zeile: 9, Spalte: 20924, Fenster-Position: https://<HOST>/login):

findById@https://<HOST>/assets/application-301651b1c7400a000974a9cecafd44ad3304cf647cf17bcfa7af68e9ed1ac4b7.js:9:20924
findByIds/<@https://<HOST>/assets/application-301651b1c7400a000974a9cecafd44ad3304cf647cf17bcfa7af68e9ed1ac4b7.js:9:21063
findByIds@https://<HOST>/assets/application-301651b1c7400a000974a9cecafd44ad3304cf647cf17bcfa7af68e9ed1ac4b7.js:9:21035
initialize/</<@https://<HOST>/theme-javascripts/ce296772003fb6162b99b62bf564066966940cc8.js?__ws=<HOST>:103:48
value/<@https://<HOST>/assets/application-301651b1c7400a000974a9cecafd44ad3304cf647cf17bcfa7af68e9ed1ac4b7.js:14:5447
C@https://<HOST>/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:6:19799
trigger@https://<HOST>/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:9:20668
s/</<@https://<HOST>/assets/application-301651b1c7400a000974a9cecafd44ad3304cf647cf17bcfa7af68e9ed1ac4b7.js:13:31963
y</t.invoke@https://<HOST>/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:16:9739
y</t.flush@https://<HOST>/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:16:8732
b</t.flush@https://<HOST>/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:16:10782
H</n._end@https://<HOST>/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:16:15440
H</n.end@https://<HOST>/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:16:12110
H</n._runExpiredTimers@https://<HOST>/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:16:16800

Ich habe einige Gedanken dazu, was die Ursache dafür sein könnte.

Ich bin aber neugierig – hattest du Kategorien in der Theme-Einstellung kb categories aufgelistet, während es aktiviert war? Ich sehe im Code einen Fall, der zu einem Problem führen könnte, wenn keine Kategorien ausgewählt sind.

EDIT: Ich habe eine Korrektur gepusht, die das Problem möglicherweise behebt.

Tatsächlich hatte ich keine Kategorien aufgelistet. Das Modal wird jedoch auch nicht angezeigt, nachdem ich eine ausgewählt habe.
Vielleicht damit zusammenhängend, vielleicht aber auch etwas völlig anderes: Die Einstellung default to kb view hat keine Wirkung, solange die Kategorie angezeigt wird, und ich muss hin und her zwischen dem KB-Button und dem Latest-Button klicken, um die KB-Ansicht zu aktivieren.

Edit: Ich habe die Komponente aktualisiert, und sie verhält sich nun wie folgt: Bei einer leeren Kategorie-Liste wird das Modal angezeigt :tada:. Sobald ich jedoch eine Kategorie auswähle, wird das Modal nicht mehr angezeigt.

Sehen Sie diese gleichen Fehler in den Logs?

Das Problem besteht darin, dass eine Route ausgelöst wird, die versucht, die Knowledge-Base-Komponente zu laden, bevor sie tatsächlich geladen ist.

Ja, aber sie stapeln sich nicht mehr, sondern unterscheiden sich in der vierten Zeile ihres Backtraces. Die anderen Zeilen sehen wie oben aus.

initialize/<</@https://<HOST>/theme-javascripts/<VARIES>.js?__ws=<HOST>:103:48

Ich habe einen weiteren Commit mit zusätzlichen Prüfungen hinzugefügt, um zu verhindern, dass nach nicht initialisierten Elementen abgefragt wird.

Kein Unterschied, TypeErrors tauchen weiterhin auf.

Ich konnte diese spezifischen Fehlermeldungen in diesem Commit beheben. Ob das das Modal-Problem löst, ist unklar, aber es scheint damit zusammenzuhängen.

Sieht für mich gut aus, das Modal wird jetzt auch bei ausgewählten Kategorien angezeigt! :confetti_ball: