Ban members from certain categories?

Most of our forum is pretty general. However, one part is a “forum game”. If you get caught cheating, you get banned from playing. However, we can’t actually ban them from that specific category … or can we? It’s getting hard to moderate.

EDIT: A workaround, I made a group to store the people suspended from a certain category. However, it would be great if I could natively ban people from certain categories (with the see/create/reply permission options).

1 лайк

I think the only way to do this would be to create a group that includes everyone who is allowed to be in the category.

It would be nice to have a negative category permission available on category security settings, e.g. “Cannot create/reply/see”. But that does not exist now.

2 лайка

This is 100% covered by groups, just remove the cheaters from the game group and they can’t access the category anymore.

3 лайка

So default put everyone in a “game” group, then REMOVE them as they are suspended? Interesting

5 лайков

Извините за некрономанию, но это лучший результат при поиске, а другие темы (ссылки ниже) либо закрыты, либо не так четко отвечают на вопрос.

Следуя логике, изложенной здесь и в схожих темах, кажется, что лучший способ — добавить группу «Все» в определенную группу, а затем исключить из этой группы пользователей, которых вы хотите «заблокировать» в категории, поскольку у нас нет возможности убрать разрешение «просмотр» для групп, можно только добавить.

Это выглядит логично, но предположим, что в вашем инстансе 5000 пользователей: нужно ли добавлять их всех вручную? И обновлять список каждый раз, когда присоединяется новый пользователь? Я не уверен, есть ли какой-то «чит-код» вроде «@все» при добавлении пользователей в группу — похоже, что нет.

Есть ли лучший способ, который я упустил?

Спасибо.

Другие связанные темы:

2 лайка

Правильно… Нет хорошего способа заблокировать кого-то только в одной категории. Это случается нечасто. Обычно, если вы хотите кого-то заблокировать, то делаете это везде. Можно было бы через консоль Rails добавить всех в группу, а затем удалить нужного человека, но это было бы неудобно.

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

3 лайка

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

  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

Общие группы

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

Вы уже посмотрели плагин динамических групп?

2 лайка