Meu_projeto/app/routes/user_routes.py
2025-05-16 19:55:05 -04:00

56 lines
1.7 KiB
Python

from flask import Blueprint, jsonify, request
from app.auth import generate_token, token_required
from app.models.user import User
from app.database import db
from werkzeug.security import generate_password_hash, check_password_hash
user_bp = Blueprint("users", __name__)
@user_bp.route("/", methods=["GET"])
@token_required # Protege a rota
def get_users(self):
users = User.query.all() # select * from User
return jsonify([{"id": u.id, "name": u.name, "email": u.email} for u in users])
@user_bp.route("/", methods=["POST"])
def create_user(self):
data = request.get_json()
print(data)
nome = data.get("nome")
email = data.get("email")
senha = data.get("senha")
# Verificar se o usuário já existe
if User.query.filter_by(email=email).first():
return jsonify({"message": "Usuário já existe!"}), 400
# Gerar senha criptografada
hashed_password = generate_password_hash(senha, method="pbkdf2:sha256")
# Criar novo usuário
new_user = User(nome=nome, email=email, senha=senha)
# Adicionar e salvar no banco de dados
db.session.add(new_user)
db.session.commit()
return jsonify({"message": "Usuário registrado com sucesso!"}), 201
# Rota para login de usuário
@user_bp.route("/login", methods=["POST"])
def login_user():
data = request.get_json()
print(data)
email = data.get("email")
senha = data.get("senha")
user = User.query.filter_by(email=email).first()
if not user or not check_password_hash(user.senha, senha):
return jsonify({"message": "Credenciais inválidas!"}), 401
token = generate_token(user)
return jsonify({"message": "Login bem-sucedido", "token": token}), 200