from flask import Blueprint, request, jsonify from flask_jwt_extended import create_access_token, jwt_required, get_jwt_identity from models import User from database 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() } })