Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 3 additions & 5 deletions internal/dms/biz/member.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,11 +99,9 @@ func (m *MemberUsecase) CreateMember(ctx context.Context, currentUserUid string,
return "", fmt.Errorf("create member error: %v", err)
}

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

if err := m.CheckRoleAndOpRanges(ctx, roleAndOpRanges); err != nil {
Expand Down
18 changes: 18 additions & 0 deletions internal/dms/biz/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -627,6 +627,24 @@ func (d *UserUsecase) CheckUserExist(ctx context.Context, userUids []string) (ex
return d.repo.CheckUserExist(ctx, userUids)
}

// EnsureUserEligibleForProjectMembership 校验用户可被新纳入项目成员/成员组:存在、未删除、状态正常。
func (d *UserUsecase) EnsureUserEligibleForProjectMembership(ctx context.Context, userUid string) error {
user, err := d.repo.GetUserIncludeDeleted(ctx, userUid)
if err != nil {
if errors.Is(err, pkgErr.ErrStorageNoData) {
return fmt.Errorf("user not exist")
}
return fmt.Errorf("get user failed: %v", err)
}
if user.Deleted {
return fmt.Errorf("user has been deleted")
}
if user.Stat != UserStatOK {
return fmt.Errorf("user is disabled")
}
return nil
}

// InsureUserToUserGroups 确保用户属于指定的多个用户组
func (d *UserUsecase) InsureUserToUserGroups(ctx context.Context, userGroupUids []string, userUid string) (err error) {
// check
Expand Down