Is it possible to use Discourse with SSO and email addresses which are not unique?
That means users have multiple accounts with different usernames but same email addresses.
No, emails are unique identifiers for users in Discourse and this is fundamental to all identity in the system.
A work around for many people is to use +addressing, like user+joe@gmail.com, user+pat@gmail.com, and so on. O all email providers support that, but most do.
@pfaffman how exactly is that going to help them there? By disambiguating? That is true, when you have
user@example.com
you could change it to
user+secondary@example.com1
It’s often useful to have multiple accounts, and using +addressing lets you do that without creating multiple email
Addresses.
User+whatever@gmail.com will get delivered to user@gmail.com. User@gmail.com1 won’t let them create an account.
Oh, but SSO was the point of this thread, so it’s not clear that my solution will help here. They’d still need to make every email address unique, one way or another.
Cheguei incrivelmente atrasado a essa festa, mas se você estiver usando seu próprio sistema de SSO (por exemplo, não Google/GitHub/etc), meu plano é usar o e-mail do usuário, mas inserir um +nome de usuário antes do @.
Caso isso seja útil para alguém, esse é nosso plano atual.
Mas, novamente, como isso funcionaria com SSO?
Implementamos nosso próprio provedor de SSO do Discourse — ou seja, é esse sistema que pode ser adaptado para enviar um e-mail exclusivo ao Discourse. (Por exemplo, user@gmail.com é substituído por user+internal_id@gmail.com). Quando um usuário faz login, ele não vê nada disso, pois acessa nosso sistema de SSO usando seu nome de usuário.
No final das contas, isso não é perfeito, pois nem todos recebem e-mails dessa forma, mas evita conflitos reais de e-mail em sistemas onde o e-mail não é único. (Infelizmente, o aplicativo específico com o qual estou trabalhando tem menos restrições para nomes de usuário do que o Discourse, então conflitos são possíveis, embora, até agora, muito improváveis.)
Acredito que a melhor solução a longo prazo seja ter um plugin que armazene um endereço de e-mail separado para notificações, e que o SSO envie um e-mail exclusivo (possivelmente até mesmo falsificado?) e outro para notificações que não precise ser único. Ainda não tenho certeza se isso quebraria seriamente o sistema, mas cerca de 30 minutos de análise rápida do código sugerem que é plausível, embora não seja uma solução indolor.