Adicionar links ao Discourse que permitem aos usuários autenticar via SSO ou acessar grupos privados diretamente se já estiverem logados

Tenho um site WordPress que é o provedor de SSO para o Discourse usando o plugin WPDiscourse. O Fórum é público, mas tem alguns grupos privados.

Quando quero adicionar botões que levam os usuários do meu site WordPress a um Grupo privado no Discourse, estou usando a URL de SSO como mencionado aqui, para que os usuários não acabem na página “Oops! Essa página não existe ou é privada.”.

Mas quando os usuários já se autenticaram via SSO no Discourse, e eles voltam e clicam nos mesmos botões, eles chegarão à página de login novamente, mesmo que tenham selecionado a caixa de seleção “Lembre-se de mim” durante o login. Idealmente, eles poderiam navegar livremente para os grupos privados depois de se autenticarem no SSO do Discourse.

Existe uma maneira melhor de configurar isso?
Pensei em adicionar um código à página de Login do WP e verificar se o usuário já fez login no Discourse e, em caso afirmativo, redirecionar para a página no argumento “return_path” na URL. Seria essa a solução alternativa? Se sim, quais funções ou chamadas de API eu poderia usar para alcançá-la?

Obrigado!

1 curtida

Se os usuários já estiverem logados no seu site WordPress, isso não deveria estar acontecendo. Você pode esclarecer se os usuários para os quais isso está acontecendo estão logados no WordPress? Se eles estiverem logados, espera-se que eles sejam redirecionados silenciosamente para o URL do Discourse que você definiu no argumento return_path.

3 curtidas

Olá @rodrigo.braga :slight_smile:

Eu também estou um pouco confuso. Se você puder confirmar o seguinte:

Configuração

O WordPress está configurado como o provedor DiscourseConnect para o Discourse, seguindo as instruções aqui:

Cenário 1

  1. Um usuário está no seu site WordPress e não está logado no WordPress.
  2. O usuário clica em um link no WordPress no formato https://discourse.example.com/session/sso?return_path=/g/private_group
  3. O usuário é solicitado a fazer login no WordPress.
  4. O usuário faz login no WordPress.
  5. O usuário é redirecionado para https://discourse.example.com/g/private_group
  6. O usuário vê private_group porque agora está logado no Discourse via DiscourseConnect e é membro do private_group.

É esse o caso atualmente?

Cenário 2

  1. Um usuário está no seu site WordPress e está logado no WordPress.
  2. O usuário clica em um link no WordPress no formato https://discourse.example.com/session/sso?return_path=/g/private_group
  3. O usuário é solicitado a fazer login no WordPress.

É esse o caso atualmente?

3 curtidas

Obrigado Simon, sim, o usuário está logado no WordPress.

O estranho no meu cenário é que tenho um site WP principal (WPSite1) que é o Provedor DiscourseConnect para o Discourse usando WP Discourse,

Então, tenho um segundo site WP (WPSite2) que sincroniza o banco de dados de usuários com o WPSite1 usando o plugin WP Remote User Synch.

Não sei por que isso interferiria no comportamento esperado que você mencionou, porque quando faço login no WPSite2 e navego para o WPSite1, já estou logado no WPSite1 também.

Mas o que está acontecendo é que, mesmo após o login no WPSite1, que é o Provedor DiscourseConnect, e eu clico em um URL como https://discourse.example.com/session/sso?return_path=/g/private_group, ele me leva ao formulário de login SSO do WP.

1 curtida

Obrigado, Angus,

O Cenário 2 é o caso.
Revisarei as instruções, mas acredito que tudo está configurado corretamente, pois o login SSO funciona, o problema é que a página de login não reconhece que o usuário já está autenticado.

1 curtida

Olá @simon e @angus, obrigado novamente, descobri o que estava errado.

Ao revisar a configuração do DiscourseConnect, notei que a URL do DiscourseConnect estava definida como https://mydomain.org, e olhei as recomendações no plugin Discourse WP, e dizia para usar https://www.mydomain.org… Quando atualizei com www, começou a funcionar como esperado.

Obrigado.

2 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.