Créer un plugin pour déconnecter l'utilisateur via uid depuis SAML

J’utilise les groupes SAML pour authentifier les utilisateurs dans différentes catégories. Lorsque les groupes changent, l’utilisateur doit se reconnecter. Je souhaite automatiser cela dans mon IDP. Lorsque les groupes changent, il utilise l’API pour déconnecter l’utilisateur

curl -X POST “https://mydiscourse.org/admin/users//log_out.json”   -H “Content-Type: application/json”   -H “Api-Key: XXXX”   -H “Api-Username: Admin” -v

Avec un API-Token disposant uniquement du droit de déconnexion (log_out), cela peut être fait de manière très sécurisée.

Cependant, l’IDP n’a pas l’ID numérique de l’utilisateur. Il n’a qu’un numéro unique.

J’ai déjà découvert comment déconnecter un utilisateur via la console en entrant dans l’application et rails c

uaa = UserAssociatedAccount.find_by(provider_name: “saml”, provider_uid: “123456”)
user = uaa.user
user.user_auth_tokens.destroy_all

Mon idée était donc de créer un point de terminaison personnalisé, avec une utilisation similaire

curl -X POST https://mydiscourse.org/custom/saml-logout/123456   -H “Api-Key: xxx”   -H “Api-Username: Admin” -H “Accept: application/json”

Ceci transfère simplement le auth_token reçu à l’API officielle, probablement la méthode la plus sûre. L’ID peut être obtenu via user.id (voir la partie ci-dessus).

Ou il exécute

uaa = UserAssociatedAccount.find_by(provider_name: “saml”, provider_uid: “123456”)
user = uaa.user
user.user_auth_tokens.destroy_all

Existe-t-il des plugins simples où je peux simplement coller ce très petit morceau de code ? Je ne suis pas programmeur Ruby, mais ce sont si peu de lignes de code. Cela devrait être réalisable en quelques minutes.

Merci beaucoup pour votre aide.