자동 그룹의 가시성은 어떻게 작동하나요?

자동 그룹의 가시성(visibility)이 어떻게 작동하는지 조금 혼란스럽습니다. 여기서는 단순히 /groups 디렉터리에 대해 이야기하고 있습니다.
2.7.0.beta4의 비교적 새로운 설치 환경에서 확인되는 내용은 다음과 같습니다:

  • 관리자 또는 모더레이터 권한이 있는 사용자가 /groups를 보면 모든 8개의 자동 그룹(admins, moderators, staff, trust_level_[0-4])이 표시됩니다.
  • 관리자나 모더레이터가 아닌 사용자(신뢰 수준에 관계없이)가 /groups를 보면 moderators 그룹만 표시됩니다.

하지만 이 모든 그룹은 동일한 기본 가시성 설정을 가지고 있습니다:

  • 이 그룹을 볼 수 있는 사용자? 로그인한 사용자
  • 이 그룹의 멤버를 볼 수 있는 사용자? 모든 사용자

이것이 의도된 동작 방식인가요? 아니면 이 그룹들의 가시성 파라미터 처리에 문제가 있는 건가요?

코드의 주석에 무슨 일이 일어나고 있는지 설명이 있습니다: “hide automatic groups from all non stuff to de-clutter page.”(페이지를 정리하기 위해 모든 비스태프 사용자에게 자동 그룹을 숨김). 해당 로직은 여기에서 수행됩니다: discourse/app/controllers/groups_controller.rb at main · discourse/discourse · GitHub.

이 코드는 그룹 페이지를 비스태프 사용자가 볼 때 자동 그룹의 가시성 설정을 오버라이드하는 역할을 합니다. 이 경우에만 Moderator(모더레이터) 그룹만 표시됩니다.

이 문제와 직접적인 관련은 없지만, 위에서 공유한 GitHub 링크를 원박스(onebox)로 시도했을 때, 미리보기에서 포맷팅 없이 코드가 그대로 표시되었습니다:

음, 그 점이 상황을 설명해 주네요. 그 코드는 좋은 의도로 작성되었을 것이라고 확신하지만, 다음과 같은 이유로 깨져 있습니다:

  1. 저는 (모더레이터 외에) 다른 자동 그룹이 보이기를 원할 수도 있습니다.
  2. 자동 그룹의 관리 인터페이스에서 모더레이터가 아닌 자동 그룹의 가시성을 설정할 수 있지만, 이 설정은 무시됩니다.

그 코드 블록(그리고 지난 6년간 살아남은 귀여운 오타)을 그냥 삭제하는 것은 꽤 쉬울 것입니다.

필요하다고 생각한다면, 어려운 부분은 자동 그룹의 현재 가시성 설정을 "그룹 소유자"로 변경하는 것입니다. 이렇게 해야 자동 그룹이 강제로 비공개로 설정되던 것에 익숙한 모든 설치 환경에서 의도치 않게 노출되지 않습니다. Discourse가 업그레이드 중에 이러한 변경을 수행하는 어떤 메커니즘이 있는지 모르겠습니다 — 하지만 스키마 변경 시 필요한 종류의 작업이므로, 반드시 어떤 방법이 있을 것입니다.

또한: 가시성 설정에도 불구하고 그룹 카탈로그에서 자동 그룹을 단순히 숨기는 이 동작은 나쁘다. 왜냐하면 visibility_level의 여전히 의미 있는 다른 측면들을 가리기 때문이다. 예를 들어,

  • 관리자 X가 가시성 설정을 시도해 보았는데, 직원 외 사용자는 어떤 설정을 하더라도 그룹 카탈로그에서 trust_level_0을 볼 수 없다는 사실을 깨닫는다.
  • 그래서… 관리자 X는 해당 설정들이 아무런 효과가 없는 것으로 보이기 때문에 visibility_level과 member_visibility_level을 모두 "모두"로 남겨둔다.
  • 익명 사용자 Z가 /groups/trust_level_0으로 이동하여 사이트의 모든 사용자 목록을 가져간다.

관리자 X가 이를 신경 쓰든 말든, 어쨌든 이것이 가능했다는 사실에 놀라울 것이다.

지금까지 몰랐던 무관한 재미있는 사실들

meta.discourse 사용자의 신뢰 수준별 분포:

수준 사용자 수
TL0 45,942
TL1 29,226
TL2 3,620
TL3 124
TL4 102

안녕하세요 mdoggydog :slight_smile:

몇 가지 포인트가 타당하다고 생각됩니다. 예를 들어:

이 부분은 혼란을 줍니다.

제안 사항들을 Contribute > Feature 토픽으로 만들어 주시길 초대합니다 :slight_smile:

완료했습니다!