Skip to content

fix: reject disabled and deleted users when adding project members - #671

Merged
Seechi-Yolo merged 1 commit into
mainfrom
dms/fix-973
Aug 21, 2026
Merged

fix: reject disabled and deleted users when adding project members#671
Seechi-Yolo merged 1 commit into
mainfrom
dms/fix-973

Conversation

@LordofAvernus

@LordofAvernusLordofAvernus commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

User description

关联的 issue

https://github.com/actiontech/dms-ee/issues/973

描述你的变更

  • Add EnsureUserEligibleForProjectMembership to reject missing, deleted, or disabled users before project member create
  • Wire the check into CreateMember so AddMember API cannot persist ineligible users

确认项(pr提交后操作)

Tip

请在指定复审人之前,确认并完成以下事项,完成后✅


  • 我已完成自测
  • 我已记录完整日志方便进行诊断
  • 我已在关联的issue里补充了实现方案
  • 我已在关联的issue里补充了测试影响面
  • 我已确认了变更的兼容性,如果不兼容则在issue里标记 not_compatible
  • 我已确认了是否要更新文档,如果要更新则在issue里标记 need_update_doc

Made with Cursor


Description

  • 调整项目成员添加逻辑

  • 在 CreateMember 中调用新检验函数

  • 新增 EnsureUserEligibleForProjectMembership 方法


Diagram Walkthrough

flowchart LR
A["调用 CreateMember"] -- "验证用户资格" --> B["EnsureUserEligibleForProjectMembership"]
B -- "返回错误" --> C["拒绝无效用户"]
Loading

File Walkthrough

Relevant files
Bug fix
member.go
在 CreateMember 中增加用户资格验证

internal/dms/biz/member.go

  • 移除旧版用户存在检查逻辑
  • 新增对用户有效性检验的调用
+3/-5
Enhancement
user.go
添加用户成员资格校验函数

internal/dms/biz/user.go

  • 添加 EnsureUserEligibleForProjectMembership 函数
  • 校验用户是否存在、未删除且状态正常
+18/-0

Validate membership eligibility before CreateMember so disabled or deleted
users cannot be written via AddMember API.
Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

Copy link
Copy Markdown

PR Reviewer Guide 🔍

⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
🧪 No relevant tests
🔒 No security concerns identified
⚡ No major issues detected

@github-actions

Copy link
Copy Markdown

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion Impact
General
使用错误包装

建议使用 %w 包装原始错误,这样有助于保留错误链,便于上层调用者判断错误的根源。改进后的代码可确保错误信息更完整,并且便于调试。

internal/dms/biz/user.go [633-638]

 if err != nil {
if errors.Is(err, pkgErr.ErrStorageNoData) {
return fmt.Errorf("user not exist")
}
- return fmt.Errorf("get user failed: %v", err)+ return fmt.Errorf("get user failed: %w", err)
}
Suggestion importance[1-10]: 8

__

Why: The suggestion correctly replaces %v with %w to wrap the error, preserving the error chain. This is an effective improvement in error handling without overhauling the logic.

Medium

@Seechi-Yolo
Seechi-Yolo merged commit 69554cc into mainAug 21, 2026
1 check passed
Sign up for freeto 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.

2 participants

@LordofAvernus@Seechi-Yolo