Modal/popup de registro não está aparecendo para instância privada

Olá!

Em algum momento durante a atualização de 2.4.0.beta1 para 2.4.0.beta2 e depois para 2.4.0.beta4 (não tenho certeza em qual atualização exatamente), o modal de registro parou de aparecer para novos usuários.

Usamos o plugin OpenID Connect para autenticar nossos usuários. O login é obrigatório, os logins locais estão desativados e as novas inscrições são permitidas. Desativar a exigência de login ou ativar os logins locais “resolve” o problema e os usuários podem se registrar novamente. No entanto, os logins locais devem permanecer desativados e queremos que o login continue sendo obrigatório.

O log do OIDC está normal e mostra uma Fetched userinfo response com as credenciais do novo usuário, embora nenhum modal apareça. Tentei migrar para uma instalação limpa e restaurar o backup, mas o problema persiste. Sem restaurar meu backup, o modal aparece, então há algo no meu backup que faz esse problema aparecer :confused:

Nossa versão atual do Discourse é 2.4.0.beta6, onde o problema também está presente.

Você tem algum componente de tema instalado no site? O problema persiste no modo seguro?

Fantástico, você estava certo! Remover o componente Base de Conhecimento do tema fez o modal aparecer novamente! Obviamente, instalei o componente entre uma dessas atualizações.

Estranhamente, isso só acontece após restaurar o backup; uma instalação limpa não apresenta esse problema com o componente ativado. Vou apenas desativá-lo, já que não estávamos usando de qualquer forma.

Obrigado pela ajuda!

Isso é realmente peculiar. Você se lembra de ter visto algum erro específico com esse componente, como no console de desenvolvedor do navegador?

De fato, em https://<HOST>/logs, li o seguinte: Uncaught TypeError: Cannot read property 'knowledge-base' of undefined

Além disso, há 8 ocorrências de TypeError: E.idMap(...) is undefined, mas sem menção ao componente Knowledge Base. Ele apresenta o seguinte backtrace (URL: https://<HOST>/assets/application-301651b1c7400a000974a9cecafd44ad3304cf647cf17bcfa7af68e9ed1ac4b7.js, Linha: 9, Coluna: 20924, Localização da Janela: 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

Tenho algumas ideias sobre o que pode estar causando isso.

Mas fiquei curioso: você tinha alguma categoria listada na configuração do tema kb categories enquanto estava ativado? Vejo um caso no código que pode causar um problema se nenhuma categoria estiver selecionada.

EDIT: Enviei uma correção que acho que pode resolver o problema.

De fato, eu não tinha nenhuma categoria listada. Mas o modal não aparece mesmo depois de escolher uma.
Talvez relacionado, mas talvez algo totalmente diferente: a configuração default to kb view não tem efeito enquanto a categoria está sendo exibida, e eu tenho que clicar no botão KB e no botão Latest repetidamente para ativar a visualização do KB.

edição: Atualizei o componente e ele agora se comporta da seguinte forma: Com uma lista de categorias vazia, o modal aparece :tada:. No entanto, assim que escolho uma categoria, o modal não aparece mais.

Você está vendo os mesmos erros nos logs?

O que está acontecendo aqui é que há uma rota sendo acionada que tenta buscar o componente da base de conhecimento antes que ele seja carregado.

Sim, mas eles não se acumulam mais; diferem na quarta linha de seu rastreamento de pilha. As outras linhas parecem como acima.

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

Adicionei outro commit com verificações adicionais para evitar tentar consultar itens não inicializados.

Sem diferença, os TypeErrors continuam aparecendo.

Consegui corrigir essas mensagens de erro específicas neste commit. Não tenho certeza se isso resolve o problema do modal, mas parece estar relacionado.

Parece ótimo para mim, o modal agora aparece mesmo com categorias selecionadas! :confetti_ball: