限制答案到信任级别

您好,

我想知道是否有办法将答案/回复限制在特定的信任级别或用户自定义字段?我们的用户是从 WordPress 迁移过来的,拥有不同的会员级别。我们不希望所有用户都能查看答案,除非他们达到了某个会员级别。

2 个赞

是查看还是回复?这两者有很大的区别。

2 个赞

@HAWK,啊抱歉,回复。他们可以看到主题和回复,但除非达到一定级别,否则不应该能够回复。

2 个赞

是的,您可以在类别级别进行设置。添加每个信任级别组并授予其适当的权限。

2 个赞

如果我们确实想隐藏答案,而不仅仅是限制回复权限,该怎么办?“查看”列呈灰色显示。

2 个赞

恐怕你不能这么做。

1 个赞

是否可以使用自定义插件?我怀疑通过 JavaScript 读取当前用户并隐藏整个答案部分并不难?

2 个赞

抱歉,我的意思是它无法开箱即用。几乎任何事情都可以通过自定义插件实现!

5 个赞

我正在尝试通过自定义插件来完成此操作。我认为通过编辑覆盖 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');
}

它似乎会在页面短暂显示“未找到错误”,然后在硬刷新页面或返回主页后正确重新加载。

我正在使用 MacOS Docker 开发镜像,速度有点慢。

抱歉,我对 discourse 代码库还不熟悉。
在加载主题时,有没有更好的方法来拦截帖子?

我看到我应该重新打开 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.