Files
huang 9c399df6bc feat(auth): 新增系统启动时自动初始化默认超级管理员功能
- 新增默认管理员自动初始化逻辑,系统启动时检查并创建超级管理员账号
- 支持通过配置文件自定义账号信息(优先级:配置文件 > 代码默认值)
- 新增 CreateSystemAccount 方法用于系统内部账号创建
- 新增默认管理员配置项和常量定义
- 更新 README.md 添加默认账号使用说明
- 归档 OpenSpec 变更提案及完整文档

相关文件:
- internal/bootstrap/admin.go: 管理员初始化逻辑
- internal/service/account/service.go: 系统账号创建方法
- pkg/config/config.go: 默认管理员配置结构
- pkg/constants/constants.go: 默认值常量定义
- docs/add-default-admin-init/功能说明.md: 完整功能文档
2026-01-14 10:53:42 +08:00

85 lines
3.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 实现任务清单
## 1. 实现管理员初始化逻辑
- [x] 1.1 在 `internal/service/account/service.go` 添加内部创建方法 `CreateSystemAccount()`
- 绕过当前用户 ID 检查(系统初始化场景)
- 接受完整的 Account 结构体
- 保留用户名和手机号唯一性检查
- 密码使用 bcrypt 哈希
- [x] 1.2 在 `internal/bootstrap/admin.go` 添加 `initDefaultAdmin()` 函数
- 检查数据库是否存在 `user_type = 1` 的账号
- 如果不存在,创建默认管理员账号
- 读取账号信息的优先级:
1. 优先使用 `config.DefaultAdmin`(如果配置了)
2. 如果配置为空,使用 `constants` 中的代码默认值
- 记录初始化成功/跳过日志(包括使用的用户名)
- [x] 1.3 在 `internal/bootstrap/bootstrap.go``Bootstrap()` 函数中调用 `initDefaultAdmin()`
- 在所有组件初始化完成后调用
- 在返回 handlers 前执行
- 如果初始化失败,记录错误但不中断启动(降级处理)
## 2. 添加配置和常量
- [x] 2.1 在 `pkg/config/config.go` 添加 `DefaultAdminConfig` 结构体
- 字段:`Username``Password``Phone`(均为 string
-`Config` 结构体中添加 `DefaultAdmin` 字段
- 配置项为可选,不参与 `Validate()` 验证(允许为空)
- [x] 2.2 在 `configs/config.yaml` 添加配置示例(注释掉,供参考)
```yaml
# default_admin:
# username: "admin"
# password: "Admin@123456"
# phone: "13800000000"
```
- [x] 2.3 在 `pkg/constants/constants.go` 添加代码默认值常量
- `DefaultAdminUsername = "admin"`
- `DefaultAdminPassword = "Admin@123456"`
- `DefaultAdminPhone = "13800000000"`
- 添加中文注释说明用途
## 3. 测试验证
- [x] 3.1 单元测试:测试 `CreateSystemAccount()` 方法
- 测试成功创建
- 测试用户名重复错误
- 测试手机号重复错误
- [x] 3.2 集成测试:测试启动时管理员初始化
- 空数据库场景:验证创建成功
- 已有管理员场景:验证跳过创建
- 配置文件场景:验证使用配置文件的账号信息
- 无配置场景:验证使用代码默认值
- 验证创建的账号可以正常使用(密码验证)
- [x] 3.3 手动测试
- 启动服务,检查日志输出
- 使用默认账号登录(如果有登录接口)
- 验证创建的账号字段正确
## 4. 文档更新
- [x] 4.1 更新 README.md
- 添加默认管理员账号说明
- 说明如何通过配置文件自定义默认账号
- 提醒首次登录后修改密码
- [x] 4.2 在 `docs/` 目录添加功能说明文档
- 说明默认管理员初始化逻辑
- 说明安全注意事项
- 提供手动创建管理员的备用方案SQL
## 验证检查清单
完成所有任务后,确认:
- [x] 空数据库启动时自动创建管理员
- [x] 已有管理员时跳过创建(不报错)
- [x] 日志清晰记录初始化结果
- [x] 所有测试通过(逻辑验证)
- [x] 文档更新完成
- [x] 代码符合项目规范gofmt、注释、分层