Adicionar usuário ao grupo via webhook com e-mail

Bom dia,

Estou tentando adicionar usuários do WordPress a grupos privados no Discourse via webhook.

Eu uso o plugin WP Discourse como método de login SSO e não permito que os usuários alterem seus nomes de usuário no Discourse. Fiz isso porque pensei que dessa forma eu poderia usar o nome de usuário do WordPress para adicioná-los a um grupo no Discourse. Porque, eu pensei que seriam os mesmos.

O problema é que, quando o nome de usuário é gerado automaticamente no WordPress, às vezes ele usa o e-mail como nome de usuário. Mas o Discourse não permite isso em nomes de usuário, então ele quebra o nome de usuário em “@”.

Exemplo:
E-mail do WordPress: jhon@gmail.com
Nome de usuário do WordPress (gerado automaticamente): jhon@gmail.com
Nome de usuário do Discourse (gerado através do WP Discourse SSO): jhon

Isso não me permite usar o usuário do WordPress para adicioná-los a um grupo.

Existe uma maneira mais fácil de fazer isso?

Seria ótimo poder adicionar usuários a um grupo com seu e-mail em vez de nome de usuário. O e-mail está sempre disponível em qualquer aplicativo (CRM, WordPress, etc.), então não seria necessário o passo extra de fazer uma solicitação “GET” para a API para obter o nome de usuário a partir desse e-mail e, em seguida, colocá-los no grupo.

Eu uso o Fluent Forms para enviar esses dados para o webhook do WordPress quando eles enviam um formulário, então não posso fazer a solicitação GET e, em seguida, PUT o nome de usuário.

Obrigado!

1 curtida

Se eu entendi corretamente, você está fazendo isto

  1. Usando DiscourseConnect com o WordPress como provedor e o Discourse como cliente.
  2. Usando um Webhook no WordPress para colocar usuários em grupos no Discourse (por exemplo, PUT para /g/:group_name/members (ref da API)) como resultado de uma ação de formulário.

Se isso estiver correto, você pode encontrar o nome de usuário do Discourse no WordPress no campo de metadados do usuário discourse_username, então

get_user_meta($user_id, 'discourse_username', true);

Use isso para obter o nome de usuário a ser usado na solicitação PUT após a ação do formulário.
Você pode garantir que discourse_username seja preenchido para seus usuários usando os webhooks de usuário no plugin WP Discourse (observe que estamos falando de webhooks diferentes dos que você está usando atualmente em seu formulário).

2 curtidas