J’ai une application mobile. Discourse sert de source d’authentification. Pour se connecter à l’application mobile, l’utilisateur doit entrer son nom d’utilisateur et son mot de passe. Ensuite, j’effectue un appel API de connexion vers Discourse pour authentifier l’utilisateur.
Actuellement, l’application mobile contient des liens vers le forum Discourse. Je souhaite que l’utilisateur soit automatiquement connecté au forum lorsqu’il clique sur ces liens. Il est vraiment pénible pour l’expérience utilisateur de devoir saisir son mot de passe deux fois : une première fois pour se connecter à l’application, puis une seconde fois pour accéder au forum.
Puisque la connexion sans mot de passe via un lien envoyé par e-mail est possible, je pense que cette procédure devrait également être réalisable, peut-être grâce à un simple plugin.
Quand avez-vous besoin que cela soit fait ?
1 semaine.
Quel est votre budget, en dollars USD, que vous pouvez offrir pour cette tâche ?
300 $
C’est en fait un peu plus complexe qu’il n’y paraît.
Le fonctionnement de la connexion par e-mail est le suivant : lorsque vous cliquez sur le bouton « avec e-mail » dans la fenêtre de connexion, un jeton est généré, spécifique à cet utilisateur, et stocké dans email_tokens. Vous pouvez voir ce jeton dans le lien (la chaîne de chiffres et de lettres) :
Vous devrez générer ce jeton pour les liens de votre application à chaque fois que l’utilisateur se connecte. Je ne pense pas (?) que cette fonctionnalité soit actuellement exposée via l’API, vous devrez donc d’abord créer un endpoint.
Cet endpoint devra être protégé par une authentification. Vous devrez prévoir un moyen de gérer cela dans votre application. Peut-être l’avez-vous déjà ?
Ensuite, vous devrez prendre en compte des éléments comme l’expiration des jetons. Combien de temps le jeton doit-il rester valide ? Comment en obtenir un nouveau et mettre à jour les liens une fois qu’il a expiré ?
On a l’impression qu’il devrait exister une meilleure façon de gérer ce problème que d’adapter rétroactivement cette fonctionnalité.
Oui. C’est exactement ce que je pensais moi-même. Et puisque la connexion par e-mail est déjà en place, cela devrait également être possible. Je ne sais pas pour l’implémentation réelle. Peut-être que cela devrait être fait via un plugin. Si tu peux le faire, fais-le-moi savoir.
Oui, l’authentification est gérée par l’API de connexion de Discourse. Et il n’y a aucun problème avec cela.
Le lien de connexion par e-mail a-t-il une valeur d’expiration ? Nous pouvons utiliser la même chose ou quelque chose de similaire.
Les autres aspects, comme la récupération d’un nouveau jeton, seront gérés par l’application elle-même.
Oui, la durée de validité du jeton d’email est définie par le paramètre du site « email token valid hours ».
Donc, en gros, vous voulez un plugin qui ajoute un point de terminaison pour créer et retourner un email_token pour un utilisateur, et vous l’appellerez régulièrement lorsque les jetons expireront ?
Et aussi, puisque je souhaite rediriger l’utilisateur vers un sujet spécifique, si l’ID du sujet ou un lien pouvait être ajouté et que, après la connexion, l’utilisateur soit redirigé vers celui-ci, ce serait parfait.
Une autre approche consisterait à ce que les liens dans l’application pointent vers votre propre backend. Lorsque vous cliquez dessus, un lien approprié est créé à ce moment-là et le client est redirigé, d’une manière ou d’une autre, vers l’endroit voulu.
Cela signifierait que vous n’avez pas besoin de générer des liens d’authentification avant qu’un utilisateur ne clique dessus.