Skip to content

Commit 69554cc

Browse files
authored
Merge pull request #671 from actiontech/dms/fix-973
fix: reject disabled and deleted users when adding project members
2 parents 2a59d53 + 278f42f commit 69554cc

2 files changed

Lines changed: 21 additions & 5 deletions

File tree

internal/dms/biz/member.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,11 +99,9 @@ func (m *MemberUsecase) CreateMember(ctx context.Context, currentUserUid string,
9999
return "", fmt.Errorf("create member error: %v", err)
100100
}
101101

102-
// 检查成员用户存在
103-
if exist, err := m.userUsecase.CheckUserExist(ctx, []string{memberUserUid}); err != nil {
104-
return "", fmt.Errorf("check user exist failed: %v", err)
105-
} else if !exist {
106-
return "", fmt.Errorf("user not exist")
102+
// 检查成员用户可纳入(存在、未删除、状态正常)
103+
if err := m.userUsecase.EnsureUserEligibleForProjectMembership(ctx, memberUserUid); err != nil {
104+
return "", err
107105
}
108106

109107
if err := m.CheckRoleAndOpRanges(ctx, roleAndOpRanges); err != nil {

internal/dms/biz/user.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,24 @@ func (d *UserUsecase) CheckUserExist(ctx context.Context, userUids []string) (ex
627627
return d.repo.CheckUserExist(ctx, userUids)
628628
}
629629

630+
// EnsureUserEligibleForProjectMembership 校验用户可被新纳入项目成员/成员组:存在、未删除、状态正常。
631+
func (d *UserUsecase) EnsureUserEligibleForProjectMembership(ctx context.Context, userUid string) error {
632+
user, err := d.repo.GetUserIncludeDeleted(ctx, userUid)
633+
if err != nil {
634+
if errors.Is(err, pkgErr.ErrStorageNoData) {
635+
return fmt.Errorf("user not exist")
636+
}
637+
return fmt.Errorf("get user failed: %v", err)
638+
}
639+
if user.Deleted {
640+
return fmt.Errorf("user has been deleted")
641+
}
642+
if user.Stat != UserStatOK {
643+
return fmt.Errorf("user is disabled")
644+
}
645+
return nil
646+
}
647+
630648
// InsureUserToUserGroups 确保用户属于指定的多个用户组
631649
func (d *UserUsecase) InsureUserToUserGroups(ctx context.Context, userGroupUids []string, userUid string) (err error) {
632650
// check

0 commit comments

Comments
 (0)