Adiciona login ao usuario

This commit is contained in:
Fernanda
2026-04-15 17:12:35 -03:00
parent f7033a00a3
commit b3e185c6e0
4 changed files with 40 additions and 4 deletions
-2
View File
@@ -6,12 +6,10 @@ from controller.dispositivo_controller import dispositivo_bp
from controller.leitura_controller import leitura_bp from controller.leitura_controller import leitura_bp
import os import os
# Variaveis dinamicas que sao usadas para definir qual a porta do servidor e o host do mesmo
host = str(os.environ.get("HOST", "localhost")) host = str(os.environ.get("HOST", "localhost"))
port = int(os.environ.get("PORT", 5000)) port = int(os.environ.get("PORT", 5000))
debug = str(os.environ.get("DEBUG", "true")) debug = str(os.environ.get("DEBUG", "true"))
# Variaveis dinamicas usadas para definir o Host do banco de dados assim conectando a banco de dados dedicado
db_user = str(os.environ.get("POSTGRES_DB_KEY", "fauUser")) db_user = str(os.environ.get("POSTGRES_DB_KEY", "fauUser"))
db_name = str(os.environ.get("POSTGRES_USER_KEY", "facu")) db_name = str(os.environ.get("POSTGRES_USER_KEY", "facu"))
db_host = str(os.environ.get("POSTGRES_HOST_KEY", "127.0.0.1")) db_host = str(os.environ.get("POSTGRES_HOST_KEY", "127.0.0.1"))
+21 -1
View File
@@ -1,6 +1,6 @@
from flask import Blueprint, request, jsonify from flask import Blueprint, request, jsonify
from service.usuario_service import UsuarioService from service.usuario_service import UsuarioService
from model.usuario import EmailJaCadastrado, UsuarioNaoEncontrado from model.usuario import EmailJaCadastrado, UsuarioNaoEncontrado, SenhaInvalida
usuario_bp = Blueprint('usuario', __name__) usuario_bp = Blueprint('usuario', __name__)
@@ -24,6 +24,26 @@ def registrar():
return jsonify({"erro": "Email ja cadastrado"}), 409 return jsonify({"erro": "Email ja cadastrado"}), 409
@usuario_bp.route('/auth/login', methods=['POST'])
def login():
dados = request.get_json()
try:
usuario = UsuarioService.instancia().login(
email=dados['email'],
senha=dados['senha']
)
return jsonify({
"id": usuario.id,
"nome": usuario.nome,
"email": usuario.email,
"token_api": usuario.token_api
})
except UsuarioNaoEncontrado:
return jsonify({"erro": "Email nao encontrado"}), 404
except SenhaInvalida:
return jsonify({"erro": "Senha invalida"}), 401
@usuario_bp.route('/auth/usuario/<int:id>', methods=['GET']) @usuario_bp.route('/auth/usuario/<int:id>', methods=['GET'])
def buscar(id): def buscar(id):
try: try:
+4
View File
@@ -10,6 +10,10 @@ class EmailJaCadastrado(Exception):
pass pass
class SenhaInvalida(Exception):
pass
class Usuario(db.Model): class Usuario(db.Model):
__tablename__ = 'usuarios' __tablename__ = 'usuarios'
+15 -1
View File
@@ -1,4 +1,4 @@
from model.usuario import Usuario, UsuarioNaoEncontrado, EmailJaCadastrado from model.usuario import Usuario, UsuarioNaoEncontrado, EmailJaCadastrado, SenhaInvalida
from dao.usuario_dao import UsuarioDao from dao.usuario_dao import UsuarioDao
import bcrypt import bcrypt
@@ -32,3 +32,17 @@ class UsuarioService:
if not usuario: if not usuario:
raise UsuarioNaoEncontrado() raise UsuarioNaoEncontrado()
return usuario 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