fix(): Criado função que gera o hash para visualização de documentos

This commit is contained in:
Kenio 2025-11-06 09:56:47 -03:00
parent 02228d2569
commit c6eb6c38c5
3 changed files with 41 additions and 4 deletions

View file

@ -0,0 +1,28 @@
# utils/hash_generator.py
from datetime import date
import hashlib
def generate_storage_hash() -> str:
"""
Gera um hash SHA-256 baseado na data atual no formato YYYYMMDD.
Útil, por exemplo, para criar chaves ou nomes únicos em arquivos estáticos.
Retorna:
str: Hash SHA-256 em formato hexadecimal.
"""
# Obtém a data atual (somente ano, mês e dia)
today = date.today()
# Formata a data como string "YYYYMMDD"
storage_date = today.strftime("%Y%m%d")
# Cria o objeto de hash SHA-256
h = hashlib.sha256()
# Atualiza o hash com o texto codificado em UTF-8
h.update(storage_date.encode("utf-8"))
# Retorna o hash em formato hexadecimal
return h.hexdigest()

View file

@ -15,6 +15,7 @@ from pathlib import Path
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import Response
from starlette.middleware.base import BaseHTTPMiddleware
from actions.validations.hash import generate_storage_hash
# Importa middleware de captura de erros junto ao banco de dados
from middlewares.error_handler import database_error_handler
@ -43,7 +44,7 @@ if not os.path.isdir(STORAGE_DIR):
# 3. Monte o diretório estático
# Isso mapeia o caminho local STORAGE_DIR para o prefixo de URL '/storage-files'
app.mount(
"/storage-files", # <- ESTE É O PREFIXO DA URL PÚBLICA
"/" + generate_storage_hash(), # <- ESTE É O PREFIXO DA URL PÚBLICA
StaticFiles(directory=STORAGE_DIR),
name="storage_access",
)

View file

@ -8,7 +8,7 @@ from packages.v1.administrativo.models.ato_documento_model import AtoDocumento
from packages.v1.administrativo.schemas.ato_principal_schema import (
AtoPrincipalCodigoAtoSchema,
)
from datetime import datetime
from actions.validations.hash import generate_storage_hash
# === Recupera configurações e chave AES ===
DB_SETTINGS = get_database_settings()
@ -107,7 +107,11 @@ class ShowAtosRepository:
documentos_list = [
{
"url": (
URL_API + "/storage-files/" + d.url.decode("utf-8")
URL_API
+ "/"
+ generate_storage_hash()
+ "/"
+ d.url.decode("utf-8")
if d.url
else None
),
@ -171,7 +175,11 @@ class ShowAtosRepository:
documentos_vinc_list = [
{
"url": (
URL_API + "/storage-files/" + d.url.decode("utf-8")
URL_API
+ "/"
+ generate_storage_hash()
+ "/"
+ d.url.decode("utf-8")
if d.url
else None
),