Restringir respostas a níveis de confiança

Olá,

Gostaria de saber se há uma maneira de restringir respostas/replies a certos níveis de confiança ou campos personalizados de usuário? Nossos usuários foram migrados do WordPress com diferentes níveis de associação. Não queremos dar a todos os usuários a capacidade de visualizar respostas, a menos que eles tenham atingido um certo nível de associação.

2 curtidas

[quote=“j3ang, post:1, topic:223032”]para ver respostas a menos que tenham atingido um certo nível de associação.
[/quote]

Para ver ou para responder? São coisas bem diferentes.

2 curtidas

@HAWK , ah, desculpe, para responder. eles podem ver o tópico e as respostas, mas não devem poder responder, a menos que estejam em um certo nível.

2 curtidas

Sim, você pode configurar isso no nível da categoria. Adicione cada grupo de nível de confiança e conceda as permissões apropriadas.

2 curtidas

E se quisermos realmente ocultar as respostas, e não apenas restringir a permissão de responder? A coluna ‘ver’ está esmaecida.

2 curtidas

Sinto muito, mas você não pode fazer isso.

1 curtida

Seria possível com um plugin personalizado? Suspeito que não deva ser difícil ler o usuário atual e ocultar toda a seção de respostas via JavaScript?

2 curtidas

Desculpe, quis dizer que não é possível nativamente. Quase tudo é possível com um plugin personalizado!

5 curtidas

Como estou tentando realizar isso por meio de um plugin personalizado. Acho que estou quase lá editando e substituindo a variável 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 ele mostrará um erro “não encontrado” brevemente e recarregará corretamente ao recarregar a página ou voltar após a página inicial.

Estou usando a imagem de desenvolvimento Docker do MacOS, meio lenta.

Desculpe, ainda não estou familiarizado com a base de código do Discourse.
Existe uma maneira melhor de interceptar as postagens no carregamento do tópico?

Vejo que eu deveria reabrir o Controller.

  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.