Обновление членства в группе с использованием внешней базы данных

Возможно ли создать приватную категорию, доступную только для пользовательской группы, и синхронизировать состав этой группы с внешней базой данных?

Я рассматриваю возможность создания категории на публичном форуме для зеркала частного почтового списка. Состав участников этих двух списков не обязательно совпадает. Для реализации этого потребуется, чтобы Discourse (или отдельный скрипт) добавлял и удалял существующих пользователей Discourse из пользовательской группы в зависимости от того, кто в данный момент является участником почтового списка.

Спасибо.

Это возможно с использованием WordPress в качестве провайдера единого входа (SSO) для Discourse. Вам нужно установить и настроить WordPress, а также ознакомиться с деталями по ссылке Manage group membership in Discourse with WP Discourse SSO.

В таком случае мне пришлось бы установить WordPress исключительно как связующее звено между Mailman и Discourse. Я уверен, что мог бы синхронизировать пользователей между Mailman и WordPress. Но это было бы как стрелять из пушки по воробьям.

Есть ли какие-то более прямые способы?

Спасибо.

Хм, не уверен. Может, у @simon есть какие-то идеи?

Я только что ознакомился со страницей документации API Discourse. Можно получить список пользователей (содержащий имена пользователей), получить пользователя по имени (содержащий группы пользователя), добавить пользователя в группу и удалить пользователя из группы. Думаю, я мог бы регулярно запускать cron-задачу, чтобы убедиться, что в приватной группе Discourse состоят только текущие подписчики списка рассылки Mailman.

Это уже было реализовано?

Я бы порекомендовал что-то вроде такого API-решения. Мне неизвестно о готовом решении для интеграции Mailman с Discourse. Если вы управляете сервером Mailman, вы можете добавить там хуки для добавления/удаления пользователей из группы Discourse при изменении статуса их подписки, но, вероятно, проще и почти так же эффективно будет использовать ежедневную задачу cron для синхронизации. В зависимости от количества подписчиков и уровня оттока, можно также пойти ещё более простым путём и просто разрешить пользователям запрашивать доступ к группе или воспользоваться функцией приглашения отдельных пользователей в группу, как описано здесь: Invite users to a group.