Skip to content

dev: merge oidc 分支(认证/分页/测试/工具链重构) - #14

Merged
ahaodev merged 19 commits into
mainfrom
dev
Sep 11, 2026
Merged

ahaodev merged 19 commits into
mainfrom
dev

Conversation

@ahaodev

@ahaodev ahaodev commented Sep 11, 2026

Copy link
Copy Markdown
Owner

概述

dev 分支从 main5f91706)创建,合并了 oidc 分支(ee44688,18 个提交),冲突已全部解决并验证通过。合并后 dev = 覆盖 main 全部历史 + oidc 全部历史 + 1 个合并提交。

主要改动

后端

  • 认证重构(main 侧为骨架,oidc 侧为修补):登录/刷新/登出逻辑集中在 usecase/login_usecase.go;令牌校验改用 ParseAccessClaims / ParseRefreshClaims;Bearer 严格解析(大小写不敏感、拒绝内嵌空格);黑名单策略收紧——无 jti 的令牌直接拒绝
  • 登录日志:异步记录改用 context.WithoutCancel,避免请求结束后丢日志;新增邮箱字段
  • 分页统一(oidc)Paginate() 归一化 + DefaultPage / DefaultPageSize / MaxPageSize;删除 main 已废弃的 role FetchPaged
  • 角色错误语义化ErrRoleNotFound / ErrRoleNameExists / ErrRoleInUse 哨兵错误,errors.Is 映射 404/409/403,修复 CreateRolereturn err(nil)的 bug
  • 日志中间件(oidc):无边框、按状态码着色、body 截断 1000 字符;casbin 日志改 logrus 结构化
  • 用户查询:列表响应不再携带密码哈希、角色预加载修 N+1(main);多状态值 StatusIn 查询
  • keyword 统一(main):菜单/字典/日志筛选参数统一为 keyword

前端

  • 用户列表新增昵称、来源列;登录日志来源中文标签(user-source.ts
  • types/user.ts 增加 nickname / source / is_active,移除 provider_avatar_url
  • 登录请求直传 credentials

测试与工具链

  • 新增 6 个测试文件(middleware ×2、casbin manager + bench、tokenutil + bench)
  • Go 1.26.4 → 1.27.1(Dockerfile、cli/go.mod、CI);依赖升级(casbin v3.11、logrus 1.10.2、pgx v5.11 等)
  • CI 触发分支增加 oidc
  • 删除 .claude/skills/ 开发文档

验证

  • go build ./...gofmt -lgo vet ./...go test ./... 全部通过
  • go generate ./...(ent + swagger)无差异
  • 前端 pnpm lint(0 error)、format:checkbuild(tsc + vite)全部通过

说明

  • ent/ 生成代码与 frontend/dist 为 gitignore,未入库(CI 会自动生成)
  • 合并时选择的策略:令牌/分页/日志按 oidc 方向,controller 抽象按 main 方向,两侧改进均已保留

合并策略:
- 以 main 的 authorization 重构(登录/刷新/登出集中在 loginUsecase)为骨架,
  controller 采用 main 版本,登录日志异步记录改用 context.WithoutCancel
- 令牌校验采用 oidc 的 ParseAccessClaims/ParseRefreshClaims + 严格 Bearer 解析 +
  无 jti 拒绝策略(jwt_auth_middleware、tokenutil、JTI())
- 分页统一为 oidc 的 Paginate()(DefaultPage/DefaultPageSize/MaxPageSize),
  main 的 mapSlice 保留,移除 main 已废弃的 role FetchPaged
- 角色错误语义化:domain.ErrRoleNotFound/ErrRoleNameExists(中文文案)+
  main 的 ErrRoleInUse,role_controller 用 errors.Is switch 映射 404/409
- 日志中间件采用 oidc 新格式(无边框/着色/截断),Authorization 统一用常量
- 保留 main 的 keyword 查询、登录日志邮箱、user 列表角色预加载(N+1 修复)等改动
- 工具链:go 1.27.1 + 依赖升级 + CI 触发 oidc + 新增 6 个测试文件
@ahaodev
ahaodev merged commit 1d2ccb2 into main Sep 11, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant