Existe uma API para definir o grupo principal de um usuário

Idealmente, eu gostaria de definir o grupo principal quando convido um usuário para ser o grupo que estou adicionando no convite, mas não vejo uma maneira de fazer isso. Existe alguma maneira via API de definir o grupo principal para um usuário?

Obrigado

Acho que você pode conseguir atualizar as configurações do usuário através da operação updateUser:

1 curtida

Obrigado pela dica – tentei usá-la – atualizei o primary_group_name, primary_group_id e até a entrada do array groups para true [‘primary_group’] – recebo um 200 ao chamar update_user – usando a gem, mas ainda nada. Vou dar uma olhada mais de perto amanhã, ver se há alguma indicação do que está dando errado. Não vi nada óbvio, no entanto.

este é o código que executei e recebi um código 200 do servidor:

client = DiscourseApi::Client.new("https://myforumurl.example.com")
client.api_key = 'uma chave de api com permissões globais para testar isso'
client.api_username = 'meu nome de usuário admin -- acho que isso não importa, no entanto'
user = client.user('joepowell')
user['primary_group_name'] = 'dojo'
user['primary_group_id'] = 42
# este é o grupo 42 no array de grupos
user['groups'][2]['primary_group'] = true
client.update_user('joepowell', user)
1 curtida

Veja Engenharia reversa da API do Discourse. Essa é a maneira mais confiável de entender a API e ela está sempre atualizada.

4 curtidas

Isso é excelente, obrigado :). Postarei aqui novamente depois de fazer isso amanhã de manhã :slight_smile:

2 curtidas

Consegui usar o seguinte código Ruby para atualizar o ID do grupo principal. Ele ainda não parece ser suportado pelo gem (procurei no código por referências a primary_group_id e não vi nenhuma que parecesse funcionar dessa maneira).

require 'curb'
http = Curl.put('https://seuforum.com/admin/users/###user_id###/primary_group?primary_group_id=###group_id###') do | http |
  http.headers['Api-Key'] = 'sua-api-key';
  http.headers['Api-Username'] = 'seu-api-username';
  http.headers['Content-Type'] = 'application/x-www-form-urlencoded'
end

1 curtida

Acho que não há problema em usar esses métodos para fazer requisições a caminhos que não são suportados pela gem:

Assim, você pode fazer coisas como:

 response = client.put("admin/users/4/primary_group", primary_group_id: 43)
1 curtida

ahh legal, obrigado – Eu imaginei que poderia fazer um pull request depois de atualizar o código aqui:

mas estou muito ocupado no momento para fazer as coisas funcionarem, então vai demorar um pouco antes que eu possa fazer alterações no próprio código do Discourse. Eu estou amando o Discourse – brinquei brevemente com o Flarum por recomendação de alguém que não será nomeado, e francamente não há comparação, o Discourse está em outra liga para quem quer fazer qualquer coisa fora do comum.

Abraços

2 curtidas

Não é possível com a API alterar o grupo principal? :frowning:

Se você pode mudar com a UX, você pode mudar com a API. Veja Engenharia reversa da API do Discourse

Ah, mas se você quer dizer com a Gem, então eu não sei. Desculpe

1 curtida

obrigado pela resposta @pfaffman

Eu testei com reverso, mas não funcionou, recebi 404 não encontrado :frowning:

/admin/users/barto_95/primary_group.json:

{
	"errors": [
		"A URL ou o recurso solicitado não foi encontrado."
	],
	"error_type": "not_found"
}

e com
/admin/users/2/primary_group.json: (2 = ID do usuário barto_95)

{
	"errors": [
		"O acesso ao recurso solicitado não é permitido."
	],
	"error_type": "invalid_access"
}

Se eu olhar no navegador com a URL /admin/users/2/primary_group.json, eu vejo o JSON

A solicitação para testar a API:


curl --request PUT \
  --url 'https://xxxxxr/admin/users/2/primary_group.json?=' \
  --header 'Api-Key: a7bb1199xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdecbc7b41658' \
  --header 'Apu-Username: Equipe_HACF' \
  --header 'Content-Type: application/json' \
  --data '{
	"primary_group_id": "67"
}'

:frowning: obrigado pela sua ajuda

Esse usuário é um administrador? Minha melhor suposição é que seja um problema de permissão. Um ou mais dos seguintes: O usuário está errado, a chave está errada, as permissões para a chave estão erradas.

1 curtida

Sim, o problema é o direito do usuário que usei.

Obrigado :slight_smile:

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.