Vérifier si un utilisateur est connecté sur Discourse depuis un autre site web

Salut tout le monde,

J’aimerais limiter l’accès à certaines pages de notre site web en fonction de si quelqu’un a un compte membre sur notre Discourse privé. Je suppose que je le ferais en vérifiant sur ces pages si l’utilisateur est connecté à Discourse à ce moment-là.

Je pense que le bon outil à utiliser est : GitHub - discourse/discourse-auth-proxy: An http proxy that uses the DiscourseConnect protocol to authenticate users

Existe-t-il une documentation étape par étape pour l’utiliser ?

Puis-je l’installer sur la même goutte DigitalOcean que notre site Discourse, ou dois-je l’héberger ailleurs ?

Pourriez-vous m’aider à utiliser Discourse Auth Proxy ?

J’ai Discourse sur une instance Digital Ocean et un site web PHP sur un serveur séparé.

Vous pouvez le faire avec DiscourseConnect (Discourse fonctionnant comme fournisseur d’authentification) : Use Discourse as an identity provider (SSO, DiscourseConnect).

Je ne l’ai pas encore essayé, mais le paramètre prompt pourrait être utile dans votre cas :

  • prompt : Si prompt=none, la requête SSO est traitée comme une requête « juste pour vérifier ». Si le navigateur/appareil est déjà connecté à Discourse, Discourse renverra une réponse SSO réussie portant les informations d’authentification de l’utilisateur, comme d’habitude. Si le navigateur/appareil n’est pas déjà connecté, Discourse ne demandera pas à l’utilisateur de se connecter et renverra immédiatement une réponse SSO portant le paramètre failed=true au lieu des informations utilisateur. Cela fournit un mécanisme pour interroger si l’utilisateur est connecté, sans jamais diriger l’utilisateur vers une boîte de dialogue de connexion s’il ne l’est pas.
1 « J'aime »

Cela semble prometteur @simon. Je n’avais pas réalisé que DiscourseConnect pouvait fonctionner sans activer enable discourse connect, mais apparemment, il le peut ! :thinking:

Je vais faire quelques tests et je reviendrai vous dire – merci de m’avoir mis sur cette piste !

1 « J'aime »

Je me demande si l’utilisation de Discourse comme fournisseur d’authentification est négligée à cause de son nom (DiscourseConnect). Par exemple, le simple fait d’ajouter le terme DiscourseConnect à un message ici crée un lien vers le sujet concernant l’utilisation d’un site externe comme fournisseur d’authentification pour Discourse. Utiliser Discourse comme fournisseur d’authentification est l’une de mes principales justifications pour avoir un site Discourse.

Au cas où cela aiderait, le plugin WordPress permet à Discourse de fonctionner comme fournisseur d’authentification. Le code pertinent est ici : wp-discourse/lib/sso-client at main · discourse/wp-discourse · GitHub. Le code est peut-être un peu trop compliqué.

Voici une implémentation plus simple pour une application Remix/React : discourse_remix_comments/app/routes/login.tsx at main · scossar/discourse_remix_comments · GitHub. Si vous ignorez le code TypeScript, il n’y a pas grand-chose.

3 « J'aime »

@simon Je voulais juste vous répondre pour vous remercier. Je pense que votre suggestion précédente est la bonne réponse. J’ai eu du mal à l’implémenter sur mon site, mais le problème semble venir principalement du fait qu’il s’agit d’un CMS semi-personnalisé avec beaucoup de code bancal qui gêne.

1 « J'aime »

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