dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit 1313c68dccec2d34310834ae513af7c20302fa3e
parent 8fb223a934cb24f8227e1f8cafce18cb56f7b8c7
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Fri, 20 Jan 2023 00:19:01 -0800

cleanup

Diffstat:
Mpkg/database/tableUsers.go | 12++++++++++++
Mpkg/web/handlers/api/v1/slashInterceptor.go | 2+-
Mpkg/web/handlers/handlers.go | 9+--------
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 {