Ja, genau dieses Beispiel fehlt im verlinkten Thema. Du kannst Benutzer mithilfe des SSO-Parameters add_groups als Teil des SSO-Login-Prozesses zu einer Gruppe hinzufügen. Standardmäßig sendet das WP Discourse-Plugin diesen Parameter nicht mit dem SSO-Payload, aber das Plugin verfügt über einen Filter, der verwendet werden kann, um diesen Parameter zum SSO-Payload hinzuzufügen.
Der folgende Code, der zu deiner Theme-Datei functions.php oder zu einem Plugin hinzugefügt wird, sollte bei dir funktionieren. Auf diese Weise kannst du Benutzer zu mehreren Gruppen hinzufügen. Der Parameter add_groups akzeptiert eine durch Kommas getrennte Liste von Gruppennamen (ohne Leerzeichen vor oder nach den Kommas):
add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params' );
function wpdc_custom_sso_params( $params ) {
$params['add_groups'] = 'your_group_name';
return $params;
}
Wenn du nur bestimmte Benutzer zur Gruppe hinzufügen möchtest, könntest du die Funktion wie folgt aufrufen:
add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
if (/*hier eine Bedingung hinzufügen, um zu prüfen, ob der Benutzer zur Gruppe hinzugefügt werden soll */) {
$params['add_groups'] = 'your_group_name';
}
return $params;
}
Du kannst Benutzer auch mit dem SSO-Parameter remove_groups aus Gruppen entfernen.
add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params' );
function wpdc_custom_sso_params( $params ) {
$params['remove_groups'] = 'your_group_name';
return $params;
}
oder
add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
if (/*hier eine Bedingung hinzufügen, um zu prüfen, ob der Benutzer aus der Gruppe entfernt werden soll */) {
$params['remove_groups'] = 'your_group_name';
}
return $params;
}
Der größte Nachteil dieses Ansatzes im Vergleich zur Verwendung der Funktion add_user_to_discourse_group, auf die ich verlinkt habe, besteht darin, dass bestehende Benutzer sich ausloggen und dann erneut bei Discourse anmelden müssen, bevor ihre Gruppenmitgliedschaften aktualisiert werden.