Привет! Я интегрирую Discourse с сайтом сообщества, где участники уже могут «блокировать» друг друга. Поэтому, когда участник моего сайта проходит SSO в Discourse, я хотел бы также передавать список заблокированных внешних ID. Думаю, их можно просто добавить в поле «Заглушённые пользователи» на стороне Discourse…
Если это невозможно, то для реализации этой функциональности, похоже, мне придётся настроить вебхук: получив событие user_logged_in от вебхука, я смогу использовать API Discourse, чтобы передать список заглушённых пользователей… правильно ли я понимаю? (Если да: где в API находится этот вызов? Я не смог его найти!)
Да, это звучит отчасти похоже на то, что уже есть у других расширений SSO. Поскольку такая необходимость возникает довольно редко, я пока не решил, стоит ли добавлять это в протокол или нет.
Вебхук будет работать: вы получите уведомление при входе в систему, после чего сможете сделать второй запрос к Discourse, чтобы синхронизировать список через наш API.
Привет, Сэм, да, для моей текущей проблемы я просто буду реагировать на событие вебхука user_logged_in — без проблем. Спасибо за это.
И я понимаю твою позицию относительно того, что можно передавать через SSO. По мере того как я всё глубже интегрирую Discourse со своим сайтом, я всё лучше понимаю, как вы решили реализовать SSO. Сейчас всё работает хорошо, но мне кажется, что было бы интересно объединить все галочки «SSO переопределяет…» в одну общую галочку, например, «SSO управляет всеми атрибутами пользователя» (или что-то в этом роде).
Идея в том, что если я включу эту глобальную галочку SSO, то единственное, с чем мне нужно быть последовательным, это external_id: гарантировать Discourse, что он всегда будет уникальным, всегда идентифицировать одного и того же пользователя и никогда не изменится. Как только это будет настроено, я смогу передавать все нужные поля в запросе SSO и полностью загружать пользователя из своей базы данных.