При добавлении групп в категорию можно выбрать опции anonymous_users и logged_in_users, но они не работают.
Разве для этого не нужно включить бета-функцию «Раздельные разрешения для анонимных пользователей и групп зарегистрированных пользователей»?
@martin есть ли у тебя какие-нибудь идеи по этому поводу?
Спасибо за сообщение, посмотрю ![]()
Из вашего ответа в другой теме
Чем больше я об этом думаю, тем больше начинаю беспокоиться.
Что произойдёт, если я добавлю в категорию только anonymous_users и не добавлю logged_in_users?
Что произойдёт, если я добавлю anonymous_users, когда на форуме установлен login_required (требуется вход)?
Кроме того, текущая техническая реализация такова: когда разрешения категории установлены на everyone, в таблице category_groups просто нет записи, а read_restricted установлено в false.
Это очень просто и понятно: если разрешения не заданы, то они определяются глобальными разрешениями форума (настройкой login_required), и никаких дополнительных ограничений не применяется.
Так что внесение этого изменения добавит огромное количество сложности, и станут возможны странные комбинации (можно будет задать anonymous users (анонимные пользователи) и staff (персонал)
)
Мое предложение:
- полностью удалить
anonymous_usersкак опцию для разрешений категории - оставить
everyoneиlogged_in_users - удалить
trust_level_0как опцию, поскольку она равнаlogged_in_users
или альтернативно, но, возможно, менее понятно для менее опытных администраторов:
- удалить
anonymous_usersиlogged_in_usersкак опции для разрешений категории - оставить
everyone(и TL0)
Во всех случаях оставляем everyone. И вам даже не понадобится миграция ![]()
Спасибо за ваши мысли, именно поэтому я не хотел слишком подробно останавливаться на разрешениях категорий в начале, когда речь шла об изменении «для всех» ![]()
Я думаю, что многое из того, что вы здесь говорите, можно просто сделать невозможным. Я уже работаю над некоторыми предварительными системами здесь, с использованием ACL и более удобного интерфейса разрешений в нашем плагине канбан, который мы разрабатываем. Вот пример, мы планируем в конечном итоге изменить разрешения категорий, чтобы использовать это:
Здесь задействовано несколько правил, например, невозможно предоставить анонимным пользователям права менеджера для канбан-доски и так далее, и даже поддерживаются обязательные разрешения, например, администраторы всегда могут управлять доской.
Мы сделаем так, чтобы нельзя было добавлять анонимных пользователей, когда на форуме требуется вход.
Снова еще одна валидация/ограничение, которое мы можем добавить.
Мы также можем добавить валидации/предупреждения для такого рода вещей.
Именно этого я хочу избежать, таких неявных разрешений, которые повсюду в Discourse, вместо того чтобы явно всегда настраивать вошедших в систему пользователей + анонимных пользователей для категории, если она публичная/не ограничена для чтения.
В любом случае, пока я не хочу углубляться в это, до того как я займусь категориями, еще есть путь. Но я согласен, что исходная проблема — это баг, который нужно исправить в промежуточный период, поэтому я все равно это сделаю.
Учитывая ту другую проблему, я лично не рекомендую использовать подобную логику. Что произойдет, если я изменю настройки форума, чтобы требовать вход в систему, когда анонимные пользователи уже есть в списке разрешений? И наоборот? Это превратится в кошмар, и для администраторов это будет непонятно.
Я очень осторожно отношусь к такой сложности.
Опять же, много хороших моментов, здесь есть над чем подумать, и эта тема непростая. Я обязательно буду учитывать опыт администраторов при внесении изменений в категории, здесь много исторического контекста, и я не хочу, чтобы кого-то это застало врасплох. Ничего из этого не будет сделано быстро, потребуется много времени, чтобы тщательно проработать различные сценарии, когда я приступлю к этому проекту.
Мне интересно, почему возможность настраивать параметры для анонимных пользователей, но не для зарегистрированных, является проблемой в контексте прав доступа к категориям, но не в контексте прав, настроенных через параметры сайта/плагина/темы. Простой пример: теперь можно сделать стиль-гайд доступным для анонимных пользователей, не добавляя зарегистрированных. Разве это имеет больше смысла, чем показывать категорию анонимам, но не зарегистрированным пользователям?
Нет, это не имеет смысла, это просто ещё один крайний случай, который нужно обработать… добавлю anonymous_users в disallowed_groups для этого плагина. Кроме того, я очень сомневаюсь, что в сети много сайтов, где этот плагин включён, поэтому пока не слишком беспокоюсь о неправильной конфигурации.
Думаю, я обычно поступаю именно так при работе с подобными настройками. Мы также можем использовать mandatory_values, чтобы убедиться, что определённые группы всегда выбраны, и нельзя оставить только anonymous_users в некоторых местах. Или использовать валидацию настроек, чтобы указать: «нельзя выбрать anonymous_users без хотя бы одной группы аутентифицированных пользователей» и так далее.
Я не понимаю, зачем это нужно. В чём проблема сделать это опцией?
Работает ли это только для настроек сайта или также для компонентов темы?
Пока не работает для компонентов темы, но это возможно. Снова мы немного забегаем вперед.

