Files
Graphics-Analitics-Backend/service/usuario_service.py
T
2026-04-15 17:12:35 -03:00

49 lines
1.3 KiB
Python

from model.usuario import Usuario, UsuarioNaoEncontrado, EmailJaCadastrado, SenhaInvalida
from dao.usuario_dao import UsuarioDao
import bcrypt
class UsuarioService:
_instancia = None
@classmethod
def instancia(cls):
if cls._instancia is None:
cls._instancia = cls()
return cls._instancia
def __init__(self):
self.dao = UsuarioDao.instancia()
def registrar(self, nome, email, senha):
if self.dao.buscar_por_email(email):
raise EmailJaCadastrado()
senha_hash = bcrypt.hashpw(
senha.encode('utf-8'),
bcrypt.gensalt()
).decode('utf-8')
usuario = Usuario(nome=nome, email=email, senha_hash=senha_hash)
return self.dao.criar(usuario)
def buscar_por_id(self, id):
usuario = self.dao.buscar_por_id(id)
if not usuario:
raise UsuarioNaoEncontrado()
return usuario
def login(self, email, senha):
usuario = self.dao.buscar_por_email(email)
if not usuario:
raise UsuarioNaoEncontrado()
senha_correta = bcrypt.checkpw(
senha.encode('utf-8'),
usuario.senha_hash.encode('utf-8')
)
if not senha_correta:
raise SenhaInvalida()
return usuario