Я забыл упомянуть, что мы всё ещё хотим разрешить им видеть одну тему в разделе «Последние»: обновлённые Условия использования.
Мне это тоже не очень нравится, но это лучшее, что я могу придумать. Цель — заставить всех пользователей подписать обновлённые Условия использования, придав этому приоритет выше обычного. На странице How to force existing users to accept ToS обсуждалось, что, возможно, поможет Политика Discourse. Однако Политика ничего не принуждает, и из-за важности новых Условий использования нам нужно нечто большее, чем просто синий пузырёк для напоминания пользователям. Несколько лет назад мы разработали плагин, который добавлял участников в группу после принятия ими политики, и это работало для некоторых задач, но я не вижу, как применить это в данном случае.
У нас уже есть довольно сложная система групп и категорий, поэтому мы не можем просто изменить права доступа для каждой категории с «все» на «tos-acceptors». Если бы права доступа к категориям поддерживали булеву логику, возможно, мы могли бы изменить их так, чтобы доступ был только у пользователей, состоящих одновременно в группах «premium-group» и «tos-acceptors». Но такой поддержки нет.
У меня нет чёткого мнения о том, как именно напоминать пользователям. Если бы в политике Discourse была встроенная принудительная проверка, я бы использовал её. Но в данном случае нам нужно больше, чем просто синий пузырёк.
Я также кратко рассматривал вариант перенаправления пользователей с постоянными ссылками, если они не состоят в группе «tos-acceptors». Это всё ещё возможно, если мы сможем добавить идентификатор пользователя или имя пользователя в URL постоянной ссылки в виде параметров запроса. Если мы перенаправим их, например, на Docusign, я могу настроить веб-хук для добавления их в группу «tos-acceptors», чтобы перенаправление прекратилось. Звучит ли это как более хороший план?