La documentation pour configurer le plugin dans un réseau multisite n’est pas à jour. C’est une bonne occasion de l’organiser et de mettre à jour le guide Installation et configuration du plugin WP Discourse.
Pour utiliser la fonctionnalité de client SSO sur un réseau multisite, le plugin doit être configuré au niveau du réseau. Cela se fait en cliquant sur le lien Discourse dans votre Tableau de bord Réseau :
Sur la page Réseau de Discourse, sélectionnez l’option Activer la configuration multisite. Ensuite, saisissez votre URL Discourse, votre clé API et votre nom d’utilisateur de publication dans la section Paramètres de connexion. Faites défiler la page jusqu’en bas et cliquez sur le bouton Enregistrer les options. Vous devriez voir un message « Vous êtes connecté à Discourse ! » en haut de la page.
Pour utiliser Discourse comme fournisseur SSO pour les sites de votre réseau multisite, faites défiler la page Réseau de Discourse jusqu’en bas et sélectionnez l’option Activer le client SSO. Ajoutez également une clé dans le paramètre Clé secrète SSO. Enregistrez à nouveau vos options.
Allez maintenant sur votre site Discourse et copiez la clé secrète dans le paramètre du site sso provider secrets de Discourse. Saisissez le symbole * comme domaine du fournisseur SSO. Une fois ce paramètre enregistré, il devrait ressembler à ceci :
Sélectionnez ensuite l’option enable sso provider sur Discourse.
Avec ces paramètres en place, accéder à l’onglet SSO / Client SSO de WP Discourse pour n’importe quel site de votre réseau devrait vous amener à une page ressemblant à ceci :
Pour un test rapide, sélectionnez les options Ajouter un lien de connexion et Synchroniser les utilisateurs existants par e-mail. Ensuite, déconnectez-vous de votre site WordPress. Vous devriez pouvoir vous reconnecter en cliquant sur le lien « Se connecter avec Discourse » qui s’affichera sur votre page wp-login.php.
Si vous n’utilisez pas la page de connexion WordPress par défaut, essayez de copier le shortcode [discourse_sso_client] dans un article de votre site. Ce shortcode n’affiche le code HTML que pour les utilisateurs déconnectés. Vous pouvez également créer un lien de connexion en construisant un lien sous cette forme :
<a href="https://example.com/?discourse_sso=1&redirect_to=https://example.comt/">Se connecter avec Discourse</a>
Cela connectera l’utilisateur à votre site via Discourse, puis le redirigera vers la page WordPress définie comme valeur du paramètre redirect_to.
Selon vos analyses de débogage, il semble que l’option Activer le client SSO n’ait pas été activée sur votre page Réseau de Discourse. Pouvez-vous vous assurer que cette option est activée et me dire si vous rencontrez toujours des problèmes ?
Le code que vous avez trouvé et qui empêchait le client SSO de fonctionner est correct, mais il s’agit d’une condition mal écrite :
if ( empty( $this->options['sso-client-enabled'] ) || 1 !== intval( $this->options['sso-client-enabled'] ) )
Il devrait être simplifié en if ( empty( $this->options['sso-client-enabled'] ) ). C’est le modèle utilisé partout ailleurs dans le plugin.


