Aqui está o caso de uso, que tenho certeza que muitas pessoas enfrentaram:
- Ter um monte de usuários no Discourse
- Ter um sistema externo (provedor de serviços, Drupal) que usa a API para criar usuários do Discourse e gerenciar associações de grupo
- O Drupal tem um conjunto de usuários parcialmente sobreposto. Ou seja, usuários com o mesmo endereço de e-mail existem no Discourse e no Drupal, mas não estão vinculados
- O Drupal usa a API para sincronizar usuários, grupos e associações porque os usuários podem nunca usar SSO para acessar o Discourse, confiando em e-mails
Comportamento atual:
- O Discourse às vezes rejeita a chamada da API para criar um usuário do Discourse, porque um usuário do Discourse já existe com o mesmo e-mail
Comportamento desejado:
- O Discourse vincula o usuário do Discourse existente ao usuário do Drupal, via e-mail
Solução proposta:
- Consultar o endpoint da API do Discourse
/admin/users/list/all.json?email=$emailpara buscar quaisquer usuários com o endereço de e-mail correspondente - Se o usuário correspondente existir
- Conectar os usuários existentes (lado do Drupal)
- senão
- Criar um novo usuário do Discourse
Perguntas
- Isso parece uma solução razoável, ou existe uma maneira melhor de fazer isso?
- A consulta da API está formulada corretamente?
Nemall.jsonnem o parâmetro de string de consultaemailsão documentados, e encontrei muito poucos exemplos, mas esta postagem parece indicar que é a melhor maneira de prosseguir.