Контекст
Я создал сервис SSO для местного хакерспейса, чтобы пользователи могли входить в наш Discourse через систему членства хакерспейса.
Однако некоторые люди могли использовать в системе членства другой адрес электронной почты, чем в Discourse. Поскольку локальный вход отключен при включенном SSO, я хочу, чтобы пользователи могли нажать кнопку «Отправить мне ссылку для входа по электронной почте», чтобы войти в систему, а затем при желании обновить свой адрес электронной почты (или продолжать использовать ссылку для входа — как удобнее).
Цель
Я хочу отправить ссылку для входа пользователю user@domain.co.uk через API.
Как ваш сервис SSO взаимодействует с Discourse? Если вы используете DiscourseConnect, то, как я понимаю, конечная точка /u/email-login будет отключена.
Спасибо за ваш ответ. Да, действительно используется Discourse Connect.
Я тоже так подумал, поэтому отключил Discourse Connect и попытался получить ссылку для входа, но у меня не получилось, и именно так я получил вывод в моём посте выше.
Если получение ссылки по электронной почте отключено при включённом Discourse Connect, мне придётся пересмотреть свой подход к связыванию учётных записей из сервиса SSO системы членства с Discourse.
Самый простой способ, как вы уже отметили, — сопоставление учётных записей по адресу электронной почты. Если это невозможно, мы используем несколько подходов:
Сопоставление пользователей по другому уникальному идентификатору. Вы можете заранее создать ассоциации DiscourseConnect для пользователя через консоль. Это сработает только в том случае, если у вас есть другой идентификатор, который одинаков в Discourse и у провайдера идентификации.
(наиболее распространённый) разрешить пользователям регистрировать новые учётные записи, а затем попросить их написать администратору с просьбой «объединить» новую учётную запись со старой (используя кнопку в нижней части страницы управления пользователем). Это автоматически сопоставит адреса электронной почты и создаст ассоциацию DiscourseConnect.
Вероятно, я выберу подход с объединением аккаунтов.
Было бы здорово, если бы этот процесс можно было выполнить самостоятельно — например, через API, где пользователи могут войти по ссылке из письма, а затем обновить свой адрес электронной почты для синхронизации двух аккаунтов.
Или, возможно, разрешив пользователю аутентифицироваться, предоставив свой адрес электронной почты и пароль от Discourse, а также новый адрес электронной почты.