OAuth2 + login por e-mail sem formulário de cadastro

Estou construindo um portal de comunidade onde usarei OAuth2 para vincular o provedor ao Discourse. Quero permitir login por e-mail apenas se o e-mail foi convidado para a comunidade (ou seja, não deve haver botão de registro), mas quero permitir todos os logins via OAuth2.

Não consigo resolver isso nas configurações de OAuth2 / Login. É possível? Basicamente, quero substituir as configurações de registro para OAuth2.

Acho que você só precisa ativar apenas por convite. Você já fez isso e não está funcionando como você precisa?

Então, basta ativá-los?

O que você fez e o que não está como você espera?

2 curtidas

Pergunta justa. Esta foi a primeira coisa que tentei. Eis o que acontece (este é o fluxo pós-OAuth):

O próximo passo foi desmarcar “habilitar novos cadastros”:

Não posso postar a imagem (sou um usuário novo aqui), mas diz “Novos cadastros de contas não estão permitidos neste momento.”

Não tenho certeza de quais outras opções existem que resolveriam o problema. Tentei uma infinidade de combinações (não posso listar tudo aqui) e ainda não encontrei um resultado que funcione.

Acho que minha intenção não foi compreendida. Tenho o fluxo de login OAuth2 funcionando normalmente, mas quero mantê-lo habilitado enquanto desabilito os novos cadastros. As configurações de OAuth2 e de cadastro por e-mail parecem estar vinculadas, então não consigo “simplesmente habilitar” o OAuth2 deixando o cadastro por e-mail desabilitado.

O que você deseja que aconteça se alguém que não foi convidado tentar fazer login?

Ah! Você está dizendo que isso é o que uma pessoa vê ao tentar responder a um link de convite?

Você quer aceitar apenas pessoas convidadas. Você quer que essas pessoas sejam obrigadas a fazer login com o Clove. Certo? Isso parece ter acontecido no seu exemplo.

Eu acharia que apenas convites mais desativar todos os tipos de login, exceto o Clove, faria o que você procura. Pessoas sem contas no Discourse veriam o diálogo “apenas convites” que você exibe. Pessoas que foram convidadas deverão conseguir fazer login via OAuth do Clove.

1 curtida

Uma explicação adicional pode ser útil para deixar o objetivo mais claro:

Estou configurando uma comunidade semi-privada com três tipos de usuários: membros da equipe (login por e-mail), usuários do aplicativo (SSO fornecido via OAuth2) e convidados especiais (e-mail, não são usuários do aplicativo). Quero exigir convites para convidados especiais (permitindo que façam login por e-mail), mas tratar os usuários do OAuth2 como “confiáveis”, de modo que não precisem de convite. O motivo é que, se a conta necessária para realizar o OAuth2 com sucesso já existe, isso significa que o usuário é confiável.

Consegui configurar corretamente os logins baseados em e-mail com convites, mas isso interfere nos logins do OAuth2, pois eles também passam a exigir um convite. Não quero que eles precisem ou vejam um convite — eles já têm confiança por possuírem a conta SSO.

Isso ajuda a explicar melhor o problema?

Essa é a parte que estava faltando para mim!

Acho, mas não tenho certeza, que external auth skip create confirm pode ser o que você está procurando. A descrição menciona apenas SSO, mas acho que agora funciona para OAuth também. Ajudava outra pessoa a configurar um site que pula a caixa de diálogo de criação para sua configuração OAuth2 e acho que esse foi o truque.

Vou tentar isso com as outras opções. Aqui estão os resultados:

Apenas convite + pular externo:

Apenas convite, pular externo, desativar login por e-mail:

Parece que esses não funcionarão.

Ah. Sim. Droga. Minha próxima suposição é que você precisaria fazer um fork do plugin oauth2 e fazê-lo substituir a configuração de convite exclusivo.

Obrigado @pfaffman, parece que é isso que acabei de aceitar. Não acho que seja possível no Discourse hospedado, certo? Se não for, talvez eu precise descobrir outra solução para isso.

1 curtida

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