Я хочу, чтобы учетную запись на моем форуме Discourse могли создавать только зарегистрированные пользователи моего внешнего сайта. Не думаю, что могу использовать SSO API, так как мой сайт не содержит системы аутентификации — там просто регистрация в базе данных SQL.
Могу ли я добавить условие при регистрации, чтобы создать учетную запись могли только пользователи, уже зарегистрированные в моей базе данных SQL (на моем сайте)?
Я не эксперт по Discourse, но есть много способов решить эту задачу, и вот один, который, как мне кажется, может сработать и который я бы попробовал реализовать:
- Требовать одобрение для новых пользователей Discourse.
- Написать скрипт на вашем удалённом сайте или в бессерверной среде, который запрашивает информацию о человеке в вашей базе данных, а затем вызывает API Discourse для одобрения или отклонения нового пользователя.
- Настроить Discourse так, чтобы он отправлял веб-хук вашему скрипту при появлении нового пользователя.
- Настроить тексты в Discourse, чтобы лучше объяснить пользователям, что происходит.
В целом, у Discourse отличные веб-хуки и API, поэтому вы можете использовать их, написав свой собственный скрипт удалённо на любом языке программирования, с которым вам удобно работать.
Если вы готовы написать плагин для Discourse на Ruby, это тоже сработает, но лично я бы не стал этого делать, так как предложенный выше вариант мне кажется проще.
Один из способов решить эту задачу — включить настройки сайта «Только по приглашениям» и «Необходимо одобрение пользователей». При включении этих настроек создавать аккаунты на вашем сайте смогут только те пользователи, которым было отправлено приглашение. Приглашения смогут отправлять только сотрудники, так как настройка «Необходимо одобрение пользователей» запрещает отправку приглашений пользователям, не являющимся сотрудниками.
Затем вы можете извлечь адреса электронной почты из вашей базы данных SQL и добавить их в CSV-файл. Этот файл можно использовать для массовой рассылки приглашений, следуя инструкциям, описанным здесь: Массовая рассылка приглашений пользователям.
Спасибо, Джонатан, за вашу идею.
Я не смог найти API для одобрения или отклонения регистрации.
Спасибо, Саймон.
Проблема в том, что база данных обширна и может обновляться,
При поиске по кодовой базе Discourse на GitHub я обнаружил действие «approve_user», например put "/review/#{reviewable.id}/perform/approve_user.json". Похоже, вам сначала нужно получить объекты reviewables, чтобы получить необходимый id reviewable.