fix: check user is unique (#1678)

This commit is contained in:
Fabi
2021-04-27 11:22:33 +02:00
committed by GitHub
parent 10e85d999e
commit dbafb7b419
6 changed files with 209 additions and 20 deletions

View File

@@ -63,7 +63,7 @@ func AddHumanUserRequestToDomain(req *mgmt_pb.AddHumanUserRequest) *domain.Human
}
}
if req.InitialPassword != "" {
h.Password = &domain.Password{SecretString: req.InitialPassword}
h.Password = &domain.Password{SecretString: req.InitialPassword, ChangeRequired: true}
}
return h
@@ -95,7 +95,7 @@ func ImportHumanUserRequestToDomain(req *mgmt_pb.ImportHumanUserRequest) *domain
}
if req.Password != "" {
h.Password = &domain.Password{SecretString: req.Password}
h.Password.ChangeRequired = true
h.Password.ChangeRequired = req.PasswordChangeRequired
}
return h

View File

@@ -131,20 +131,31 @@ func GetGlobalUserByLoginName(db *gorm.DB, table, loginName string) (*model.User
func IsUserUnique(db *gorm.DB, table, userName, email string) (bool, error) {
user := new(model.UserView)
query := repository.PrepareGetByKey(table, model.UserSearchKey(usr_model.UserSearchKeyEmail), email)
err := query(db, user)
if err != nil && !caos_errs.IsNotFound(err) {
return false, err
emailUnique := email == ""
userNameUnique := userName == ""
if email != "" {
query := repository.PrepareGetByKey(table, model.UserSearchKey(usr_model.UserSearchKeyEmail), email)
err := query(db, user)
if err != nil && !caos_errs.IsNotFound(err) {
return false, err
}
if caos_errs.IsNotFound(err) {
emailUnique = true
}
}
if user.UserName != "" {
return false, nil
if userName != "" {
query := repository.PrepareGetByKey(table, model.UserSearchKey(usr_model.UserSearchKeyUserName), userName)
err := query(db, user)
if err != nil && !caos_errs.IsNotFound(err) {
return false, err
}
if caos_errs.IsNotFound(err) {
userNameUnique = true
}
}
query = repository.PrepareGetByKey(table, model.UserSearchKey(usr_model.UserSearchKeyUserName), userName)
err = query(db, user)
if err != nil && !caos_errs.IsNotFound(err) {
return false, err
}
return user.UserName == "", nil
return emailUnique && userNameUnique, nil
}
func UserMFAs(db *gorm.DB, table, userID string) ([]*usr_model.MultiFactor, error) {