Olá,
Estamos testando agora a submissão de itens via frontend.
- Criamos uma coleção e demos permissão para submissão de itens
- Deixamos a opção de envio anônimo desligado
- Incluímos o bloco numa página, configurando a submissão da coleção configura como descrito acima
- Ao acessar essa página sem login, o formulário é exibido
- Ao tentar enviar, aparece um erro 401 (Unauthorized) no console javascript
O esperado seria que o formulário não fosse exibido.
Isso seria um bug, ou estou perdendo algum ponto? Caso sim, posso tentar investigar.
abs,
alan
Olá @alantygel!
Se a página está pública, a coleção está pública e os metadados estão públicos, não tem por quê o formulário não aparecer, o que está restringido é o envio, justamente a parte que está sendo bloqueada.
Oi Mateus, obrigado pela resposta!
- página está pública → Sim, a página tem que ser exibida
- coleção está pública → Sim, a coleção está pública para visualização, porém não se trata de visualizar a coleção e sim de um formulário de envio
- metadados estão públicos → da mesma forma, públicos para ver, não para enviar.
Me parece que o correto seria que o formulário não fosse renderizado. E que aparecesse uma imagem: para enviar um item por este formulário, você precisa estar logado.
Inclusive porque, ao enviar uma submissão sem login, a tela fica num loading infinito. O erro aparece apenas no console.
Caso você concorde com esse caminho (não mostrar o formulário caso não haja permissão para envio anônimo), posso tentar rascunhar aqui uma solução!
abs,
alan
Eu concordo em partes… os campos estarem lá são consequência das três coisas serem públicas, mas a API previne qualquer envio. De qualquer forma, os erros de envio deveriam sim ser exibidos na interface, o que pode ser de fato um bug.
Até então minha linha de raciocínio com este cenário vinha considerando muito que, se o formulário não deve ser visto, isso poderia ser controlado via privacidade ou da página, ou da coleção ou do metadado. Mas entendo que pode haver um caso onde, por exemplo, você insira ele em uma página cujo conteúdo em geral dever ser público e interativo, exceto pelo formulário. Então acho que pode valer sim abrirmos uma issue para tratar disso. Só não temos condição de atender isso por agora, pode ser um bom caso para uma primeira pull request que mecha na parte Vue do código 
Fico um pouco preocupado da solução não caber de forma ótima no bloco Gutenberg. Podemos colocar um IF no componente Vue, mas como vai ser a mensagem… por exemplo, temos as opções para definir a mensagem de envio com sucesso, mas logo tivemos que fazer ela customizável e logo tivemos que fazer um botão com link para o item enviado… este tipo de coisa pode crescer.
Se for pra ser objetivo e simples, uma mensagem que apenas informe que é preciso estar logado para ver o formulário (ou que diga que não há permissão para isso), pode ser definida em um v-else seguinte à este v-if:
Para checar se o usuário está logado, é preciso ver se a variável global tainacan_plugin.user_data
é um array vazio ou não. Daí usamos collection.submission_anonymous_user
junto pra fazer a pergunta… acho que seria por aí.
1 curtida