Permissão necessária para enviar formulário de submissão

Olá.

Estamos tentando configurar um formulário de submissão de itens para uma coleção. Acontece que queremos restringir somente para usuários logados no WP. Na ajuda do item “Permitir a submissão por usuário anônimo” diz somente: “Se habilitado, permite a submissão por usuários anônimos, os quais não precisam estar conectados com permissões no sistema WordPress.”.

O problema é que não está explícito quais permissões o usuário precisa ter para conseguir submeter. Já tentei colocar como “Colaborador”, “Autor”, “Autor Tainacan” e sempre que o usuário tenta enviar o formulário aparece a mensagem: “Parece que você não tem permissão para acessar esse conteúdo.”.

P.S.: O ideal é que esses usuários possam somente submeter esse formulário e não ter acesso à outras funções do WP.

Grato se alguém puder me ajudar.

Oi @ricardomoro, tudo bem?

Desculpa pela demora na resposta. Cara, permissões estão sendo um assunto espinhoso, nós planejamos dar uma revisitada geral nelas em Janeiro/Fevereiro pra resolver erros que o pessoal vai pegando.

Fiz um teste aqui pra tentar emular isso que você falou. Como Colaborador, realmente não deveria ser possível, mas como “Autor do Tainacan”, sim. Então fui dar uma olhada nas permissões que estavam sendo concedidas para este papel/função de usuário (Admin do WP → Submenu do plugin Tainacan → Funções de usuário → Editar a função “Autor do Tainacan”). Ele estava com permissão para Criar coleções. Mas entrando na aba “coleções” e escolhendo a que configurei para o formulário, ele estava sem permissão para “Editar item”. Esta é a configuração que o formulário parece estar exigindo. Marquei ela, refiz o teste e deu certo.

Com esta permissão, ele não poderá mexer no restante do Painel Admin do WordPress. Ele poderá, porém, entrar no painel Admin do Tainacan e ver itens não-privados lá, mas sem editar eles ou mexer em taxonomias, filtros, coisa do tipo. Isso faz parte por quê se você tiver um metadado de relacionamento, por exemplo, ele precisa ver os itens ali pra atribuir os valores.

Fez sentido? Resolve por enquanto?

Olá.

Imagina, não precisa se desculpar.
Pois é, verifiquei aqui e realmente o perfil “Autor Tainacan” não ganha a permissão de “Editar itens” nas Coleções. Vou marcar e pedir para o usuário tentar novamente.
Se der certo, marco como solução. Senão reporto o resultado aqui.

Muito obrigado pela ajuda.

1 curtida

Olá novamente.

Deu parcialmente certo colocar a permissão de edição de itens.
O erro agora é outro, aparece “Alguma requisição deu errado devido à uma sintaxe inválida.”

Lembrando que se permitir a submissão como anônimo funciona normalmente.

Olá @ricardomoro.

Meu próximo chute vai quanto a permissão de enviar arquivos. Esta permissão é uma separada do WordPress que se não estou enganado não é concedida por padrão para os Autores… pode testar enviar sem ela? Se der certo explico um caminho para contornar isto. Se não der, nos envie por favor os detalhes desta sua requisição que deu errada (imagino que pelo console deve mostrar, na aba redes, a resposta completa).

Olá, @mateus.m.luna .

Pois é, não era essa permissão. Criei um usuário “Autor Tainacan” somente para testar. Ao submeter o formulário a mensagem que eu citei aparece. Abaixo os erros que constam no Console do navegador:

Error: Request failed with status code 404
    exports https://memoria.ifrs.edu.br/wp-content/plugins/tainacan/assets/js/vendors~tainacan-chunks-0~tainacan-chunks-10~tainacan-chunks-12~tainacan-chunks-16~tainacan-chunks-2~cbc78b93.js:1
    exports https://memoria.ifrs.edu.br/wp-content/plugins/tainacan/assets/js/vendors~tainacan-chunks-0~tainacan-chunks-10~tainacan-chunks-12~tainacan-chunks-16~tainacan-chunks-2~cbc78b93.js:1
    g https://memoria.ifrs.edu.br/wp-content/plugins/tainacan/assets/js/vendors~tainacan-chunks-0~tainacan-chunks-10~tainacan-chunks-12~tainacan-chunks-16~tainacan-chunks-2~cbc78b93.js:1
