특정 배지를 가진 사용자의 사용자 이름 표시 안 함

특정 배지를 가진 사용자 목록을 숨기는 방법이 있을까요?

Don't list members having the same badges 와 Hide badge user list? 를 확인해 보았지만, 우리의 사용 사례(또는 아마도 우리의 특수한 경우)에 정확히 맞지 않습니다.

배지는 우리 커뮤니티에서 매우 인기가 있으며, 참여도를 높이는 데 훌륭한 자원입니다.

우리의 Discourse에는 구독자/유료 회원만 접근할 수 있는 프리미엄 카테고리가 있습니다. 우리는 이러한 유료 회원에게 프로필에 금색 배지, 예를 들어 이 예에서는 "Extra Special Member"라고 부르자,를 부여하여 보상하고 싶습니다.

유료 회원의 수는 상업적으로 민감한 정보입니다.

배지 페이지에서는 숨겨져 있지만, “Extra Special Member” 배지를 가진 사람은 자신의 배지를 클릭하기만 하면 해당 배지를 가진 다른 모든 회원들을 볼 수 있으므로, 그 수는 배지 소지자에게 누출됩니다.

특정 배지 하나만 가진 다른 사람들이 누구인지 보는 것을 막는 방법이 있을까요? :thinking:

플레어를 사용하는 건 어때요?

음 :thinking:

아마도 그렇겠죠…

이 경고가 민감한 멤버 번호가 유출될 위험을 안고 있을까요?

이 그룹이 기본 그룹이므로, 'hidden_group_test_2’라는 이름은 누구나 볼 수 있는 CSS 클래스에 사용될 것입니다.

시끄러운 색상 용서는 부탁드립니다. 테스트용이거든요:

멤버 목록/인원 수가 유출되지 않는 한, 숨겨진 그룹 이름이 유출되는 것에 대해 이의가 없습니다.

몇 가지 테스트를 해 보았지만, 이 방법도 우리의 사용 사례에 이상적이라고 확신할 수 없습니다.

(우리 비공개 그룹의) 플레어가 사용자에게 적용되기는 하지만, 사용자가 다른 그룹 중 하나에 가입하는 순간 플레어가 방금 가입한 그룹의 플레어로 대체됩니다.

프로필에서는 이제 공개 그룹의 플레어만 선택할 수 있게 되며, 특별 멤버 플레어에 대한 접근 권한을 완전히 잃어버리고 다시 적용할 수도 없습니다. :confused:

다른 그룹에도 이 설정이 되어 있나요?

Screenshot 2023-02-07 at 2.09.34 PM

각 그룹의 ‘관리/멤버십’ 메뉴의 ‘효과’ 항목에 있습니다.

해당 그룹에만 설정되어 있고 다른 그룹에는 없다면 오버라이드되지 않아야 합니다.

기본 그룹이 사용자의 기본 플레어와 타이틀을 결정합니다.

네, 모든 그룹에 그렇게 설정되어 있어서, 방금 가입한 그룹의 flair가 자동으로 부여됩니다.

다른 아이디어로는 모든 사용자에게 "Guest(게스트)"와 같은 제목을 강제하는 것이 있었습니다. 하지만 그러면 사용자가 자신이 가진 배지 제목 중 하나로 제목을 마음대로 변경할 수 있을 것입니다. 사용자가 제목을 변경하는 것을 막을 수는 없을 것 같습니다.

게스트와 멤버가 서로를 해당 역할(즉, 배지)로 식별할 수는 있지만, 우리가 가진 'Extra Special Member(특별한 멤버)'의 수를 노출하지 않는 방법을 찾고 있습니다.

다른 혁신적인 해결책이나 우회 방법이 있을까요?

"User Fields(사용자 필드)"를 활용하여 무언가를 할 수 있을까요?

"Status(상태)"라는 사용자 필드를 만들고, 프로필에서 표시되도록 하되 사용자가 직접 편집할 수 없도록 설정하는 것입니다. 그리고 API 호출을 통해 이 “status” 사용자 필드를 자동으로 업데이트할 수 있을까요? (그룹에 추가할 때 API 호출을 실행합니다)

무언가 감을 잡은 것 같습니다:

“Member”라는 이름의 사용자 필드를 만들었고, 사용자가 수정할 수 없도록 설정했습니다:

테스트를 위해 한 사용자를 수정해 보면, 해당 사용자의 프로필에 “Member: Yes”가 표시됩니다:

하지만 이것이 결정적인 부분일 수 있습니다:

이를 어떻게 수행할 수 있을까요? :thinking:

이미 회원이 될 때 실행되는 기존 API 호출이 있습니다. 이 호출을 통해 Discourse에서 해당 사용자를 특정 그룹에 추가합니다. 이 사용자 필드를 업데이트하기 위해 두 번째 API 호출을 실행할 수도 있을까요?

물론입니다 :slight_smile:

Discourse에서 어떤 작업을 수행할 때마다 브라우저 개발자 도구의 네트워크 탭을 확인하여 어떤 쿼리가 수행되었는지 살펴볼 수 있습니다.

예를 들어, 여기서는 사용자의 프로필을 저장하는 모습입니다:

사용자 이름이 포함된 요청 URL과 요청 유형(PUT)을 볼 수 있습니다.
Payload 탭에서는 관련 데이터를 확인할 수 있습니다:

커스텀 필드는 user_fields[X]로 나열되며, X는 커스텀 필드의 번호입니다.


수정: #dev에서 해결하셨다는 것을 확인했습니다. 따라서 단순히 링크를 공유해 드립니다… :slight_smile: