Nur Zugriff erlauben, wenn der Benutzer einen Abonnementplan bei Memberpress hat

Mein Kunde hat eine WordPress-Installation mit Memberpress, über die sich Benutzer einloggen, um auf Discourse zuzugreifen.

Gibt es eine Möglichkeit, den Zugriff auf Discourse nur Benutzern mit einem aktiven Memberpress-Abonnement zu gewähren?

Vielen Dank,
Per

Schauen Sie sich meine erste Antwort in diesem Thema an, um Details zu erfahren, wie sich die Anmeldung bei Discourse einschränken lässt: How to prevent some WP users from being able to login to Discourse. Dies setzt voraus, dass die WordPress-Site als SSO-Anbieter für Discourse fungiert und Sie das WP Discourse-Plugin verwenden.

Danke, Simon, das ist großartig! :slight_smile:

Damit kann ich den Zugriff prüfen, bevor ich den Benutzer zu Discourse leite.
Weißt du zufällig, ob es eine gute Möglichkeit gibt, zu prüfen, ob ein Benutzer ein aktives Abonnement hat?
Das wäre die Bedingung, anhand der ich entscheide, ob ich sie zu Discourse leite oder nicht.

Vielen Dank!!

Ich bin mir sicher, dass es eine Möglichkeit gibt, dies zu tun, aber ich bin mir nicht sicher, wie man auf das Memberpress-Abonnementsniveau eines Benutzers in WordPress zugreift. Es könnte jedoch sein, dass es in Beiträgen in unserer Kategorie Support > WordPress Beispiele dafür gibt, wie man das macht.

ok danke :slight_smile:
habe ein schönes Wochenende!

Wenn jemand anderes das Gleiche erreichen möchte: Ich habe die Lösung hier gefunden:

Simon: Eine letzte Frage: Wie lange bleibt ein Benutzer bei Discourse eingeloggt, bevor er ausgeloggt wird? Oder bleibt der Benutzer eingeloggt, bis er auf die Schaltfläche “Abmelden” klickt?

Dies wird über die Discourse-Site-Einstellung „maximum session age“ gesteuert. Diese Einstellung ist standardmäßig auf 1440 Stunden festgelegt. Sofern sie nicht auf einen sehr kleinen Wert gesetzt wird, ist sie keine zuverlässige Methode, um Benutzer auszuloggen. Der Grund dafür ist, dass sie die Zeitspanne festlegt, die ein Benutzer seit seinem letzten Besuch eingeloggt bleibt. Das Setzen von „maximum session age“ auf eine sehr kleine Stundenzahl könnte zudem für die Benutzer Ihrer Seite zu Unannehmlichkeiten führen.

Ich denke, Ihr bester Ansatz wäre es, Benutzer über die API aus Discourse auszuloggen, wenn die Mitgliedschaften ablaufen. Ein Codebeispiel, wie dies funktioniert, finden Sie hier: wp-discourse/lib/sso-provider/discourse-sso.php at main · discourse/wp-discourse · GitHub. Möglicherweise benötigen Sie Unterstützung von einem Entwickler, um einen API-Aufruf zu tätigen, der Benutzer aus Discourse ausloggt, sobald ihre Mitgliedschaft abläuft.

Kann ich einfach die Funktion logout_from_discourse() aufrufen, oder muss ich den gesamten Code kopieren?

Es ist nicht so einfach, nur die Funktion logout_from_discourse() aufzurufen, aber es sollte möglich sein, einen WordPress-Aktionshook zu verwenden, um diese Funktion aufzurufen, wenn eine bestimmte Aktion auf Ihrer WordPress-Site ausgeführt wird. Beispielsweise, wenn die Mitgliedschaftsebene eines Benutzers widerrufen wird. Möglicherweise kann jemand in der Discourse-Community Ihnen bei der Syntax helfen, die erforderlich ist, damit dies funktioniert.