from flask import request, jsonify from flask_jwt_extended import create_access_token from . import api_bp from ..models import User from ..schemas import UserCreateSchema from ..services import AuthService user_create_schema = UserCreateSchema() @api_bp.route("/auth/register", methods=["POST"]) def register(): data = request.get_json() errors = user_create_schema.validate(data) if errors: return jsonify({"error": errors}), 400 try: user = AuthService.register( data["username"], data["password"], data.get("email") ) access_token = create_access_token(identity=user.id) return jsonify( { "message": "注册成功", "user": user.to_dict(), "access_token": access_token, } ), 201 except ValueError as e: return jsonify({"error": str(e)}), 400 @api_bp.route("/auth/login", methods=["POST"]) def login(): data = request.get_json() username = data.get("username") password = data.get("password") if not username or not password: return jsonify({"error": "用户名和密码不能为空"}), 400 try: user = AuthService.login(username, password) access_token = create_access_token(identity=user.id) return jsonify( { "message": "登录成功", "user": user.to_dict(), "access_token": access_token, } ), 200 except ValueError as e: return jsonify({"error": str(e)}), 401