Verificando se um usuário está logado no Discourse a partir de outro site

Olá pessoal,

Gostaria de limitar o acesso a certas páginas em nosso site com base se alguém tem uma conta de membro em nosso Discourse privado. Presumivelmente, eu faria isso verificando nessas páginas se o usuário está logado no Discourse no momento.

Acho que a ferramenta certa a usar é: GitHub - discourse/discourse-auth-proxy: Um proxy http que usa o protocolo DiscourseConnect para autenticar usuários

Existe alguma documentação passo a passo para usá-lo?

Posso instalá-lo na mesma DigitalOcean droplet do nosso site Discourse, ou preciso hospedá-lo em outro lugar?

Poderia, por favor, me ajudar a usar o Discourse Auth Proxy?

Tenho o Discourse em um droplet da Digital Ocean e um site em PHP em um servidor separado.

Você pode fazer isso com o DiscourseConnect (com o Discourse funcionando como provedor de autenticação): Use Discourse as an identity provider (SSO, DiscourseConnect).

Ainda não tentei, mas o parâmetro prompt pode ser útil para o seu caso:

  • prompt: Se prompt=none, então a solicitação SSO é tratada como uma solicitação de “apenas verificação”. Se o navegador/dispositivo já estiver logado no Discourse, o Discourse retornará uma resposta SSO bem-sucedida contendo informações de autenticação do usuário, como de costume. Se o navegador/dispositivo não estiver logado, o Discourse não pedirá ao usuário para fazer login e retornará imediatamente uma resposta SSO contendo o parâmetro failed=true em vez de informações do usuário. Isso fornece um mecanismo para consultar se o usuário está logado, sem nunca direcionar o usuário para uma caixa de diálogo de login, caso ele não esteja.
1 curtida

Isso parece promissor, @simon. Eu não tinha percebido que o DiscourseConnect poderia funcionar sem habilitar enable discourse connect, mas aparentemente pode! :thinking:

Vou fazer alguns testes e reportar de volta – obrigado por me colocar nesse caminho!

1 curtida

Fico imaginando se o uso do Discourse como provedor de autenticação é ignorado por causa do nome (DiscourseConnect). Por exemplo, apenas adicionar o termo DiscourseConnect a uma postagem aqui cria um link para o tópico sobre o uso de um site externo como provedor de autenticação para o Discourse. Usar o Discourse como provedor de autenticação é uma das minhas principais justificativas para ter um site Discourse.

Caso ajude, o plugin do WordPress permite que o Discourse funcione como provedor de autenticação. O código relevante está aqui: wp-discourse/lib/sso-client at main · discourse/wp-discourse · GitHub. O código pode ser um pouco complicado demais.

Aqui está uma implementação mais direta para um aplicativo Remix/React: discourse_remix_comments/app/routes/login.tsx at main · scossar/discourse_remix_comments · GitHub. Se você ignorar as coisas de TypeScript, não há muito o que fazer.

3 curtidas

@simon Só queria escrever de volta para agradecer. Acho que sua sugestão anterior é a resposta correta. Tive problemas para implementá-la no meu site, mas o problema parece ser principalmente que é um CMS semi-personalizado com muito código instável atrapalhando.

1 curtida

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