Ajouter des liens vers Discourse qui permettent aux utilisateurs de s'authentifier via SSO ou d'accéder directement à des groupes privés s'ils sont déjà connectés

J’ai un site WordPress qui est le fournisseur SSO pour Discourse en utilisant le plugin WPDiscourse. Le forum est public, mais il a des groupes privés.

Lorsque je veux ajouter des boutons qui emmènent les utilisateurs de mon site WordPress vers un groupe privé dans Discourse, j’utilise l’URL SSO comme mentionné ici, afin que les utilisateurs n’atterrissent pas sur la page « Oops ! Cette page n’existe pas ou est privée. ».

Mais lorsque les utilisateurs se sont déjà authentifiés via SSO dans Discourse, qu’ils reviennent et cliquent sur les mêmes boutons, ils arriveront à nouveau sur la page de connexion, même s’ils ont coché la case « Se souvenir de moi » lors de la connexion. Idéalement, ils devraient pouvoir naviguer librement vers les groupes privés une fois qu’ils se sont authentifiés dans Discourse SSO.

Existe-t-il une meilleure façon de configurer cela ?
J’ai pensé à ajouter un code à la page de connexion WP et à vérifier si l’utilisateur s’est déjà connecté à Discourse, et si c’est le cas, le rediriger vers la page dans l’argument « return_path » de l’URL. Serait-ce la solution de contournement ? Si oui, quelles fonctions ou appels API pourrais-je utiliser pour y parvenir ?

Merci !

1 « J'aime »

Si les utilisateurs sont déjà connectés à votre site WordPress, cela ne devrait pas se produire. Pouvez-vous préciser si les utilisateurs pour lesquels cela se produit sont connectés à WordPress ? S’ils sont connectés, ils devraient être redirigés silencieusement vers l’URL Discourse que vous avez définie dans l’argument return_path.

3 « J'aime »

Salut @rodrigo.braga :slight_smile:

Je suis aussi un peu confus. Pourriez-vous confirmer ce qui suit :

Configuration

WordPress est configuré comme fournisseur DiscourseConnect pour Discourse en suivant les instructions ici :

Scénario 1

  1. Un utilisateur est sur votre site WordPress et n’est pas connecté à WordPress.
  2. L’utilisateur clique sur un lien sur WordPress au format https://discourse.example.com/session/sso?return_path=/g/private_group.
  3. L’utilisateur est invité à se connecter à WordPress.
  4. L’utilisateur se connecte à WordPress.
  5. L’utilisateur est redirigé vers https://discourse.example.com/g/private_group.
  6. L’utilisateur voit private_group car il est maintenant connecté à Discourse via DiscourseConnect et il est membre de private_group.

Est-ce actuellement le cas ?

Scénario 2

  1. Un utilisateur est sur votre site WordPress et est connecté à WordPress.
  2. L’utilisateur clique sur un lien sur WordPress au format https://discourse.example.com/session/sso?return_path=/g/private_group.
  3. L’utilisateur est invité à se connecter à WordPress.

Est-ce actuellement le cas ?

3 « J'aime »

Merci Simon, oui l’utilisateur est connecté à WordPress.

L’étrangeté dans mon scénario est que j’ai un site WP principal (WPSite1) qui est le fournisseur DiscourseConnect pour Discourse en utilisant WP Discourse,

Ensuite, j’ai un deuxième site WP (WPSite2) qui synchronise la base de données des utilisateurs avec WPSite1 en utilisant le plugin WP Remote User Synch.

Je ne sais pas pourquoi cela interférerait avec le comportement attendu que vous avez mentionné, car lorsque je me connecte sur WPSite2, puis que je navigue vers WPSite1, je suis déjà connecté sur WPSite1 également.

Mais ce qui se passe, c’est que même après m’être connecté sur WPSite1, qui est le fournisseur DiscourseConnect, et que je clique sur une URL comme https://discourse.example.com/session/sso?return_path=/g/private_group, cela m’amène au formulaire de connexion SSO WP.

1 « J'aime »

Merci, Angus,

Le scénario 2 est le cas.
Je vais examiner les instructions, mais je pense que tout est correctement configuré puisque la connexion SSO fonctionne, le problème est que la page de connexion ne reconnaît pas que l’utilisateur est déjà authentifié.

1 « J'aime »

Salut @simon et @angus, merci encore, j’ai trouvé ce qui n’allait pas.

En examinant la configuration de DiscourseConnect, j’ai remarqué que l’URL de DiscourseConnect était définie sur https://mydomain.org, et j’ai consulté les recommandations du plugin Discourse WP, qui disaient d’utiliser https://www.mydomain.org… Lorsque j’ai mis à jour avec www, cela a commencé à fonctionner comme prévu.

Merci.

2 « J'aime »

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