Estamos usando a API para integrar o Discourse em nosso site (via pydiscourse).
Quando chega a hora de adicionar um usuário a um grupo do Discourse via API, o pydiscourse usa o método PUT para a URL da API do Discourse:
/admin/groups/{group_id}/members.json
…e passa o nome de usuário pela variável ‘usernames’.
Se o nome de usuário contiver um “.” nele, não há problema, a menos que esse “.” apareça como o último caractere, caso em que a API retornará um erro com a mensagem:
Você forneceu parâmetros inválidos para a solicitação: usernames
Um nome de usuário não pode terminar com um ponto, então esta é a resposta esperada. Eu ia verificar a origem, mas você pode tentar criar uma conta aqui com um ponto final e é ilegal.
Obrigado pela resposta rápida, Jay. Você sabe de imediato se o e-mail do usuário pode ser enviado para ‘username’ nesse endpoint da API, de modo que o Discourse saiba como procurar o usuário por e-mail? (Usamos SSO para conectar nosso aplicativo Django ao Discourse, então o Discourse deve ter ambos os identificadores para cada usuário)
Ah! Sim, eu sei. Notei outro dia que você pode usar o endereço de e-mail para o endpoint que adiciona um usuário a um grupo. Pode ter sido a rota não administrativa, no entanto. Apenas inclua o e-mail como nome do campo com o endereço.
Se você estiver usando o Discourse Connect, no entanto, poderá ter os grupos gerenciados no login, o que provavelmente é o que você deseja fazer em vez de se preocupar com a API.
Aliás, você mencionou Pode ter sido a rota não administrativa, no entanto
Então, essa solicitação PUT seria:
/groups/{group_id}/members.json
…com 'email': (email do usuário) como payload… e o Discourse apenas sabe que meu usuário tem direitos de administrador para poder adicionar esse usuário a esse grupo?
(…desculpe, não entendi bem por que existem duas rotas para a mesma operação…)
Eu acho que sim. Eu usei Como fazer engenharia reversa da API do Discourse para descobrir o caminho. E então, acho que olhei o código fonte para ver que o ID do usuário e o endereço de e-mail também funcionam.
Sim, o SSO só atualiza grupos no login, então a API é a sua solução.