숨겨진 사용자 필드

:information_source: 요약 지정된 그룹에만 표시되는 사용자 필드를 생성합니다
:hammer_and_wrench: 저장소 discourse-hidden-user-fields
:question: 설치 가이드 테마 또는 테마 컴포넌트 설치 방법
:open_book: Discourse 테마를 처음 사용하시나요? Discourse 테마 사용 초보자를 위한 가이드

이 테마 컴포넌트 설치

상세 설명

:warning: 이러한 필드에 민감한 데이터를 사용할 때는 주의가 필요합니다. 필드는 소스에서 찾을 수 없으나, 문제가 발생하면 노출될 수 있습니다. 또한 검색 도구에서 검색 결과가 표시될 수 있습니다. :warning:

derek_test(왼쪽)와 anon9(오른쪽)라는 두 명의 사용자가 있습니다. 두 사용자의 프로필에는 모두 ID 및 Company 필드가 입력되어 있지만, 서로에게 보이는 필드는 하나뿐입니다. derek_test는 ID를 볼 수 있고, anon9는 Company를 볼 수 있습니다.

사용자 프로필

사용자 카드

사용자 디렉터리

이 경우, anon9(오른쪽)는 회사를 볼 수 있고 Acme으로 검색할 수 있습니다.


설정

CleanShot 2025-11-13 at 16.17.43

  • 필드 이름: 사용자 정의 필드 이름 입력 (개체당 하나)
  • 허용된 그룹: 목록에서 허용된 그룹 선택

선행 요구 사항

이 기능은 사용자 정의 필드를 활용합니다. 이 설정은 필드가 어디에 표시될지를 결정합니다:

:warning: 참고: Searchable(검색 가능)은 사이트 전체 검색이 아니라 사용자 디렉터리를 가리킵니다. 이 검색을 통해 일치하는 용어가 여전히 표시됩니다. :warning:

:white_check_mark: 필드가 입력된 후 이 설정을 다시 검토하거나, 미리 권한을 생성하여 이러한 필드가 절대 노출되지 않도록 하세요.

6개의 좋아요

로그인하지 않은 사용자는 무엇을 보게 되나요? 즉, 해당 필드가 관리자만 볼 수 있다면, 사용자가 로그아웃한 후에도 이 필드를 볼 수 없어야 한다고 기대하는 것이 맞나요?


그룹 설정에 텍스트 필드 대신 group_list를 선택한 이유가 있을까요? 그룹을 직접 입력하는 대신 선택할 수 있으므로 그룹을 입력하는 데 좀 더 편리합니다. 다만, ID를 기반으로 작동하므로 코드를 조금 수정해야 합니다. 하지만 그룹 이름을 변경해도 여전히 작동합니다.

1개의 좋아요

좋은 지적입니다. 이 부분을 반영하여 방금 업데이트했습니다. 로그아웃된 사용자는 해당 필드를 볼 수 없음을 확인했습니다.

솔직히 말씀드리자면, 이 부분은 Claude Code를 사용하여 구현했는데, list_type: group은 객체 에디터에서는 사용할 수 없고 최상위 설정에서만 사용 가능하다고 했습니다.

따라서 아래와 같은 형태가 되어야 하지만, 사용 가능한 필드의 수가 고정되어 있습니다.

1개의 좋아요

흥미롭네요. 문서에 따르면 그런 것도 지원할 거라고 기대했거든요

2개의 좋아요

그 부분을 지적해 주셔서 감사합니다! 해당 문서를 기반으로 그룹 설정을 수정할 수 있었습니다!

위 세부 정보를 변경 사항에 맞게 업데이트하겠습니다.

2개의 좋아요

음.. 오브젝트 편집기의 설정에서 list_type:group은 받아들이긴 했지만, 다음 오류를 넘어서지 못했어요:

CleanShot 2025-11-13 at 13.52.29

여러 변환을 시도해 보았지만 통과하지 못했습니다. 결론은 "오브젝트 스키마의 groups 유형은 문서화되어 있지만, 프론트엔드에서 UI가 구현되어 있지 않다"는 것입니다.

2개의 좋아요

저도 그 오류를 봤는데, 리셋 버튼을 눌러서 전체 객체 설정을 초기화한 후로는 오류가 다시 발생하지 않았습니다 :woman_shrugging:

지금은 다 잘 작동합니다.

아마 기존 구성에서 설정 유형을 변경하는 것을 싫어했던 것 같습니다.

2개의 좋아요

이건 정말 유용할 것 같네요!

1개의 좋아요

안녕하세요, @putty 님!

몇 가지 문제가 있습니다:

User 그룹에 속하지 않은 모든 사용자에게 사용자 필드를 숨겨야 하는데, 이 설정으로 가능한 것 같습니다.

  1. 해당 그룹에 속하지 않은 사용자 본인도 자신의 계정에서 이 필드를 볼 수 없게 됩니다. 이것이 정상적인가요?
  2. Admin 또는 Moderator가 아닌 다른 사용자는 계속 해당 필드를 볼 수 없게 됩니다.
  3. 참고로, Moderator와 Admin도 이 테마에 의해 숨겨진 필드를 보려면 이 Group에 포함되어야 합니다.

도움 주실 수 있을까요?

알렉세이, 안녕하세요.
좀 더 자세히 설명해 주실 수 있을까요? 문제가 보이지 않습니다. 현재 1번과 2번이 포함되어 있습니다. 요청하신 것이 모드/관리자에게 필드를 숨기는 것도 포함되는 건가요? 참고로, 필드는 처음에 관리자가 생성해야 합니다.

안녕하세요, 감사합니다!

