WordPress Multisite com múltiplas instâncias do Discourse

A documentação para configurar o plugin em uma rede multisite está desatualizada. Esta é uma boa oportunidade para organizar e atualizar o guia instalação e configuração do plugin WP Discourse.

Para usar a funcionalidade de cliente SSO em uma rede multisite, o plugin precisa ser configurado no nível da rede. Isso é feito clicando no link Discourse no seu Painel da Rede:

Na página de rede do Discourse, selecione a opção Habilitar Configuração Multisite. Em seguida, insira sua URL do Discourse, Chave de API e Nome de Usuário de Publicação na seção Configurações de Conexão. Role até o final da página e clique no botão Salvar Opções. Você deverá ver a mensagem “Você está conectado ao Discourse!” no topo da página.

Para usar o Discourse como provedor de SSO para sites na sua rede multisite, role até o final da página de rede do Discourse e selecione a opção Habilitar Cliente SSO. Adicione também uma chave na configuração Chave Secreta do SSO. Salve suas opções novamente.

Agora, vá para o seu site Discourse e copie a chave secreta para a configuração do site sso provider secrets do Discourse. Insira o símbolo * como domínio do provedor de SSO. Após salvar essa configuração, ela deve parecer semelhante a esta:

Agora, selecione a opção enable sso provider no Discourse.

Com essas configurações em vigor, acessar a aba SSO / Cliente SSO do WP Discourse para qualquer site na sua rede deve levar você a uma página semelhante a esta:

Para um teste rápido, selecione as opções Adicionar Link de Login e Sincronizar Usuários Existentes por E-mail. Em seguida, faça logout do seu site WordPress. Você deverá conseguir fazer login novamente clicando no link “Login com Discourse” que será exibido na sua página wp-login.php.

Se você não estiver usando a página de login padrão do WordPress, tente copiar o shortcode [discourse_sso_client] para um post no seu site. Esse shortcode exibe marcação na página apenas para usuários deslogados. Você também pode criar um link de login construindo um link neste formato:

<a href="https://example.com/?discourse_sso=1&redirect_to=https://example.comt/">Log in with Discourse</a>

Isso fará com que o usuário faça login no seu site com o Discourse e, em seguida, seja redirecionado de volta para a página do WordPress definida como valor do parâmetro redirect_to.

Com base na sua depuração, parece que a opção Habilitar Cliente SSO não estava ativada na sua página de Rede do Discourse. Você pode verificar se essa opção está ativada e me informar se ainda estiver tendo problemas?

O código que você encontrou, que estava impedindo o Cliente SSO de funcionar para você, está correto, mas é uma condição mal escrita:

if ( empty( $this->options['sso-client-enabled'] ) || 1 !== intval( $this->options['sso-client-enabled'] ) )

Ele deve ser simplificado para if ( empty( $this->options['sso-client-enabled'] ) ). Esse é o padrão usado em todo o resto do plugin.