Antworten auf Vertrauensstufen beschränken

Hallo,

Ich frage mich, ob es eine Möglichkeit gibt, Antworten/Erwiderungen auf bestimmte Vertrauensstufen oder benutzerdefinierte Benutzerfelder zu beschränken? Unsere Benutzer werden von WordPress mit unterschiedlichen Mitgliedschaftsstufen migriert. Wir möchten nicht allen Benutzern die Möglichkeit geben, Antworten anzuzeigen, es sei denn, sie haben ein bestimmtes Mitgliedschaftsniveau erreicht.

[quote=“j3ang, post:1, topic:223032”]um Antworten anzuzeigen, es sei denn, sie haben ein bestimmtes Mitgliedschaftsniveau erreicht.
[/quote]

Um sie anzuzeigen oder um zu antworten? Das sind zwei ganz verschiedene Dinge.

@HAWK , ah Entschuldigung, um zu antworten. Sie können das Thema und die Antworten sehen, sollten aber nicht antworten können, es sei denn, sie haben ein bestimmtes Level.

Ja, das können Sie auf Kategorieebene einrichten. Fügen Sie jede Vertrauensstufengruppe hinzu und weisen Sie ihr die entsprechenden Berechtigungen zu.

Was, wenn wir die Antworten tatsächlich ausblenden möchten und nicht nur die Berechtigung zum Antworten einschränken wollen? Die Spalte „Anzeigen“ ist ausgegraut.

Das kann ich leider nicht tun.

Wäre das mit einem benutzerdefinierten Plugin möglich? Ich vermute, es sollte nicht schwer sein, den aktuellen Benutzer zu lesen und den gesamten Antwortbereich per JavaScript auszublenden?

Tut mir leid, ich meinte, es ist nicht out-of-the-box möglich. So ziemlich alles ist mit einem benutzerdefinierten Plugin möglich!

Da ich versuche, dies über ein benutzerdefiniertes Plugin zu erreichen. Ich denke, ich bin fast da, indem ich die Variable postsToRender überschreibe.

  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');
}

Es scheint, als ob kurzzeitig ein Fehler “nicht gefunden” angezeigt wird und die Seite nach einem Hard-Reload oder nach der Rückkehr von der Startseite korrekt neu geladen wird.

Ich benutze ein MacOS Docker Dev-Image, das ziemlich langsam ist.

Entschuldigung, ich bin noch nicht mit der Discourse-Codebasis vertraut.
Gibt es eine bessere Möglichkeit, die Beiträge beim Laden eines Themas abzufangen?

Ich sehe, ich hätte den Controller wieder öffnen sollen.

  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));
    }
  })