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.
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.
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.
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.
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.