Criar Plugin para deslogar usuário via uid do SAML

Eu uso grupos SAML para autenticar usuários em diferentes categorias. Quando os grupos mudam, o usuário tem que fazer login. Quero automatizar isso no meu IDP. Quando os grupos mudam, ele usa a API para deslogar o usuário

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

Com um API-Token apenas com a permissão de log_out, isso pode ser feito de forma muito segura.

No entanto, o IDP não tem o ID numérico do usuário. Ele tem apenas um número único.

Já descobri como deslogar um usuário via console, entrando no app e no rails c

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

Então, minha ideia foi criar um endpoint personalizado, com uso similar

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

Isso pode apenas encaminhar o auth_token recebido para a API oficial, provavelmente o método mais seguro. O ID pode ser obtido via user.id (veja o restante acima)

Ou pode executar

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

Existem plugins simples onde posso simplesmente colar este pequeno trecho de código? Eu não sou programador Ruby, mas são poucas linhas de código. Isso deve ser viável em poucos minutos.

Muito obrigado pela sua ajuda.