Files
sentclaw/backend/app/api/auth.py
T
2026-04-07 16:05:05 +08:00

56 lines
1.5 KiB
Python

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