Je souhaite que seules les personnes inscrites sur mon site web externe puissent créer un compte sur mon forum Discourse. Je ne pense pas pouvoir utiliser l’API SSO car mon site ne gère pas l’authentification ; il s’agit simplement d’une inscription dans une base de données SQL.
Puis-je ajouter une condition lors de l’inscription pour n’autoriser que les personnes déjà enregistrées dans ma base de données SQL (mon site web) à s’inscrire ?
Je ne suis pas un expert de Discourse, mais il existe de nombreuses façons de gérer cela. Voici une méthode que je pense pourrait fonctionner et que j’essaierais d’explorer :
Exiger une approbation pour les nouveaux utilisateurs de Discourse.
Développer un script sur votre site web distant ou dans un environnement serverless qui interroge votre base de données pour une personne, puis appelle l’API de Discourse pour approuver ou refuser le nouvel utilisateur.
Configurer Discourse pour qu’il fasse un appel de webhook vers le script lorsqu’un nouvel utilisateur est créé.
Personnaliser les messages de Discourse pour mieux expliquer à vos utilisateurs ce qui se passe.
En résumé, Discourse dispose de webhooks et d’une API performants, ce qui vous permet de les utiliser tout en écrivant votre script personnalisé à distance, dans le langage de votre choix.
Si vous êtes à l’aise pour écrire un plugin Discourse en Ruby, cela fonctionnerait également, mais personnellement, je ne le suis pas, donc je trouverais cette approche plus simple.
Une façon de réaliser cela serait d’activer les paramètres du site « uniquement sur invitation » et « approbation requise des utilisateurs ». Avec ces paramètres activés, seules les personnes invitées sur le site pourront créer un compte. Les invitations ne pourront être envoyées que par des utilisateurs du personnel, car le paramètre « approbation requise des utilisateurs » empêche les utilisateurs non membres du personnel d’envoyer des invitations.
Vous pourrez ensuite extraire les adresses e-mail de votre base de données SQL et les ajouter à un fichier CSV. Ce fichier pourra être utilisé pour inviter des utilisateurs en masse en suivant les étapes décrites ici : Envoi d’invitations d’utilisateurs en masse.
En parcourant la base de code de Discourse sur GitHub, j’ai trouvé une action « approve_user », par exemple put "/review/#{reviewable.id}/perform/approve_user.json". Il semble que vous deviez d’abord récupérer les reviewables afin d’obtenir l’ID du reviewable dont vous avez besoin.