Files
luntan/.trae/documents/管理员登录与角色管理改造计划.md

3.4 KiB
Raw Blame History

目标

  • 管理员登录入口改为 /admin,使用默认账户:用户名 Admin,密码 lzgzsystem
  • 首次进入管理员界面强制修改密码(未修改前禁止访问后台其他页面)
  • 管理员可创建与管理两类角色:sub_admin(副管理员),checker(审核员)
  • 角色管理页面路径:/sub-admin/checker

数据模型改动

  • users 表:新增字段 must_change_passwordbool默认 False;初始管理员为 True
  • role 字段允许值:adminsub_admincheckeruser

初始化与登录流程

  • 应用启动时检测是否存在 role='admin' 用户;若不存在则自动创建:
    • 用户名:Admin,密码:lzgzsystem(存储为哈希),状态:approvedmust_change_password=True
  • GET/POST /admin
    • 显示管理员登录表单(用户名/密码)
    • 登录成功后检查 must_change_password:若为 True,重定向 GET /admin/change-password
  • GET/POST /admin/change-password
    • 强制管理员修改密码(校验长度与复杂度、确认密码一致)
    • 修改成功后将 must_change_password=False,跳转至管理员仪表盘

权限与访问控制

  • 后台守卫逻辑:
    • admin:访问全部后台页面(含角色创建与分配)
    • sub_admin:访问审核与活动管理,但不能创建/变更管理员与审核员角色
    • checker:仅可访问图片与投稿审核相关页面(/admin/reviews/posts/admin/reviews/submissions
  • admin 蓝图的 before_request 更新为:如非登录态或无后台权限角色,重定向到 /admin 登录页
  • 移除之前的 /setup/admin 首次引导逻辑(入口统一 /admin

页面与路由新增

  • 角色管理:
    • GET/POST /sub-admin:列表所有 sub_admin;提供表单创建新副管理员(邮箱/用户名/密码),或将现有用户提升为 sub_admin;支持撤销角色
    • GET/POST /checker:列表所有 checker;同上创建审核员或将现有用户赋予 checker 角色;支持撤销角色
  • 导航:
    • 登录后后台导航新增入口到 /sub-admin/checker

审核权限调整

  • checker 可访问:
    • GET /admin/reviews/postsPOST /admin/reviews/posts/<id>/approve|reject
    • GET /admin/reviews/submissionsPOST /admin/reviews/submissions/<id>/approve|reject
  • checker 不允许:用户注册审核与活动创建/发布关闭

安全与校验

  • 登录密码与修改密码使用 werkzeug.security 哈希
  • CSRF 保护表单;错误信息与成功提示采用圆角卡片样式
  • 防止硬编码密码泄露:仅首启自动创建一次,之后必须修改密码

实施步骤

  1. 修改 User 模型,新增 must_change_password 字段
  2. 在应用工厂中:启动时自动创建默认管理员(若不存在)
  3. admin 蓝图中新增 /admin 登录与 /admin/change-password 强制修改密码流程,更新守卫权限逻辑
  4. 新增 sub-adminchecker 管理页面与路由(创建、提升、撤销)
  5. 调整审核路由访问权限,确保 checker 只能审核图片/投稿
  6. 更新模板导航,增加入口,保持圆润主题风格
  7. 验证:首次启动 → /admin 登录默认账户 → 强制改密 → 进入后台 → 创建副管理员/审核员 → 使用审核员账户访问审核页

确认后我将开始实施上述改造并进行验证。