최근 최신 GitHub 저장소 클론과 최신 빌드를 사용한 호스팅 솔루션에서 다시 테스트해 보았습니다. Admin 카테고리만 영향을 받으며, 해당 필드를 볼 수 있도록 권한이 부여된 그룹의 멤버인 경우에만 Hidden 필드를 확인할 수 있습니다. 이전에는 작동하지 않는다고 생각했던 Moderator 접근 권한도 포함됩니다.

해당 상황:

  1. 두 명의 사용자: admin과 Alex_1
  2. 사용자 그룹: L2_verified
  3. 사용자 필드 - Full Name (모든 사용자에게 적용, 모든 항목 On, 검색 가능 Off)
  4. 두 사용자의 이름: Alex Admin과 Alex
  5. 테마 설정:
    • 다음 테마에 구성 요소 포함 (Foundation, Horizon)
    • 필드 이름: Full Name
    • 허용된 그룹: L2_verified

결과:

  1. 두 사용자 모두 L2_verified 멤버가 아님 - 누구도 Full Name 필드를 볼 수 없음 (자신의 Full Name도 포함)
  2. admin이 L2_verified 멤버인 경우 - Alex_1의 Full Name(그리고 자신의 Full Name)을 볼 수 있음
  3. Alex_1이 L2_verified 멤버인 경우 - 자신의 Full Name과 admin의 Full Name을 볼 수 없음
  4. admin 권한을 Alex_1에게 부여한 경우 - 자신의 Full Name과 admin의 Full Name을 모두 볼 수 있음
1개의 좋아요

그러니까… 문제없다는 뜻이죠? ㅎㅎ :sweat_smile:

1개의 좋아요

Gemini 3 Pro High와 함께 제 Antigravity가 근본 원인을 찾았습니다:

근본 원인 식별: 그룹

L2_verified

이 존재하며

Alex_1

이 해당 그룹의 멤버입니다. 그러나 그룹의 **가시성 수준이 **(Staff/Owners only)로 설정되어 있습니다.

이러한 제한적인 설정 때문에 Discourse는 브라우저에게

Alex_1

이 이 그룹의 멤버임을 알리지 않습니다(Staff/Admin이기도 한 경우를 제외하고). 따라서 Theme Component는 목록을 확인하지만

L2_verified

를 찾지 못하고 필드를 숨긴 상태를 유지합니다.

수정 방법:

  1. Groups → L2_verified → Manage → Interaction으로 이동합니다.

  2. **Who can see this group?**을 “Members” 또는 **“Everyone”**으로 변경합니다.

  3. 저장합니다.

  4. Alex_1
    

    (비-관리자)로 새로고침합니다. 이제 정상적으로 작동해야 합니다!

하지만 현재로서는 임시 해결책이 아닙니다 - 우리 그룹 대부분이 모든 사람에게 숨겨져 있거든요:(

안녕하세요 @dereklput님,

훌륭한 컴포넌트를 공유해 주셔서 감사합니다! Discourse에서 사용자 프라이버시를 관리하는 데 훌륭한 기반이 될 것 같습니다.

저는 여러분의 작업을 기반으로 양방향(상호) 가시성에 특화된 포크를 개발했습니다. 저희 전문 커뮤니티에서는 인증된 회원끼리는 서로의 실명 및 비즈니스 데이터를 볼 수 있지만, 일반 대중이나 미인증 사용자에게는 완전히 익명으로 유지되는 “상호 신뢰(Mutual Trust)” 모델이 필요했기 때문입니다.

이 포크의 주요 기능:

  • 상호 논리(Reciprocal Logic): 뷰어와 프로필 소유자 양쪽 모두 인가된 그룹에 속해 있을 때만 해당 필드가 공개됩니다.

  • 관리자 감독: 안전 및 모더레이션 목적을 위해 관리자 및 모더레이터는 항상 전체 가시성을 유지합니다.

  • 자기 가시성: 사용자는 인가된 그룹에 아직 속하지 않은 경우에도 자신의 숨겨진 필드를 항상 볼 수 있어 자신의 프로필을 관리할 수 있습니다.

  • 피어-투-피어 프라이버시: 동일한 수준의 인증을 거치지 않은 사용자에게 자신의 신원을 노출하지 않도록 보장합니다.

로드맵: 향후 업데이트에서 세분화된 그룹 설정을 추가할 계획입니다. 이를 통해 정확히 어떤 그룹이 서로를 볼 수 있는지 정의할 수 있습니다(예: A그룹은 B그룹을 볼 수 있지만, 역은 아님).

현재 문서화를 마무리하고 있으며, Theme Components 카테고리에 대한 전체 액세스 권한을 얻는 대로 이 내용을 별도의 주제에서 독립적인 “고급 프라이버시” 변형으로 게시할 예정입니다.

그동안 이 양방향 논리가 필요하신 분은 아래에서 확인하실 수 있습니다: GitHub: https://github.com/AirVetra/discourse-hidden-user-fields-bidirectional

또한 영감을 주셔서 감사합니다!

1개의 좋아요

이 기능을 사용하시는 분들을 위해 참고사항을 공유드립니다. 이 테마 컴포넌트 대신 다른 경로를 선택하게 되었습니다. 검색 시 용어가 노출되는 것을 발견했는데, 이는 중대한 취약점이었습니다. 'Searchable’은 사이트 검색이 아니라 사용자 디렉토리를 가리킨다는 점을 명확히 추가하겠습니다.

이 컴포넌트를 계속 유지보수할 예정인가요, 아니면 unmaintained 태그를 붙여야 하나요?

1개의 좋아요

unmaintained 태그를 추가해 두겠습니다. 누군가에게 유용할 수 있으니 그대로 두겠지만, 최근 발견한 사실은 저에게는 치명적인 단점이었습니다. 누군가가 더 자세히 살펴볼 충분한 경고라고 생각합니다.

1개의 좋아요