Olá. Sou totalmente novo no Discourse. Tenho um aplicativo rodando na AWS que usa o Cognito para autenticação. Quero vincular esse aplicativo ao meu novo fórum hospedado no Discourse. Já dei um bom começo, mas espero que alguém possa fornecer orientação sobre os passos finais para fazer isso.
O objetivo é tornar a experiência de login perfeita entre meu aplicativo e o fórum do Discourse. Portanto:
-
Se um usuário estiver logado no meu aplicativo, quando ele acessar o fórum do Discourse, o Discourse reconhecerá isso e não exigirá um novo login.
-
Da mesma forma, se um usuário acessar primeiro o fórum do Discourse e não estiver logado, o Discourse o redirecionará para a página de login do meu aplicativo (ou para uma interface de login hospedada, se necessário).
O Plugin de Autenticação OpenID Connect parece ser bem adequado para isso. Me inscrevi no Plano Business do Discourse para garantir que posso usar esse plugin.
Segui as instruções fornecidas por @david e fiz o que acredito ser a configuração no lado do Cognito:
-
No Cognito, obtive o “documento de descoberta do OpenID Connect” e o “client ID do OpenID Connect”.
-
Nas configurações do meu Discourse, em openId_Connect, adicionei esses valores e os salvei.
-
Marquei “habilitar autenticação OpenID Connect” e, em “escopo de autorização do OpenID Connect”, inseri “openid email”. Salvei essas configurações.
De acordo com a descrição do plugin, isso deveria estar pronto para uso, correto?
Bem, quando faço login no meu aplicativo e depois vou ao fórum, nada acontece. Apenas mostra a página inicial normal com os botões “inscrever-se” e “entrar”. Espero que ele me faça login automaticamente após verificar com o Cognito, mas não o faz. O que mais preciso fazer?
Além disso, se um usuário chegar ao site do fórum pela primeira vez (sem nunca ter feito login no meu aplicativo), ele não deve ver os botões de inscrição e login do Discourse; em vez disso, deve ver um botão que, ao ser clicado, o redirecionará para a página de login do meu aplicativo. Como adiciono isso?
E, finalmente, os usuários se inscrevem no meu aplicativo e pagam para usar recursos premium. Isso é salvo como atributos personalizados para o usuário no Cognito (há um atributo personalizado que diz “Inscrito” ou não). Apenas usuários inscritos devem poder postar no fórum. Portanto, quando o Discourse verificar com o Cognito para obter as informações do usuário, ele precisa verificar o atributo personalizado do usuário e, apenas se o usuário estiver inscrito, conceder a capacidade de postar. Como faço isso?
Como sou muito novo no Discourse, ficaria muito grato por qualquer informação que alguém tenha sobre qualquer uma dessas perguntas. Obrigado!