Estou tentando criar um componente de tema que substitui o modelo de perfil do usuário com base na associação de grupo do usuário visualizado. Gostaria que os perfis de usuários anônimos não mostrassem a área #user-content de forma alguma, a menos que o currentUser seja um membro da equipe. Criei um grupo ao qual os usuários anônimos são adicionados automaticamente, mas estou tendo problemas para substituir condicionalmente o modelo.
Com base em Substituindo Modelos do Discourse de um Tema e Adicionando vídeos de fundo a certos perfis de usuário, tenho tentado substituir user/summary.hbs assim:
<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>
Isso substitui o modelo para todos os perfis, mas isAnon é undefined, então acho que não estou entendendo como criar a lógica para o handlebars verificar ao substituir em vez de adicionar a um plugin outlet.
O registerConnectorClass está correto para usar para isso? Uma substituição de modelo é necessária aqui? Percorri a API de plugins e User.rb e descobri como verificar se o usuário atual está no modo anônimo, mas não encontrei nenhum acesso fácil além do grupo para verificar se o usuário visualizado é anônimo. Estou familiarizado com Rails, js e handlebars, mas sou novo no Ember e no Discourse.