j3ang
(Alex Wang)
Abril 3, 2022, 10:26pm
1
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
HAWK
(Hawk)
Abril 4, 2022, 3:50am
2
[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
j3ang
(Alex Wang)
Abril 4, 2022, 3:56am
3
@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
HAWK
(Hawk)
Abril 4, 2022, 3:59am
4
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
j3ang
(Alex Wang)
Abril 4, 2022, 4:56am
5
E se quisermos realmente ocultar as respostas, e não apenas restringir a permissão de responder? A coluna ‘ver’ está esmaecida.
2 curtidas
HAWK
(Hawk)
Abril 4, 2022, 5:07am
6
Sinto muito, mas você não pode fazer isso.
1 curtida
j3ang
(Alex Wang)
Abril 4, 2022, 5:28am
7
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
HAWK
(Hawk)
Abril 4, 2022, 5:32am
8
Desculpe, quis dizer que não é possível nativamente. Quase tudo é possível com um plugin personalizado!
5 curtidas
j3ang
(Alex Wang)
Abril 5, 2022, 12:13am
9
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?
j3ang
(Alex Wang)
Abril 5, 2022, 6:29pm
10
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));
}
})
system
(system)
Fechado
Maio 5, 2022, 6:29pm
11
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.