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.
Я невероятно опоздал на эту вечеринку, но если вы используете собственную систему единого входа (например, не Google/GitHub и т. д.), то мой план заключается в использовании электронной почты пользователя, но с вставкой +username перед символом @.
Если это кому-то поможет, то таков наш текущий план.
Однако, как это будет работать с SSO?
Мы реализовали собственного провайдера SSO для Discourse — то есть, это система, которая может быть адаптирована для отправки уникального email-адреса в Discourse (например, user@gmail.com заменяется на user+internal_id@gmail.com). Когда пользователь входит в систему, он ничего этого не видит, так как входит в нашу систему SSO, используя своё имя пользователя.
В конечном счёте, это не идеальное решение, поскольку оно не гарантирует доставку писем для всех пользователей, но позволяет избежать реальных конфликтов email-адресов в системах, где email не является уникальным. (К сожалению, конкретное приложение, с которым я работаю, имеет меньше ограничений на имена пользователей, чем Discourse, поэтому конфликты возможны, хотя пока они крайне маловероятны.)
Я считаю, что лучшим долгосрочным решением может стать плагин, который хранит отдельный email-адрес для уведомлений, а SSO передаёт уникальный (возможно, даже фиктивный?) email-адрес и отдельный адрес для уведомлений, который не должен быть уникальным. Пока я не уверен, не нарушит ли это серьёзно работу системы, но примерно 30 минут изучения кода показывают, что это вполне реализуемо, хотя и может быть болезненным решением.