commit 1313c68dccec2d34310834ae513af7c20302fa3e
parent 8fb223a934cb24f8227e1f8cafce18cb56f7b8c7
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Fri, 20 Jan 2023 00:19:01 -0800
cleanup
Diffstat:
3 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/pkg/database/tableUsers.go b/pkg/database/tableUsers.go
@@ -481,6 +481,18 @@ func CanUseUsername(username string, isFirstUser bool) error {
return nil
}
+func CanRenameTo(oldUsername, newUsername string) error {
+ if _, err := ValidateUsername(newUsername, false); err != nil {
+ return err
+ }
+ if strings.ToLower(oldUsername) != strings.ToLower(newUsername) {
+ if IsUsernameAlreadyTaken(newUsername) {
+ return errors.New("username already taken")
+ }
+ }
+ return nil
+}
+
// CreateUser ...
func CreateUser(username, password, repassword string, registrationDuration int64, signupInfoEnc string) (User, UserErrors) {
return createUser(username, password, repassword, "", false, true, false, false, false, registrationDuration, signupInfoEnc)
diff --git a/pkg/web/handlers/api/v1/slashInterceptor.go b/pkg/web/handlers/api/v1/slashInterceptor.go
@@ -1459,7 +1459,7 @@ func handleRename(c *Command) (handled bool) {
}
database.NewAudit(*c.authUser, fmt.Sprintf("rename %s -> %s #%d", user.Username, newUsername, user.ID))
- if err := database.CanUseUsername(newUsername, false); err != nil {
+ if err := database.CanRenameTo(oldUsername, newUsername); err != nil {
c.err = err
return true
}
diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go
@@ -2890,18 +2890,11 @@ func changeUsernameForm(c echo.Context, data settingsAccountData) error {
return c.Render(http.StatusOK, "settings.account", data)
}
- if _, err := database.ValidateUsername(username, false); err != nil {
+ if err := database.CanRenameTo(authUser.Username, username); err != nil {
data.ErrorUsername = err.Error()
return c.Render(http.StatusOK, "settings.account", data)
}
- if strings.ToLower(username) != strings.ToLower(authUser.Username) {
- if database.IsUsernameAlreadyTaken(username) {
- data.ErrorUsername = "Username already taken"
- return c.Render(http.StatusOK, "settings.account", data)
- }
- }
-
managers.ActiveUsers.RemoveUser(authUser.ID)
authUser.Username = username
if err := database.DB.Save(authUser).Error; err != nil {