Restringir respuestas a niveles de confianza

Hola,

Me pregunto si hay alguna forma de restringir las respuestas/comentarios a ciertos niveles de confianza o campos personalizados de usuario. Nuestros usuarios se migran desde WordPress con diferentes niveles de membresía. No queremos dar a todos los usuarios la capacidad de ver las respuestas a menos que hayan alcanzado un cierto nivel de membresía.

2 Me gusta

[quote=“j3ang, post:1, topic:223032”]para ver las respuestas a menos que hayan alcanzado un cierto nivel de membresía.
[/quote]

¿Ver o responder? Son cosas bastante diferentes.

2 Me gusta

@HAWK , ah lo siento, para responder. Pueden ver el tema y las respuestas, pero no deberían poder responder a menos que tengan un cierto nivel.

2 Me gusta

Sí, puedes configurar eso a nivel de categoría. Agrega cada grupo de nivel de confianza y otórgale los permisos apropiados.

2 Me gusta

¿Qué pasa si en realidad queremos ocultar las respuestas y no solo restringir el permiso para responder? La columna ‘ver’ está en gris.

2 Me gusta

Me temo que no puedes hacer eso.

1 me gusta

¿Sería posible con un plugin personalizado? Sospecho que no debería ser difícil leer el usuario actual y ocultar toda la sección de respuestas mediante JavaScript.

2 Me gusta

Lo siento, quise decir que no es posible de forma nativa. ¡Casi cualquier cosa es posible con un plugin personalizado!

5 Me gusta

Como estoy intentando lograr esto a través de un plugin personalizado. Creo que casi lo he conseguido editando y anulando la variable postsToRender.

  TopicRoute.reopen({
    setupController(controller, model) {
      this._super(controller, model);
      topicController = controller;
      console.log(topicController);
      let userPrivileged = userCanViewAnswers(topicController.currentUser);

      const postStream = topicController.get("model.postStream");
      window.postStream = postStream;
      window.topicController = topicController;

      topicController.postsToRender = userPrivileged ? topicController.postsToRender : topicController.postsToRender.posts.filter(p=>p.post_number == 1);

    }
  });

function userCanViewAnswers(user){
    let user_groups = user.groups.map(g => g.name);
    return user_groups.includes('privileged');
}

Parece que mostrará un error de “no encontrado” brevemente y se recargará correctamente al recargar la página o al volver después de la página de inicio.

Estoy usando una imagen de desarrollo de Docker en MacOS, que es un poco lenta.

Lo siento, todavía no estoy muy familiarizado con la base de código de Discourse.
¿Hay una mejor manera de interceptar las publicaciones al cargar un tema?

Veo que se suponía que debía reabrir el Controlador.

  TopicController.reopen({
    @discourseComputed(
    "model.postStream.posts",
    "model.postStream.postsWithPlaceholders"
  )
    postsToRender(posts,postsWithPlaceholders ){
      let userPrivileged = userCanViewAnswers(this.currentUser);
      return userPrivileged
      ? (this.capabilities.isAndroid ? posts : postsWithPlaceholders)
      : (this.capabilities.isAndroid ? posts.slice(0, 1) : postsWithPlaceholders.slice(0, 1));
    }
  })

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.