Skip to content

管理后台 API (Admin)

admin_bp 蓝图是系统的“核心司令部”。它通过硬编码与环境变量结合的方式定义超级管理员权限,允许执行敏感的数据清理与跨用户审计操作。


系统采用 RBAC (基于角色的访问控制) 模型。权限校验通过自定义装饰器 @admin_required 实现,具备以下逻辑特点:

  1. 环境变量驱动:管理员名单通过 ADMIN_USERNAMES 配置,增强了部署灵活性。
  2. 硬性级联保护:禁止删除名单内的管理员账号,防止系统孤立。
  3. 身份溯源:解析 JWT 中的 identity 并在数据库中检索 User 对象以确保权限的实时有效性。

拉取系统内所有注册用户的基本档案。

  • URL: /users
  • Method: GET
  • Auth: @admin_required
[
{
"id": 1,
"username": "Yanghe",
"email": "admin@coal.edu",
"real_name": "首席",
"school": "大学"
}
]

该模块允许管理员监控全系统的计算资源消耗情况。

通过 SQLAlchemy 多表 Join 操作,实时聚合用户信息与计算参数。

  • 排序策略:按 timestamp 倒序排列,最新计算优先展示。
  • 数据回填:自动将 JSON 存储的 input_paramsCalcResult 对象合并返回。

2. 异常记录清理 (DELETE /records/<id>)

Section titled “2. 异常记录清理 (DELETE /records/<id>)”

用于移除因输入异常、算法发散或测试产生的不必要数据。


def admin_required(fn):
"""
@description 高阶函数拦截器
1. 验证 JWT 令牌合法性
2. 校验 User 模型中的 username 是否处于管理名单
"""
@jwt_required()
def wrapper(*args, **kwargs):
identity = get_jwt_identity()
user = db.session.get(User, int(identity))
if not user or not is_admin_user(user):
return jsonify({"msg": "拒绝访问:权限不足"}), 403
return fn(*args, **kwargs)
return wrapper