Skip to content

Restringir upload de imagens de documentos para os formatos .jpg, .jpeg, .png e .webp #562

Description

@Junior-Shyko

📌 Contexto

Atualmente, no upload de imagens para documentos (cabeçalho e rodapé), a validação precisa garantir estritamente os formatos homologados para processamento em PDF (Dompdf) e DOCX (PHPWord), evitando formatos não suportados ou problemáticos (como .gif, .bmp, .svg).

Esta issue tem como objetivo restringir formalmente os uploads de imagens para os formatos: .jpg, .jpeg, .png e .webp.


🎯 Especificação em Formato Gherkin (BDD)

Funcionalidade: Validação e Restrição de Formatos de Imagens em Documentos

Como usuário do sistema
Quero anexar imagens nos cabeçalhos e rodapés dos documentos apenas em formatos homologados (.jpg, .jpeg, .png, .webp)
Para que a renderização e download dos documentos em PDF e DOCX ocorram sem erros ou falhas de layout.


Cenário 1: Upload com sucesso de imagem em formato permitido

Cenário: Upload de imagem com extensão e formato suportados
  Dado que o usuário está na tela de criação ou edição de um documento
  Quando o usuário seleciona uma imagem com extensão "<extensao>" e MIME type válido
  E solicita o salvamento do documento
  Então o sistema deve aceitar o arquivo
  E armazenar a imagem no storage público de documentos
  E vincular a imagem ao documento com sucesso

Exemplos:
  | extensao |
  | .jpg     |
  | .jpeg    |
  | .png     |
  | .webp    |

Cenário 2: Rejeição de imagem com formato não permitido

Cenário: Tentativa de upload com extensão ou MIME type não suportado
  Dado que o usuário está na tela de criação ou edição de um documento
  Quando o usuário seleciona um arquivo de imagem com extensão "<extensao_invalida>" (ex: .gif, .bmp, .svg, .tiff)
  E solicita o salvamento do documento
  Então o sistema deve recusar o upload
  E retornar um erro de validação informando que apenas imagens nos formatos .jpg, .jpeg, .png e .webp são permitidas
  E nenhuma imagem deve ser gravada no storage

Cenário 3: Restrição no seletor de arquivos do frontend

Cenário: Restrição de tipos de arquivos no seletor de arquivos
  Dado que o usuário abre o diálogo de criação/edição de documentos
  Quando o componente de upload de imagem é renderizado
  Então o campo de seleção de arquivo deve restringir o atributo "accept" para "image/jpeg,image/png,image/webp,.jpg,.jpeg,.png,.webp"

📋 Critérios de Aceitação

  • Backend (Web & API):
    • Validação de upload no ProjectController::createDocument configurada explicitamente para mimes:jpeg,jpg,png,webp e mimetypes:image/jpeg,image/png,image/webp.
    • Validação de path no DocumentStoreRequest e DocumentUpdateRequest restrita a \.(?:jpe?g|png|webp)\z.
  • Frontend:
    • Componente de upload de imagem (HandleDocumentsDialog.vue / inputs de imagem) configurado com accept="image/jpeg,image/png,image/webp,.jpg,.jpeg,.png,.webp".
    • Exibição de mensagens de erro amigáveis ao usuário caso um formato inválido seja selecionado.
  • Testes Automatizados:
    • Testes de Feature validando que uploads de .jpg, .jpeg, .png e .webp são aceitos com sucesso.
    • Testes de Feature validando que uploads de formatos não homologados (ex: .gif, .svg, .bmp, .pdf) são rejeitados com status HTTP 422 Unprocessable Entity.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions