60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
# utils/hash_generator.py
|
|
from jose import jwt
|
|
from datetime import datetime, timedelta
|
|
from datetime import date
|
|
import hashlib
|
|
|
|
|
|
# Função que gera o hash baseado na data atual
|
|
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 apenas os 12 primeiros caracteres do hash hexadecimal
|
|
return h.hexdigest()[:12]
|
|
|
|
|
|
# Função que gera o token temporário para acesso ao documento
|
|
# def generate_temporary_token(
|
|
# expires_minutes: int,
|
|
# secret_key: str,
|
|
# algorithm: str,
|
|
# ) -> str:
|
|
# """Gera um token JWT válido por poucos minutos."""
|
|
# expire = datetime.utcnow() + timedelta(minutes=expires_minutes)
|
|
# payload = {
|
|
# "exp": expire,
|
|
# }
|
|
# return jwt.encode(payload, secret_key, algorithm=algorithm)
|
|
|
|
|
|
def generate_temporary_token(
|
|
file_path: str,
|
|
expires_minutes: int,
|
|
secret_key: str,
|
|
algorithm: str,
|
|
) -> str:
|
|
"""Gera um token JWT válido por poucos minutos."""
|
|
expire = datetime.utcnow() + timedelta(minutes=expires_minutes)
|
|
payload = {
|
|
"sub": file_id,
|
|
"filename": file_path, # caminho relativo completo
|
|
"exp": expire,
|
|
}
|
|
return jwt.encode(payload, secret_key, algorithm=algorithm)
|