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.

2 „Gefällt mir“

[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.

2 „Gefällt mir“

@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.

2 „Gefällt mir“

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

2 „Gefällt mir“

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.

2 „Gefällt mir“

Das kann ich leider nicht tun.

1 „Gefällt mir“

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?

2 „Gefällt mir“

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

5 „Gefällt mir“

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

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