tainacan-chunks-16.js:1:125749
Requisição cross-origin bloqueada: A diretiva de mesma origem (same origin policy) impede a leitura do recurso remoto em https://o22381.ingest.sentry.io/api/1409086/envelope/?sentry_key=80341f4271be4aec89050e48a0e4553e&sentry_version=7 (motivo: falha na requisição CORS). Código de status: (null).
Error: Request failed with status code 404
    exports https://memoria.ifrs.edu.br/wp-content/plugins/tainacan/assets/js/vendors~tainacan-chunks-0~tainacan-chunks-10~tainacan-chunks-12~tainacan-chunks-16~tainacan-chunks-2~cbc78b93.js:1
    exports https://memoria.ifrs.edu.br/wp-content/plugins/tainacan/assets/js/vendors~tainacan-chunks-0~tainacan-chunks-10~tainacan-chunks-12~tainacan-chunks-16~tainacan-chunks-2~cbc78b93.js:1
    g https://memoria.ifrs.edu.br/wp-content/plugins/tainacan/assets/js/vendors~tainacan-chunks-0~tainacan-chunks-10~tainacan-chunks-12~tainacan-chunks-16~tainacan-chunks-2~cbc78b93.js:1
tainacan-chunks-16.js:1:125749

Além disso, segue a única requisição que consta:

Requisição:

