3.4 KiB
3.4 KiB
目标
- 管理员登录入口改为
/admin,使用默认账户:用户名Admin,密码lzgzsystem - 首次进入管理员界面强制修改密码(未修改前禁止访问后台其他页面)
- 管理员可创建与管理两类角色:
sub_admin(副管理员),checker(审核员) - 角色管理页面路径:
/sub-admin与/checker
数据模型改动
users表:新增字段must_change_password(bool,默认False;初始管理员为True)role字段允许值:admin、sub_admin、checker、user
初始化与登录流程
- 应用启动时检测是否存在
role='admin'用户;若不存在则自动创建:- 用户名:
Admin,密码:lzgzsystem(存储为哈希),状态:approved,must_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/posts、POST /admin/reviews/posts/<id>/approve|rejectGET /admin/reviews/submissions、POST /admin/reviews/submissions/<id>/approve|reject
checker不允许:用户注册审核与活动创建/发布关闭
安全与校验
- 登录密码与修改密码使用
werkzeug.security哈希 - CSRF 保护表单;错误信息与成功提示采用圆角卡片样式
- 防止硬编码密码泄露:仅首启自动创建一次,之后必须修改密码
实施步骤
- 修改
User模型,新增must_change_password字段 - 在应用工厂中:启动时自动创建默认管理员(若不存在)
- 在
admin蓝图中新增/admin登录与/admin/change-password强制修改密码流程,更新守卫权限逻辑 - 新增
sub-admin与checker管理页面与路由(创建、提升、撤销) - 调整审核路由访问权限,确保
checker只能审核图片/投稿 - 更新模板导航,增加入口,保持圆润主题风格
- 验证:首次启动 →
/admin登录默认账户 → 强制改密 → 进入后台 → 创建副管理员/审核员 → 使用审核员账户访问审核页
确认后我将开始实施上述改造并进行验证。