User: remove empty email / username check from update in service (#77347)

User: remove empty email / username check from update in service
pull/77315/head^2
Karl Persson 2 years ago committed by GitHub
parent f5d04a067e
commit 87eba34745
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      pkg/api/user.go
  2. 9
      pkg/services/user/userimpl/user.go
  3. 10
      pkg/services/user/userimpl/user_test.go

@ -221,6 +221,15 @@ func (hs *HTTPServer) handleUpdateUser(ctx context.Context, cmd user.UpdateUserC
return response.Error(http.StatusForbidden, "User info cannot be updated for external Users", nil)
}
if len(cmd.Login) == 0 {
cmd.Login = cmd.Email
}
// if login is still empty both email and login field is missing
if len(cmd.Login) == 0 {
return response.Err(user.ErrEmptyUsernameAndEmail.Errorf("user cannot be created with empty username and email"))
}
if err := hs.userService.Update(ctx, &cmd); err != nil {
if errors.Is(err, user.ErrCaseInsensitive) {
return response.Error(http.StatusConflict, "Update would result in user login conflict", err)

@ -224,15 +224,6 @@ func (s *Service) GetByEmail(ctx context.Context, query *user.GetUserByEmailQuer
}
func (s *Service) Update(ctx context.Context, cmd *user.UpdateUserCommand) error {
if len(cmd.Login) == 0 {
cmd.Login = cmd.Email
}
// if login is still empty both email and login field is missing
if len(cmd.Login) == 0 {
return user.ErrEmptyUsernameAndEmail.Errorf("user cannot be created with empty username and email")
}
if s.cfg.CaseInsensitiveLogin {
cmd.Login = strings.ToLower(cmd.Login)
cmd.Email = strings.ToLower(cmd.Email)

@ -98,16 +98,6 @@ func TestUserService(t *testing.T) {
require.NoError(t, err)
})
t.Run("update user should fail with empty username and password", func(t *testing.T) {
err := userService.Update(context.Background(), &user.UpdateUserCommand{
Email: "",
Login: "",
Name: "name",
})
require.ErrorIs(t, err, user.ErrEmptyUsernameAndEmail)
})
t.Run("GetByID - email conflict", func(t *testing.T) {
userService.cfg.CaseInsensitiveLogin = true
userStore.ExpectedError = errors.New("email conflict")

Loading…
Cancel
Save