Ban members from certain categories?

AI-generated summary

The discussion revolves around the inability to ban users from specific categories in Discourse, as there is no native feature to restrict access via negative permissions (e.g., ‘cannot see’). Users propose workarounds using groups: adding all users to a category-specific group and removing banned users. However, this becomes impractical with large user bases. Some suggest a plugin or feature allowing dynamic groups with set operations (e.g., AccessGroup - BannedGroup) to simplify access control. dylanh724 highlights the need for a more efficient solution, while kevincox advocates for user-defined automatic groups to manage permissions more flexibly. Moin points to the dynamic groups plugin as a potential solution. tobias eigen and Falco confirm the current group-based workaround, though it’s not ideal.

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개의 좋아요

네크로맨시(오래된 글 되살리기)를 해서 죄송합니다만, 검색 시 이 글이 최상단에 뜨고 다른 관련 주제(아래 링크)는 닫혀 있거나 질문에 대해 명확하지 않아서 이렇게 글을 남깁니다.

여기서 제시된 논리와 유사한 주제들을 참고해 보면, 특정 그룹에 "everyone"을 추가한 뒤, 해당 카테고리에서 "차단"하고 싶은 사용자를 그 그룹에서 제외하는 것이 가장 좋은 방법인 것 같습니다. 그룹에서 “보기” 권한을 제거하는 옵션이 없고, 추가만 가능하기 때문이죠.

이것은 꽤 논리적으로 보이지만, 인스턴스에 5,000명의 사용자가 있다고 가정해 보겠습니다. 그들을 모두 수동으로 추가해야 합니까? 그리고 새 사용자가 가입할 때마다 계속 업데이트해야 하는 건가요? 그룹에 사용자를 추가할 때 “@everyone” 같은 "치트코드"가 있는지 확실하지 않은데, 그런 기능은 없는 것 같습니다.

제가 놓친 더 나은 방법이 있을까요?

감사합니다.

관련 주제:

2개의 좋아요

음.. 특정 카테고리에서 누군가를 BAN하는 좋은 방법은 없습니다. 이런 경우는 자주 발생하지 않거든요. 보통 누군가를 BAN하고 싶다면 모든 곳에서 BAN하는 것이 일반적입니다. Rails 콘솔에서 모든 사람을 그룹에 추가한 후 해당 사람을 제거하는 방법이 있지만, 그렇게 하면 꽤 번거로울 겁니다.

모든 사람을 그룹에 추가하는 플러그인을 만들어 두고, 그 그룹에 포함되지 않기를 원하는 사용자를 사이트 설정에서 지정하는 방식으로 구현할 수도 있습니다.

3개의 좋아요

저도 이 기능이 도입되기를 기대합니다. 저희도 비슷한 상황을 겪고 있습니다.

  1. 특정 그룹에만 접근이 제한된 카테고리가 몇 개 있습니다.
  2. 하지만 이 카테고리에서 특정 사람들을 제외할 수도 있어야 합니다.

음의 카테고리 멤버십(negative category membership)이 있다면 작동할 수 있을 것입니다. 하지만 저는 사용자 정의 자동 그룹(현재의 staff와 같은)을 도입하는 것이 더 강력하고 유연한 해결책이라고 생각합니다. 이러한 그룹은 멤버십을 결정하기 위해 기본적인 집합 연산을 지원할 수 있습니다.

예를 들어 이 기능이 있다면 staff가 특수한 경우일 필요가 없고 단순히 admin + moderators로 정의할 수 있습니다. 이러한 자동 그룹이 생성된 사실은 이 기능이 유용하다는 강력한 힌트이며, 내장 기능이 아닌 일반적 기능으로 확장되어야 한다는 것을 시사합니다.

이를 통해 HasAccess = AccessGroup - BannedGroup이라는 그룹을 만들어 음의 제외(negative exclusion)를 구현할 수 있습니다.

이러한 자동 그룹은 다른 사용 사례에서도 매우 유용할 것입니다. 예를 들어:

직급(Rank) 단계별 접근 권한

현재 저희는 기본적으로 더 작은 규모의 사람들을 포함하는 몇 개의 잠긴 포럼이 있습니다. 다음과 같은 구조입니다:

  • 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개의 좋아요