카테고리 밴은 지원되지 않지만 플러그인으로 가능한가요?

해당 주제에 대해 기본적으로 그 기능이 필요하다고 여겨지지 않는다는 점을 명시하고 있습니다라는 것을 알고 있으므로, 다시 요청하지는 않겠습니다.

그러나 제 커뮤니티처럼 규모가 큰 커뮤니티에서는 실제로 메인 포럼 안에 더 작은 포럼이 존재하는 사용 사례가 있습니다. 게임 문화의 길드(Clans)를 생각해 보세요.

이러한 하위 커뮤니티는 보드의 주요 규칙을 따르지만, 동시에 특정 추가 규칙과 해당 섹션을 조정하고 이끌어야 하는 전담 팀도 갖추고 있습니다. 하지만 이는 본론에서 약간 벗어난 이야기입니다.

카테고리 модератор(모더레이터)는 사용자 자체에 대해 조치를 취할 수 없고 카테고리에만 조치를 취할 수 있지만, 제 사용 사례에서는 하위 포럼 규칙을 위반한 경우 일부 사용자의 참여를 막을 수 있어야 합니다.

제가 실제로 필요한 것은 핵심 기능에 충분한 세밀함이 있어 카테고리 모더레이터가 특정 사용자의 해당 카테고리 접근을 차단할 수 있는지 여부입니다.

제가 상상하는 방식은 category_id와 user_id를 모두 추가하는 커스텀 테이블이 생성되고, 사용자가 특정 주제나 카테고리에 접근하려고 할 때 해당 테이블도 함께 확인하는 것입니다.

제 생각이 완전히 빗나간 것일까요? 이것이 실현 가능한가요? 소프트웨어 개발에는 충분한 경험이 있지만 Ruby에는 거의 경험이 없어서 Discourse 소스 코드에서 어디를 살펴봐야 할지 정말로 잘 모르겠습니다. :weary:

클랜 카테고리에 속한 멤버만 게시글을 작성할 수 있도록 하고, 카테고리에 포함하고 싶지 않은 사용자는 해당 카테고리에서 제외할 수 있습니다. 이 경우, 카테고리에 포함하고 싶은 모든 사용자가 해당 그룹의 멤버여야 합니다.

토론하기에 아주 좋은 주제입니다.

이 문제를 해결하는 가장 간단한 방법은 신뢰 수준(Trust Level)을 활용하는 것입니다.

"BAN"이 필요한 사용자의 권한을 강등시키고, 해당 카테고리에 높은 신뢰 수준을 요구하도록 설정하면 됩니다.

최근 정확히 같은 상황을 겪었는데, 해당 사용자를 TL 1로 고정하고 카테고리에 TL 2를 요구하도록 설정했습니다. 문제 해결 완료!

저도 똑같이 했습니다. 그리고 아무도 자동으로 TL2보다 높은 권한을 갖지 못하도록 했기 때문에, 정신적으로도 관리 측면에서도 정말 쉽고 복잡한 요소가 없는 해결책이었습니다. 심지어 우아함까지 살짝 느껴졌죠 :wink:

얼굴 몇 년 전, 한 클라이언트를 위해 이 방식을 적용한 적이 있습니다. 신뢰도(Trust levels)는 우리에게 적합하지 않아, 대신 카테고리별 개인 그룹을 생성했습니다. 각 사용자는 자동으로 해당 그룹에 추가되고, 카테고리 관리자는 그룹의 소유자가 되었습니다.

‘밴’은 해당 멤버십을 제거하는 것만으로 가능했기 때문에, 관리자가 할 일은 전혀 없었습니다.

초기 설정에 약간 더 많은 노력이 필요했지만, 이후로는 사실상 아무런 관리가 필요하지 않았습니다.

그런데 그룹이 동적인 경우 어떻게 해야 할까요?

예를 들어, 내 고객 중 한 명은 TL2 이상에게 접근이 가능한 “판매” 카테고리가 있는 포럼을 운영하고 있습니다.
그들은 특정 멤버들이 그곳에서 주제를 생성하는 것을 금지하길 원하지만, 이를 위해 TL2와 동일한 구성원이 5명의 특정 사용자를 제외한 그룹을 복사하고 유지보수해야 합니다.

아마도 같은 방식으로, 특정 기준(예: TL2로 승격된 것 감지?)에 따라 사용자를 그룹으로 배정하고, 필요 시 제거하는 것일 겁니다. TL2가 가입 기준일 뿐이라고 해서, 멤버십을 결정하는 데 TL2 상태에 의존해야 한다는 뜻은 아니죠? 또한 인스턴스 자체 또는 주변에서 무언가를 엔지니어링할 시간과 자원이 있는지에 따라 달라집니다.

