Le modal/pop-up d'inscription ne s'affiche pas pour l'instance privée

Bonjour !

Quelque part lors de la mise à niveau de 2.4.0.beta1 vers 2.4.0.beta2 puis vers 2.4.0.beta4 (je ne suis pas certain de la version exacte), la fenêtre modale d’inscription a cessé de s’afficher pour les nouveaux utilisateurs.

Nous utilisons le plugin OpenID Connect pour authentifier nos utilisateurs. La connexion est requise, les connexions locales sont désactivées et les nouvelles inscriptions sont autorisées. Désactiver l’exigence de connexion ou activer les connexions locales « résout » le problème et les utilisateurs peuvent à nouveau s’inscrire. Cependant, les connexions locales doivent rester désactivées et nous souhaitons que la connexion reste obligatoire.

Le journal OIDC est normal et affiche une réponse d'informations utilisateur récupérée avec les identifiants du nouvel utilisateur, bien qu’aucune fenêtre modale ne s’affiche. J’ai essayé de passer à une installation neuve et de restaurer la sauvegarde, mais le problème persiste. Sans restaurer ma sauvegarde, la fenêtre modale s’affiche, ce qui signifie que quelque chose dans ma sauvegarde provoque ce problème :confused:

Notre version actuelle de Discourse est 2.4.0.beta6, où le problème est également présent.

Avez-vous installé des composants de thème sur le site ? Le problème persiste-t-il en mode sans échec ?

Fantastique, vous aviez raison ! La suppression du composant Knowledge Base du thème a fait réapparaître la fenêtre modale ! J’ai évidemment installé ce composant entre l’une de ces mises à jour.

Étrangement, cela ne se produit qu’après avoir restauré la sauvegarde ; une installation propre ne présente aucun problème avec le composant activé. Je vais simplement le désactiver, de toute façon, nous ne l’utilisions pas.

Merci pour votre aide !

C’est vraiment étrange. Vous souvenez-vous d’avoir vu des erreurs spécifiques liées à ce composant, par exemple dans la console de développement du navigateur ?

En effet, sous https://<HOST>/logs, je lis ce qui suit : Uncaught TypeError: Cannot read property 'knowledge-base' of undefined

De plus, on observe 8 fois une erreur TypeError: E.idMap(...) is undefined, mais sans aucune mention du composant Knowledge Base. Voici la trace d’appel correspondante (URL : https://<HOST>/assets/application-301651b1c7400a000974a9cecafd44ad3304cf647cf17bcfa7af68e9ed1ac4b7.js, Ligne : 9, Colonne : 20924, Emplacement de la fenêtre : 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

J’ai quelques idées sur ce qui pourrait en être la cause.

Je suis curieux, cependant — aviez-vous des catégories répertoriées dans le paramètre de thème kb categories pendant qu’il était activé ? Je vois un cas dans le code où cela pourrait causer un problème si aucune catégorie n’est sélectionnée.

MODIF : J’ai poussé une correction qui, je pense, pourrait résoudre le problème.

En effet, je n’avais aucune catégorie répertoriée. Mais la fenêtre modale ne s’affiche pas même après en avoir choisi une.
Peut-être lié, ou peut-être tout à fait différent : le paramètre default to kb view n’a aucun effet tant que la catégorie est affichée, et je dois cliquer alternativement sur le bouton KB et le bouton Latest pour activer la vue KB.

edit : J’ai mis à jour le composant et il se comporte désormais comme suit : avec une liste de catégories vide, la fenêtre modale s’affiche :tada:. Cependant, une fois que je choisis une catégorie, la fenêtre modale ne s’affiche plus.

Voyez-vous ces mêmes erreurs dans les journaux ?

Ce qui se passe ici, c’est qu’une route est déclenchée et tente de rechercher le composant de base de connaissances avant qu’il ne soit chargé.

Oui, mais elles ne s’empilent plus ; elles diffèrent à la quatrième ligne de leur backtrace. Les autres lignes ressemblent à celles ci-dessus.

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

J’ai ajouté un autre commit avec des vérifications supplémentaires pour éviter de tenter d’interroger des éléments non initialisés.

Aucune différence, des erreurs TypeError continuent d’apparaître.

J’ai pu corriger ces messages d’erreur spécifiques dans ce commit. Je ne sais pas si cela résout le problème de la modale, mais cela semble lié.

Ça me semble parfait, la fenêtre modale s’affiche maintenant même avec des catégories sélectionnées ! :confetti_ball: