Remplacer le modèle de profil utilisateur basé sur le groupe

Je crée un composant de thème qui remplace le modèle de profil utilisateur en fonction de l’appartenance du groupe de l’utilisateur consulté. J’aimerais que les profils des utilisateurs anonymes n’affichent pas du tout la zone #user-content, sauf si currentUser est un membre du personnel. J’ai créé un groupe auquel les utilisateurs anonymes sont automatiquement ajoutés, mais j’ai du mal à remplacer conditionnellement le modèle.

Basé sur Overriding Discourse Templates from a Theme et Adding background videos to certain user profiles, j’ai essayé de remplacer user/summary.hbs comme suit :

<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>

Cela remplace le modèle pour tous les profils, mais isAnon est indéfini, donc je pense que je ne comprends pas comment créer la logique pour que handlebars vérifie lors du remplacement au lieu d’ajouter à un plugin outlet.

Est-ce que registerConnectorClass est correct à utiliser pour cela ? Une substitution de modèle est-elle nécessaire ici ? J’ai parcouru l’API des plugins et User.rb et j’ai compris comment vérifier si l’utilisateur actuel est en mode anonyme, mais je n’ai pas trouvé d’accès facile autre que le groupe pour vérifier si l’utilisateur consulté est anonyme. Je connais Rails, js et handlebars, mais je suis nouveau sur Ember et Discourse.

1 « J'aime »

Si quelqu’un d’autre tombe sur ceci, ce que j’ai fini par faire, c’est de remplacer les modèles pour user, user/summary et user/activity en ajoutant {{#if (or viewingSelf currentUser.staff)}} autour des sections que je ne voulais pas que les utilisateurs connectés voient. Cela remplace les modèles de profil pour tous les utilisateurs plutôt que seulement les utilisateurs d’un groupe spécifié, mais j’ai décidé que c’était suffisant pour mon cas d’utilisation, pour donner aux utilisateurs un peu plus de confidentialité générale. Le modèle que j’ai trouvé permettait toujours aux utilisateurs de choisir de mettre en avant un sujet, mais cachait toutes les autres statistiques récapitulatives, sujets et activités, sauf lorsqu’ils étaient vus par l’utilisateur lui-même et le personnel.

Mon cas d’utilisation est similaire à ce sujet sur le mode anonyme pour une utilisation en classe, dans le sens où il serait agréable d’avoir un moyen facilement accessible de donner aux utilisateurs ou à l’administrateur un contrôle plus détaillé sur les parties du profil à afficher ou à masquer, même pour les utilisateurs connectés. Par exemple, dans un forum de soutien en matière de santé, il serait agréable d’avoir des comptes anonymes dans le groupe anon, puis de configurer pour ne pas afficher la page ou l’onglet d’activité pour le groupe anon.

1 « J'aime »