В нашей кодовой базе исторически существовал запутанный псевдогруппа @everyone, которая могла использоваться для:
- Настроек сайта типа
group_list - Разрешений категорий
- Групп тегов
В некоторых случаях люди интерпретируют @everyone как «все анонимные и все авторизованные пользователи», в то время как другие понимают под этим только «все авторизованные пользователи». В реальности для настроек сайта в большинстве случаев это означает только «все авторизованные пользователи».
Дополнительную путаницу вносит тот факт, что группа @everyone может применяться к настройкам сайта, где предоставление доступа «всем анонимным и авторизованным пользователям» не имеет смысла, например, для pm_tags_allowed_for_groups.
Это также создаёт проблемы с точки зрения управления флагами функций и опыта разработчиков, поскольку для некоторых будущих изменений или других настроек нам может действительно потребоваться включить их для «всех анонимных и авторизованных пользователей».
Решение
Мы внедряем две отдельные автоматические псевдогруппы:
anonymous_users (ID 4)— представляет анонимных пользователей, посещающих ваш сайт без аккаунтаlogged_in_users (ID 5)— представляет всех авторизованных пользователей вашего сайта, по эффекту аналогично автоматической группеtrust_level_0, но более специфично
Эти группы уже добавлены, но начнут действовать только после включения будущего изменения granular_anonymous_and_logged_in_groups_permissions на вашем сайте.
При включении этого будущего изменения любая настройка, где в качестве выбранной группы указан everyone, будет автоматически переведена на ID группы logged_in_users, поэтому данные в таблице настроек сайта не изменятся при переключении будущего изменения. Когда это изменение станет постоянным, мы выполним миграцию данных для всех настроек групп, чтобы внести это изменение.
Кроме того, группа anonymous_users помечена как disallowed_group для нескольких настроек сайта, где её использование не имеет смысла, например, personal_message_enabled_groups.
Конфликты с существующими именами групп обрабатываются автоматически: существующие группы переименовываются, а упоминания групп в постах обновляются.
А что насчёт разрешений для тегов и категорий?
Эти разрешения останутся без изменений, поскольку их концепция «всех» отличается в нескольких аспектах и не зависит от лежащей в основе автоматической группы.


