60 lines
1.8 KiB
Python
Raw Normal View History

2025-07-09 22:44:18 +08:00
from flask import Blueprint, request, jsonify
from flask_jwt_extended import create_access_token, jwt_required, get_jwt_identity
from models import User
from app import db
auth_bp = Blueprint('auth', __name__)
@auth_bp.route('/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({'message': '用户名和密码不能为空'}), 400
user = User.query.filter_by(username=username).first()
if user and user.check_password(password):
if user.status != 'active':
return jsonify({'message': '账户已被禁用'}), 403
access_token = create_access_token(identity=user.id)
return jsonify({
'token': access_token,
'user': {
'id': user.id,
'username': user.username,
'realName': user.real_name,
'role': user.role,
'permissions': user.get_permissions()
}
})
return jsonify({'message': '用户名或密码错误'}), 401
@auth_bp.route('/logout', methods=['POST'])
@jwt_required()
def logout():
return jsonify({'message': '退出登录成功'})
@auth_bp.route('/profile', methods=['GET'])
@jwt_required()
def profile():
user_id = get_jwt_identity()
user = User.query.get(user_id)
if not user:
return jsonify({'message': '用户不存在'}), 404
return jsonify({
'user': {
'id': user.id,
'username': user.username,
'realName': user.real_name,
'email': user.email,
'role': user.role,
'permissions': user.get_permissions()
}
})