Sobrescribir plantilla de perfil de usuario según grupo

Estoy intentando crear un componente de tema que anule la plantilla del perfil de usuario basándome en la pertenencia del usuario visto a un grupo. Me gustaría que los perfiles de usuarios anónimos no mostraran el área #user-content en absoluto, a menos que el currentUser sea personal. He creado un grupo al que los usuarios anónimos se añaden automáticamente, pero tengo problemas para anular condicionalmente la plantilla.

Basándome en Anular plantillas de Discourse desde un tema y Añadir vídeos de fondo a ciertos perfiles de usuario, he estado intentando anular user/summary.hbs de esta manera:

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

Esto anula la plantilla para todos los perfiles, pero isAnon no está definido, así que creo que no entiendo cómo crear la lógica para que handlebars compruebe al anular en lugar de añadir a un plugin outlet.

¿Es correcto usar registerConnectorClass para esto? ¿Es necesaria una anulación de plantilla aquí? He revisado la API de plugins y User.rb y he descubierto cómo comprobar si el usuario actual está en modo anónimo, pero no encontré ningún acceso fácil aparte del grupo para comprobar si el usuario visto es anónimo. Estoy familiarizado con Rails, js y handlebars, pero soy nuevo en Ember y Discourse.

1 me gusta

Si alguien más encuentra esto, lo que terminé haciendo fue anular las plantillas de user, user/summary y user/activity agregando {{#if (or viewingSelf currentUser.staff)}} alrededor de las secciones que no quería que los usuarios registrados vieran. Esto anula las plantillas de perfil para todos los usuarios en lugar de solo para los usuarios de un grupo específico, pero decidí que era lo suficientemente bueno para mi caso de uso, para dar a los usuarios un poco más de privacidad general. La plantilla que desarrollé todavía permitía a los usuarios elegir destacar un tema, pero ocultaba todas las demás estadísticas resumidas, temas y actividad, excepto cuando eran vistos por el propio usuario y el personal.

Mi caso de uso es similar a este tema sobre el modo anónimo para uso en el aula, en el sentido de que sería bueno tener una forma fácilmente accesible de dar a los usuarios o administradores un control más detallado sobre qué partes del perfil mostrar u ocultar, incluso para los usuarios registrados. Por ejemplo, en un foro de apoyo a la salud, sería bueno tener cuentas anónimas en el grupo anon, y luego configurar para no mostrar la página o pestaña de actividad para el grupo anon.

1 me gusta