27 lines
858 B
Python
27 lines
858 B
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
from __future__ import annotations
|
||
|
||
from functools import wraps
|
||
|
||
from flask import jsonify, request, session
|
||
|
||
from services.runtime import get_logger
|
||
|
||
|
||
def admin_required(f):
|
||
"""管理员权限装饰器(不改变原有接口/行为)。"""
|
||
|
||
@wraps(f)
|
||
def decorated_function(*args, **kwargs):
|
||
logger = get_logger()
|
||
logger.debug(f"[admin_required] 检查会话,admin_id存在: {'admin_id' in session}")
|
||
if "admin_id" not in session:
|
||
logger.warning(f"[admin_required] 拒绝访问 {request.path} - session中无admin_id")
|
||
return jsonify({"error": "需要管理员权限"}), 403
|
||
logger.info(f"[admin_required] 管理员 {session.get('admin_username')} 访问 {request.path}")
|
||
return f(*args, **kwargs)
|
||
|
||
return decorated_function
|
||
|