Skip to content

[缺陷] CLA的修改企业超级管理员存在缺陷-的开发实现-app-cla-server部分#505

Open
fly333sky wants to merge 1 commit into
reviewfrom
issue-1479-from-review
Open

[缺陷] CLA的修改企业超级管理员存在缺陷-的开发实现-app-cla-server部分#505
fly333sky wants to merge 1 commit into
reviewfrom
issue-1479-from-review

Conversation

@fly333sky

Copy link
Copy Markdown

背景

[缺陷] CLA的修改企业超级管理员存在缺陷(app-cla-server)· 开发流水线 · 开发预览阶段(代码已推 + 预览已部署 + UT 已补;门禁/对抗由 PR CI 异步跑)

改动内容

fix(app-cla-server): 修改企业超级管理员时为新管理员补建账号,保证可登录

修复 issue #1479:社区管理员「修改企业超级管理员」后,若新管理员邮箱此前未预置
user 账号,旧逻辑只调用 userService.UpdateEmail(按旧邮箱查找),查不到就报错,
导致新管理员无法重置密码、无法登录。

改动内容

改造 UpdateRepresentative 调用链(appadaptermodelscontrollers),
使其在 corp_signing 持久化后按需同步 user 账号:

  1. signing/domain/userservice/service.go

    • UserService 接口新增 UpdateEmailByAccount(linkId, account, newEmail)
      用于「邮箱漂移的孤儿管理员账号」回退分支:按 account 定位孤儿并把邮箱改写到
      新邮箱(account 域与邮箱域一致,account 不变)。
  2. signing/app/corp_signing.go(核心)

    • UpdateRepresentative 返回值由 error 调整为 (*ManagerDTO, error)
    • 账号同步逻辑改为:
      • cs.Admin.Id == "" 或邮箱未变 → 跳过,返回 nil
      • 旧邮箱对应账号存在(IsAValidUser 真)→ 沿用 UpdateEmail,返回 nil
      • 旧账号缺失 → 调 userService.Add 新建账号,回填 ManagerDTO(含初始口令),
        供上层发账号通知邮件;
      • Add 因 account 重复失败(孤儿账号,ErrorCodeUserExists)→ 回退
        UpdateEmailByAccount 改写邮箱,返回 nil
      • Add 其它错误 → 直接返回错误。
    • 「缺失即新建」分支补 logs.Info 标注,便于运维识别历史脏数据修复。
  3. signing/adapter/corp_signing.go:透传 created,映射为
    *models.CorporationManagerCreateOption(复用既有 toCorporationManagerCreateOption)。

  4. models/init.go + models/corp_signing.gocorpSigningAdapter 接口与
    UpdateCorpRepresentative 返回值同步调整为 (*CorporationManagerCreateOption, IModelError)

  5. controllers/corp_signing.goUpdateRepresentative 成功且 created != nil 时,
    models.GetLinkorgInfonotifyCorpAdmin 发账号邮件(与 AddCorpAdmin
    完全一致的邮件通知路径);GetLink 失败仅记 error 日志(更新已成功,best-effort)。

需求对应

  • 验收点 1/2(账号已存在,同域/跨域换人)→ UpdateEmail 分支;
  • 验收点 3(核心,账号未预置)→ Add 新建 + 邮件通知,修复前此用例失败
  • 验收点 4(邮箱未变)→ 跳过;
  • 验收点 5(管理员未创建)→ 仅更新 corp_signing.rep
  • 验收点 6(权限不足/参数非法)→ 早期返回错误,无数据落库。
  • 设计 2.3 的「孤儿账号回退」容错分支一并实现。

UT(同 PR 补写)

  • signing/app/corp_signing_test.go + signing/app/main_test.go:覆盖
    UpdateRepresentative 全部分支(账号存在同域/跨域、缺失新建、邮箱未变、管理员未创建、
    孤儿回退、Add 其它错误、权限不足、link_id 不匹配、Find/Update/IsAValidUser/UpdateEmail/
    回退失败、参数非法),UpdateRepresentative 增量覆盖率 95.2%
  • signing/domain/userservice/service_test.go:覆盖
    UpdateEmailByAccount 成功/账号不存在/Save 失败,覆盖率 100%
  • signing/adapter/corp_signing_test.go + signing/adapter/main_test.go:覆盖
    adapter 参数校验、created==nil/created!=nil 映射、服务层错误,覆盖率 100%

go build ./... 通过;go test ./signing/app/... ./signing/domain/userservice/... ./signing/adapter/... 全绿。
(注:signing/watchTestNotifyAdminConfigSetDefaultmodels/individual_signing_test.go

相关 Issue

resolve https://github.com/opensourceways/backlog/issues/1479

AI 使用声明

当前 PR 是否有 AI 参与:

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@opensourceways-bot

Copy link
Copy Markdown

Welcome To opensourceways Community

Hey @fly333sky , thanks for your contribution to the community.

Bot Usage Manual

I'm the Bot here serving you. You can find the instructions on how to interact with me at Here . That means you can comment below every pull request or issue to trigger Bot Commands.

Contact Guide

If you have any questions, please contact the SIG: infratructure ,
and any of the maintainers: @GeorgeCao-hw, @TangJia025, @pkking, @zhongjun2 ,
and any of the committers: @JavaPythonAIForBAT, @Zherphy, @tfhddd, @zhongjun2 .

@opensourceways-bot

Copy link
Copy Markdown

CLA Signature Pass

fly333sky, thanks for your pull request. All authors of the commits have signed the CLA. 👍

@opensourceways-bot

Copy link
Copy Markdown
检查项 状态
敏感信息扫描
漏洞扫描
Check代码检查
开源license合规扫描
开发阶段设计文档检查
流水线链接 点击跳转查看日志

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants