monitoring-api/actions/security/security.py
2025-10-06 09:30:41 -03:00

43 lines
1.5 KiB
Python

# core/security.py
# Importa CryptContext da biblioteca passlib para operações de hash de senha
from passlib.context import CryptContext
# Cria uma instância do contexto de criptografia
# O esquema usado é 'bcrypt', que é seguro e amplamente aceito
# O parâmetro 'deprecated="auto"' marca versões antigas como inseguras, se aplicável
CRYPTO = CryptContext(schemes=['bcrypt'], deprecated='auto')
class Security:
# Verifica se a senha tem um hash válido
@staticmethod
def is_hash(senha: str) -> bool:
"""
Verifica se a string fornecida é um hash reconhecido pelo CryptContext.
"""
return CRYPTO.identify(senha)
# Verifica se uma senha fornecida corresponde ao hash armazenado
def verify_password(plain_password: str, hashed_password: str) -> bool:
"""
Compara a senha fornecida em texto puro com o hash armazenado.
:param plain_password: Senha digitada pelo usuário
:param hashed_password: Hash da senha armazenado no banco de dados
:return: True se corresponder, False se não
"""
return CRYPTO.verify(plain_password, hashed_password)
# Gera o hash de uma senha fornecida
def hash_password(plain_password: str) -> str:
"""
Gera e retorna o hash da senha fornecida.
:param plain_password: Senha em texto puro fornecida pelo usuário
:return: Hash da senha
"""
return CRYPTO.hash(plain_password)