Trabalhar com os anexos de um registro
Leitura de 5 minutos
O painel de Anexos de um registro permite listar, baixar, anexar e excluir arquivos daquele registro. O que você alcança ali depende de duas condições, nesta ordem: a sua permissão na tela e, nos módulos que recortam os registros por dono, se o registro é um dos que a tela mostra a você.
1. A permissão da tela vem primeiro
Seção intitulada “1. A permissão da tela vem primeiro”Cada ação do painel pede uma permissão na tela do registro:
| Ação | Permissão na tela |
|---|---|
| Listar e baixar anexos | Consultar |
| Anexar um arquivo | Incluir ou Alterar |
| Excluir um anexo | Alterar ou Excluir |
Quem só tem Consultar lista e baixa, mas não anexa nem exclui anexo.
2. Nos módulos com filtro por dono, o registro também conta
Seção intitulada “2. Nos módulos com filtro por dono, o registro também conta”Alguns módulos mostram a cada usuário só os registros dele. Hoje, é o caso de Prestação de Serviços. Nesses módulos, o painel de Anexos segue a mesma regra da tela: quem não enxerga o registro também não lista, não baixa, não anexa e não exclui os anexos dele.
Quem alcança os anexos de um registro:
- o dono do registro;
- o gerente do módulo, quando o campo de gerente do módulo está marcado no cadastro do usuário;
- o master.
O gerente e o master não sofrem o filtro. Quem não é gerente enxerga só os registros em que é o dono. O filtro só vale quando o módulo da tela o liga: em tela de módulo sem filtro por dono, nada muda e vale só a permissão da tela.
O recorte dos anexos é o mesmo que a tela aplica aos registros dela. Por isso, o que você não vê na grade você também não alcança pelo painel de Anexos, mesmo informando o número do registro.
O que aparece quando o registro está fora do seu alcance
Seção intitulada “O que aparece quando o registro está fora do seu alcance”| Ação | Resposta |
|---|---|
| Listar ou anexar | “Registro não encontrado.” |
| Baixar ou excluir um anexo | “Permissão negada.” |
As duas respostas são iguais às de quando o item não existe, para não revelar que ele existe:
- “Registro não encontrado.” é a mesma resposta para um registro que não existe, para um registro de outro usuário e para um registro cuja chave não fecha com a chave da tabela ou tem valor inválido para o tipo da chave.
- “Permissão negada.” é a mesma resposta para um anexo de registro fora do seu alcance e para um anexo que não existe. Nesses casos o conteúdo do arquivo nem é lido e nada é apagado.
O conteúdo do arquivo só sai pelo painel de Anexos
Seção intitulada “O conteúdo do arquivo só sai pelo painel de Anexos”A consulta genérica da tabela de anexos (listagem e busca) devolve os dados do arquivo — nome, tipo, tamanho e hash —, mas não o conteúdo. O download do conteúdo segue só pelo painel de Anexos. Outras tabelas que tenham uma coluna de mesmo nome não são afetadas.
Duas consequências nas pesquisas:
- Filtrar pelo conteúdo do arquivo é recusado com “Campo de filtro inválido.”.
- Quem não é master e não vê campos sensíveis também não consegue usar um campo sensível como critério de filtro na consulta genérica, e recebe a mesma mensagem, “Campo de filtro inválido.”. Campo comum continua filtrável, e o master filtra por campo sensível normalmente.
Em consulta SQL escrita à mão
Seção intitulada “Em consulta SQL escrita à mão”O conteúdo do anexo (a coluna ARQUIVO da tabela de anexos) fica de fora do
resultado de SQL escrito à mão. Para quem não é master nem tem a permissão de ver
campos sensíveis, citar a coluna pelo nome é recusado com “Campo sensível não pode
ser consultado por SQL: ARQUIVO”. Um SELECT * da tabela devolve as demais
colunas, como o nome do arquivo, sem ARQUIVO.
Para esse mesmo perfil, a consulta que compõe a linha inteira (por exemplo, com
to_jsonb, ::text, row ou agregação de texto) também é recusada, com mensagem
própria. A mesma lista de colunas protegidas cobre ainda os hashes de senha dos
cadastros de usuário.
O alcance dessa regra, segundo o código, é este: no Explorador de Banco de Dados ela vale para quem não vê campos sensíveis, e nas ferramentas da IA vale para todos, inclusive o master. A aplicação ao Filtro avançado não foi confirmada.
Problemas comuns
Seção intitulada “Problemas comuns”Recebi “Registro não encontrado.” ao listar ou anexar. O registro não existe, não é seu ou a chave informada não é válida para a tabela. Nos módulos com filtro por dono, só o dono, o gerente do módulo e o master alcançam os anexos de um registro.
Recebi “Permissão negada.” ao baixar ou excluir um anexo. O anexo é de um registro fora do seu alcance, ou ele não existe: a resposta é a mesma nos dois casos.
Consigo listar e baixar, mas não anexar nem excluir. A sua permissão na tela é só Consultar. Anexar pede Incluir ou Alterar; excluir um anexo pede Alterar ou Excluir.
Um filtro foi recusado com “Campo de filtro inválido.”. O campo usado como critério é o conteúdo do arquivo, ou é um campo sensível e o seu perfil não é master nem vê campos sensíveis. Use um campo comum.