Ban members from certain categories?

Я бы тоже с радостью увидел это. У нас тоже похожая ситуация.

  1. У нас есть несколько категорий, доступных только определённым группам.
  2. Но нам также нужно иметь возможность исключать из них отдельных пользователей.

Поддержка отрицательного членства в категориях решила бы задачу. Однако, на мой взгляд, более мощным и гибким решением было бы внедрение автоматически создаваемых групп, определяемых пользователем (как это уже реализовано для группы «staff»). Такие группы могли бы поддерживать базовые операции над множествами для определения членства.

Например, с этой функцией группа «staff» не была бы исключением, а просто определялась бы как admin + moderators. Тот факт, что такая автоматическая группа уже создана, является сильным указанием на то, что эта функция полезна и должна быть расширена до общей возможности, а не оставаться встроенным исключением.

С её помощью можно было бы реализовать отрицательное исключение, создав группу HasAccess = AccessGroup - BannedGroup.

Такие автоматические группы были бы очень полезны и для других сценариев. Например:

Увеличивающиеся ранги

В настоящее время у нас есть несколько закрытых форумов, которые в основном охватывают более узкие круги людей. Что-то вроде:

  • Admin = Admin
  • Moderators = Admin + Moderators
  • BetaTeam = Admin + Moderators + Beta
  • Trusted = Admin + Moderators + Beta + Trusted

Необходимость вручную указывать правильный список групп для каждой категории утомительна и чревата ошибками. У нас было много случаев, когда одна из групп отсутствовала в категории, к которой у неё должен был быть доступ. Возможность определять группы таким образом значительно упростила бы управление:

  • ModeratorsOrHigher = Admin + Moderators (это уже реализовано как встроенная автогруппа staff)
  • BetaOrHigher = ModeratorsOrHigher + Beta
  • TrustedOrHigher = BetaOrHigher + Trusted

Общие группы

Также для нас типично наличие нескольких категорий с абсолютно одинаковыми правилами доступа. Это, по сути, более простой случай, чем описанный выше, но было бы удобно создать одну автогруппу и использовать её многократно, вместо того чтобы повторять весь список групп и синхронизировать его во многих категориях.