Всем привет! У меня есть сценарий использования, который сейчас поддерживается не очень хорошо: мне нужно отключить email с активацией для приглашённых пользователей — включая пользователей, приглашённых по ссылке.
После того как я создал тему выше, это было реализовано, но только для пользователей, приглашённых по email.
Мой экземпляр Discourse работает только по приглашениям, и я действительно отправляю ссылки-приглашения по email, но не используя встроенную рассылку Discourse. Я генерирую ссылки-приглашения через POST-запрос к /invites/link, сохраняю их во внешней БД, а оттуда отправляю ссылки пользователям. Таким образом, когда пользователи переходят по ссылке, они уже фактически подтвердили свой email, но затем их просят сделать это ещё раз.
Я понимаю, что мой сценарий не особенно распространён, поэтому решил попробовать создать простой плагин, чтобы изменить необходимые части Discourse и заставить всё работать так, как мне нужно.
У меня уже есть набросок, запущенный и работающий, и я добавил настройку сайта (no_activation_enabled). После поиска по основному репозиторию я предположил, что, возможно, редактировать нужно этот файл:
Я не до конца уверен, но, кажется, что условное (если SiteSetting.no_activation_enabled и если пользователя пригласил сотрудник, возможно, invite.invited_by.staff?) изменение active на true в user.attributes могло бы сработать:
user.attributes = {
email: invite.email,
username: available_username,
name: name || available_username,
active: false,
trust_level: SiteSetting.default_invitee_trust_level,
ip_address: ip_address,
registration_ip_address: ip_address
}
Но как мне изменить это из плагина? Входит ли это вообще в возможности плагинов? Или они могут только добавлять что-то, но не изменять? Или мне нужно заменить весь файл invite_redeemer.rb?
Я прошёл введение по созданию плагинов, а также это руководство, но после часов попыток разобраться в коде, включая изучение других плагинов, я чувствую, что бьюсь головой о стену… Так что, если у кого-то есть советы для меня, буду очень благодарен!