제가 모든 상황에 대한 일괄 해결책이라고 제안한 것은 아닙니다. 추가 작업을 원하지 않는다면 해당 사용 사례에는 맞지 않을 수 있지만, 제 클라이언트 사례처럼 인스턴스를 길드/클랜/그 외 무엇으로 분할하는 시나리오에서는 좋은 선택이 될 수 있습니다.

하지만 어차피 인스턴스에서 무언가를 엔지니어링하는 거라면, 카테고리 금지 기능을 갖는 편이 더 낫습니다 :sunglasses:

이렇게 하면 유지보수도 더 쉬워집니다. 50,000명의 사용자를 보유하고 있는데 그중 일부만 예외로 하고 나머지는 모두 카테고리에 접근할 수 있게 해야 한다면, 그 몇 명을 목록으로 추출하는 것이 쉽지 않거든요.

솔직히 말해서, ban은 단순히 배제(exclusion)를 가리키는 다른 표현일 뿐이고, Discourse에는 애초에 배제 권한이라는 개념이 존재하지 않습니다. '포함되지 않음’이 실질적으로 동일한 효과를 내는 상황에서, 배제 권한이 별도로 존재해야 할 필요가 있을까요? 저는 명시적 허용(permit) 모델을 좋아합니다. 이렇게 하면 문제 해결이 훨씬 수월해지거든요.

여전히 가끔 악몽을 꿉니다. 몇 년 전 vBulletin에서 permit/deny 모델을 어떻게든 해결하려던 그 시절을 떠올리면요. 그보다 더 큰 고통과 부채를 경험한 것은 RSOP뿐입니다.

대안 솔루션에 대한 모든 의견에 감사드립니다만, 저는 특정 기술적인 질문을 한 것이지, 제가 파악하려는 것에 대한 타협적인 대안을 요청한 것이 아닙니다 :slight_smile:

네, 필요하다고 생각합니다.

@crius 플러그인으로 구현 가능할 것 같습니다. 클라이언트 측에서는 카테고리 직렬화기(serializer)에서 permissions를 오버라이드하면 꽤 멀리까지 갈 수 있고, 서버 측에서는 NewPostManager.add_handler를 사용해 추가 검사를 넣으면 됩니다.

그룹을 사용하는 것을 고려해 보셨나요? 접근 권한을 위한 2개의 그룹을 가진 카테고리를 만들어 보세요. 1개의 그룹은 카테고리 관리자이고, 다른 하나는 서브포럼의 참여자입니다. 참여자 그룹은 서브포럼 영역에 접근하기 위해 권한 요청을 해야 합니다. 카테고리 관리자 중 일부 또는 전원이 해당 그룹의 소유자입니다. 사용자가 규칙을 위반하여 서브포럼에서 퇴출해야 하는 경우, 참여자 그룹에서 퇴출하고 기간에 대해 다른 카테고리 관리자와 소통하세요.

그렇다면 안타깝게도 플러그인을 후원해야 할 필요가 있을 수 있습니다. 이 경우 크라우드 펀딩 플러그인이 훌륭한 개념이 될 수 있습니다.核心团队은 결국 여러분이 요청한 것과 같은 기능을 추가할 수 있지만, 개발 우선순위 목록에 따라 시간이 걸릴 수 있습니다.

그렇지 않다면, 그룹 제안과 함께 테마 컴포넌트를 사용하여 그룹에서 제외하는 옵션을 추가하는 것이 가능할 수도 있습니다.

정말 제대로 된 질문을 했는지 확신하나요? :slight_smile:

말씀드리고 싶은 것은, 당신의 주된 목표가 한 가지 문제를 해결하는 것이고, 카테고리 BAN은 단지 그 문제에 대한 당신의 미해결된 답변일 뿐이라는 겁니다. 올바른 질문은 *“문제를 X를 어떻게 해결할 수 있으며, 내 선택지는 무엇인가?”*가 되어야 합니다.

TL 또는 사용자 그룹으로 이를 관리할 가능성을 평가해 보았지만, 이는 модератор(관리자)들의 업무량을 증가시킬 것이며, 이는 대규모 커뮤니티에서는 단순히 실현 불가능합니다.

특히 사용자 그룹은 간결한 사용자 경험에 해가 됩니다.

저는 소프트웨어 엔지니어로서 풍부한 경험을 가지고 있으며, 다른 분들도 마찬가지입니다. 그래서 스폰서십을 요청할 필요는 없습니다. 우리는 단순히 Ruby를 사용하지 않기 때문에, 그것이 유일한 지연 요인이 될 것입니다.

어쨌든 의견 주셔서 감사합니다. 이 포럼은 의견이 매우 분분한 경향이 있다는 점은 잘 알고 있지만, 소프트웨어 자체에 대해서는 단순히 "옵션을 제공하라"는 접근 방식을 따르는 것이 더 좋다고 생각합니다. 물론 그 반대편에는 코드 측면에서 추가적인 복잡성이 있게 되겠지만요.

:heart: 몇 가지 통찰을 추가해 주신 @RGJ에게 감사드립니다.