그룹 기반으로 사용자 프로필 템플릿 오버라이드

그룹 멤버십에 따라 사용자 프로필 템플릿을 오버라이드하는 테마 컴포넌트를 만들고 있습니다. 현재 사용자가 스태프가 아니라면, 익명 사용자의 프로필에서는 #user-content 영역을 아예 표시하지 않도록 하려고 합니다. 익명 사용자에게 자동으로 추가되는 그룹을 만들기는 했는데, 조건부 템플릿 오버라이드를 하는 데 어려움을 겪고 있습니다.

Overriding Discourse Templates from a Theme와 Adding background videos to certain user profiles를 참고하여 user/summary.hbs를 다음과 같이 오버라이드하려고 시도해 왔습니다:

<script type="text/discourse-plugin" version="0.8">
    const TARGET_GROUP = "anon"

  api.registerConnectorClass('above-user-summary-stats', 'user-summary', {
    setupComponent(args, component) {
      const inGroup = [...args.model.groups].filter(g => g.name === TARGET_GROUP)
      const isAnon = inGroup.length ? true : false;
      component.setProperties({isAnon})
    }
  });

</script>

<script type="text/x-handlebars" data-template-name="user/summary">
    <DSection @pageClass="user-summary" @tagName="">
    <div class="user-content" id="user-content">
      <PluginOutlet
        @name="above-user-summary-stats"
        @args={{hash model=this.model user=this.user}}
      />
      {{log isAnon}}
      
    </div>
</DSection>
</script>

이 방법은 모든 프로필의 템플릿을 오버라이드하지만, isAnon이 undefined 상태입니다. 플러그인 아웃렛에 추가하는 대신 오버라이드할 때 핸들바가 조건을 확인하도록 로직을 만드는 방법을 이해하지 못하고 있는 것 같습니다.

이 용도로 registerConnectorClass를 사용하는 것이 올바른가요? 여기서는 템플릿 오버라이드가 필요한가요? 플러그인 API와 User.rb를 살펴보고 현재 사용자가 익명 모드인지 확인하는 방법은 알아냈지만, 표시되는 사용자가 익명인지 확인하기 위한 그룹 외에는 간단한 접근 방법을 찾지 못했습니다. 저는 Rails, JS, 핸들바에는 익숙하지만 Ember와 Discourse는 처음 접해 보는 것입니다.

혹시 이 글을 보시는 분이 계신다면, 제가 최종적으로 취한 방법은 user, user/summary, user/activity 템플릿을 오버라이드하여 로그인한 사용자에게 표시하고 싶지 않은 섹션 주위에 {{#if (or viewingSelf currentUser.staff)}}를 추가하는 것이었습니다. 이 방법은 특정 그룹의 사용자가 아니라 모든 사용자의 프로필 템플릿을 오버라이드하지만, 사용자에게 조금 더 일반적인 프라이버시를 제공하기 위해 제 사용 사례에는 충분하다고 판단했습니다. 제가 작성한 템플릿은 사용자가 특정 주제를 추천(feature)하도록 허용하되, 사용자 본인과 스태프가 볼 때를 제외하고는 모든 기타 요약 통계, 주제, 활동을 숨기도록 했습니다.

제 사용 사례는 교실 사용을 위한 익명 모드에 관한 이 주제와 유사합니다. 즉, 로그인한 사용자에게도 프로필의 어떤 부분을 표시하고 어떤 부분을 숨길지에 대해 사용자나 관리자가 더 세밀하게 제어할 수 있는 쉽게 접근 가능한 방법이 있으면 좋겠다는 것입니다. 예를 들어, 건강 지원 그룹 포럼에서는 anon 그룹에 익명 계정을 두고, anon 그룹에 대해서는 활동 페이지나 탭을 표시하지 않도록 설정할 수 있으면 좋겠습니다.