feat: add auth provider boundary

This commit is contained in:
QiuSW
2026-07-08 23:37:19 +08:00
parent 811a9c889f
commit 5aaac0b166
19 changed files with 788 additions and 40 deletions
+26
View File
@@ -173,3 +173,29 @@
- 并行运行 `npm run build:dev` 和 `go test/go build` 会因为 `frontend/dist` 被重写导致 Go embed 读取旧 hash 文件失败;正确做法是前端构建完成后再运行 Go 命令。
- `dev.bat` 日志仍有 `SetProcessDpiAwarenessContext failed ... Access is denied`,不影响窗口创建和页面加载。
- Browserslist 数据过期、Vite chunk 体积警告和 `wails3 build` alias 警告仍存在。
### 实现登录 provider 边界
- 任务:完成 `T-013`,支持本地固定账号 provider,预留 remote provider,账号密码不写死在前端,登录事件写审计日志。
- 结果:
- 新增 `internal/services/auth_service.go`,提供 `AuthService`、`LocalAuthProvider` 和 `RemoteAuthProvider`。
- 新增 `internal/models/auth.go`,提供 `AuthSession` 和 `AuthProviderOption` 前端绑定模型。
- SQLite 迁移新增 `auth_sessions` 和 `audit_logs`,并初始化本地演示账号配置。
- `main.go` 注册 `AuthService`,并重新生成 Wails `.js` bindings。
- 登录页通过 `AuthService.Login` 登录,Provider 列表来自后端,前端不保存固定账号密码。
- 主布局读取当前 session,并在侧边栏底部展示登录状态。
- 验证:
- `go test ./...` 通过,覆盖本地登录成功、登录失败审计、退出和 remote provider 预留错误。
- `cd frontend && npm run typecheck` 通过。
- `cd frontend && npm run build` 通过。
- `cd frontend && npm run build:dev` 通过。
- `go build -o bin\cmbone.exe .` 通过。
- `cmd /c build.bat` 通过,并重新生成 Wails `.js` bindings。
- `dev.bat` 烟测通过,主窗口可见,日志显示加载 `authservice.js` 并调用 `AuthService.GetCurrentSession`。
- 默认本地演示账号:
- 用户名:`admin`
- 密码:`admin123`
- 密码以后端配置的 salt + SHA-256 hash 保存,不写入前端页面。
- 非阻塞警告:
- `dev.bat` 日志仍有 `SetProcessDpiAwarenessContext failed ... Access is denied`,不影响窗口创建和页面加载。
- Browserslist 数据过期、Vite chunk 体积警告和 `wails3 build` alias 警告仍存在。