57 lines
3.4 KiB
Markdown
57 lines
3.4 KiB
Markdown
## 目标
|
||
- 管理员登录入口改为 `/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|reject`
|
||
- `GET /admin/reviews/submissions`、`POST /admin/reviews/submissions/<id>/approve|reject`
|
||
- `checker` 不允许:用户注册审核与活动创建/发布关闭
|
||
|
||
## 安全与校验
|
||
- 登录密码与修改密码使用 `werkzeug.security` 哈希
|
||
- CSRF 保护表单;错误信息与成功提示采用圆角卡片样式
|
||
- 防止硬编码密码泄露:仅首启自动创建一次,之后必须修改密码
|
||
|
||
## 实施步骤
|
||
1. 修改 `User` 模型,新增 `must_change_password` 字段
|
||
2. 在应用工厂中:启动时自动创建默认管理员(若不存在)
|
||
3. 在 `admin` 蓝图中新增 `/admin` 登录与 `/admin/change-password` 强制修改密码流程,更新守卫权限逻辑
|
||
4. 新增 `sub-admin` 与 `checker` 管理页面与路由(创建、提升、撤销)
|
||
5. 调整审核路由访问权限,确保 `checker` 只能审核图片/投稿
|
||
6. 更新模板导航,增加入口,保持圆润主题风格
|
||
7. 验证:首次启动 → `/admin` 登录默认账户 → 强制改密 → 进入后台 → 创建副管理员/审核员 → 使用审核员账户访问审核页
|
||
|
||
---
|
||
确认后我将开始实施上述改造并进行验证。 |