GET /wp-json/tainacan/v2/collection/default/facets/4924?getSelected=0&offset=0&number=12&search=TESTEE&current_query=&count_items=0 HTTP/1.1
Host: memoria.ifrs.edu.br
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: application/json, text/plain, */*
Accept-Language: pt-BR,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate, br
X-WP-Nonce: 9b6bcdf95a
DNT: 1
Connection: keep-alive
Referer: https://memoria.ifrs.edu.br/contribua/
Cookie: PHPSESSID=tctsamt9r0d1283o4nl65hthf8; MYAPP=web73-135_SSL; wordpress_sec_4d405d409de277c390e8093e4a882eb3=01049630009%7C1639598814%7CG807l95jkNI39hWxdrMr0sQGDtS8NN9tMo44G4fSbJb%7C4d3120bdb5a758e97fc0751e91a6b861fa594a16b762036fbbf65ca8c346d3da
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Pragma: no-cache
Cache-Control: no-cache

Resposta:

HTTP/1.1 404 Not Found
Date: Tue, 14 Dec 2021 20:11:40 GMT
Server: Apache
X-Powered-By: PHP/7.3.20
Pragma: no-cache
X-Robots-Tag: noindex
Link: <https://memoria.ifrs.edu.br/wp-json/>; rel="https://api.w.org/"
X-Content-Type-Options: nosniff
Access-Control-Expose-Headers: X-WP-Total, X-WP-TotalPages, Link
Access-Control-Allow-Headers: Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
X-WP-Nonce: 9b6bcdf95a
Transfer-Encoding: chunked
Content-Type: application/json; charset=UTF-8

{"code":"rest_no_route","message":"Nenhuma rota foi encontrada que corresponde com o URL e o m\u00e9todo de requisi\u00e7\u00e3o.","data":{"status":404}}

Uhmm pera isto me parece outra questão então. Você atualizou recentemente o plugin? Se sim, já tentou o bom e velho CTRL+SHIFT+R para limpar o cache do navegador? Consegue ter certeza que nenhum cache do servidor poderia estar guardando scripts da versão antiga?

Sim, atualizei recentemente o plugin.
Porém, não uso nenhum cache nessa instalação do WP.
Inclusive esses testes foram feitos em uma janela anônima, justamente para evitar cache local.

Olá.

Consegui capturar a requisição exata que está sendo negada.

XHRPOSThttps://memoria.ifrs.edu.br/wp-json/tainacan/v2/collection/4916/items/submission
[HTTP/1.1 400 Bad Request 589ms]
	
collection_id	"4916"
comment_status	""
document	""
document_options	{…}
forced_iframe	false
forced_iframe_height	450
forced_iframe_width	600
is_image	false
document_type	""
metadata	[…]
0	
metadatum_id	4924
value	[…]
0	"TESTE"
1	
metadatum_id	4921
value	[…]
0	"TESTE"
2	
metadatum_id	2130
value	174
3	{…}
metadatum_id	4927
value	null
4	{…}
metadatum_id	6778
value	null
5	
metadatum_id	4930
value	834
6	
metadatum_id	4936
value	927
7	
metadatum_id	4942
value	136
8	
metadatum_id	4968
value	394
9	
metadatum_id	4919
value	[…]
0	"TESTE"
10	
metadatum_id	4977
value	574
11	{…}
metadatum_id	4984
value	null
12	{…}
metadatum_id	4987
value	null
13	{…}
metadatum_id	4990
value	null
14	
metadatum_id	4587
value	[…]
15	
metadatum_id	5005
value	[…]
16	
metadatum_id	5009
value	[…]
17	
metadatum_id	2176
value	[…]
18	{…}
metadatum_id	11943
value	null

E a resposta é:

XHRPOSThttps://memoria.ifrs.edu.br/wp-json/tainacan/v2/collection/4916/items/submission
[HTTP/1.1 400 Bad Request 589ms]

error_message	"Esse metadado não aceita sugestões"

Talvez seja algum problema de configuração em algum campo ou metadado?

Mais um adendo.
Aquelas requisições que enviei no comentário #6 parecem que usam uma URL inválida.

Fiz um teste com a URL https://memoria.ifrs.edu.br/wp-json/tainacan/v2/collection/default/facets/2176?getSelected=0&offset=0&number=12&search=ricardo&current_query=&count_items=0, o que retorna 404.

Porém, se ao invés da chave default eu colocar um ID válido de coleção como em https://memoria.ifrs.edu.br/wp-json/tainacan/v2/collection/4916/facets/2176?getSelected=0&offset=0&number=12&search=ricardo&current_query=&count_items=0, o retorno é 200 e um conteúdo.

Talvez um dos problemas seja que o formulário não está montando a URL correta?

Opa, isso tem relação sim… quando vc insere a coleção no bloco, ele parece não estar pegando o ID certo…

Se bem que não porque na outra requisição ali parece ok. Você tem metadados nível repositório neste formulário @ricardomoro?

Sim @mateus.m.luna , esse campo dessa requisição parece que é um metadado do repositório.

Uhmm vou fazer uns testes aqui então, parece ter relação com isso. Pode me falar de que tipo são estes nível repositório?

É do tipo Texto simples com essas configurações:

Exibir na listagem
Não exibir por padrão

Opções de preenchimento
Obrigatório, Múltiplo (máximo de 1 valores)

Exibir sugestões
Sim

Olá @mateus.m.luna

Conseguiu fazer algum teste sobre esse assunto?

@ricardomoro me desculpa, acho que me perdi aqui na conversa. Retomando aqui…

Eu acho que entendi aqui o por quê da requisição por sugestões do campo de texto estar dando erro quando o metadado é nível repositório. Vou ver se mais tarde consigo te enviar uma versão pra teste.

Se este recurso for desabilitado (o de Exibir Sugestões deste metadado), o formuário ainda dá erro ao tentar fazer o envio?

olá

Testei aqui, e ao desabilitar o “Exibir Sugestões”, os erros durante o preenchimento realmente não aparecem mais.
Porém, ao tentar submeter o formulário, o erro persiste.

Valeu @ricardomoro aquilo vai render uma issue, com certeza. Só pra termos certeza de qual dos erros anteriores que mencionamos estamos falando agora:

  • A sua coleção é pública?
  • Os metadados dela são públicos?
  • O usuário que você está testando agora é aquele “Autor do Tainacan” com permissão de “Editar itens” configurada?

Um teste válido aqui só pra confirmar que é a questão da permissão que estamos pensando: logado com este usuário, veja se você consegue entrar no painel e criar um item nesta coleção.