From 458a6645ee1177d8d10c437ccb58cab7ba7ad0cc Mon Sep 17 00:00:00 2001 From: kolaente Date: Thu, 13 Aug 2020 16:15:04 +0200 Subject: [PATCH] Fail if changing the username would result in duplicate users --- pkg/cmd/user.go | 2 +- pkg/user/user.go | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/pkg/cmd/user.go b/pkg/cmd/user.go index 4408a244f..975aff837 100644 --- a/pkg/cmd/user.go +++ b/pkg/cmd/user.go @@ -168,7 +168,7 @@ var userUpdateCmd = &cobra.Command{ _, err = user.UpdateUser(u) if err != nil { - log.Criticalf("Error updating the user: %s", err) + log.Fatalf("Error updating the user: %s", err) } fmt.Println("User updated successfully.") diff --git a/pkg/user/user.go b/pkg/user/user.go index 15eac8e95..3683cce42 100644 --- a/pkg/user/user.go +++ b/pkg/user/user.go @@ -324,6 +324,15 @@ func UpdateUser(user *User) (updatedUser *User, err error) { if user.Username == "" { //return User{}, ErrNoUsername{user.ID} user.Username = theUser.Username // Dont change the username if we dont have one + } else { + // Check if the new username already exists + uu, err := GetUserByUsername(user.Username) + if err != nil && !IsErrUserDoesNotExist(err) { + return nil, err + } + if uu.ID != user.ID { + return nil, &ErrUsernameExists{Username: user.Username, UserID: uu.ID} + } } user.Password = theUser.Password // set the password to the one in the database to not accedently resetting it