diff options
author | Joe Chen <jc@unknwon.io> | 2022-11-27 15:19:44 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-27 15:19:44 +0800 |
commit | 13099a7e4fe7565bb858646d42d1fba817cb06cc (patch) | |
tree | ac932d0f5df9f14b0f9408c32f699ae7167edc25 /internal/route/org | |
parent | a7dbc970dfaac9f04addf05da97bb0aa29083e37 (diff) |
refactor(db): add `Users.Update` (#7263)
Diffstat (limited to 'internal/route/org')
-rw-r--r-- | internal/route/org/setting.go | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/internal/route/org/setting.go b/internal/route/org/setting.go index f3e65b9b..bcef4ea1 100644 --- a/internal/route/org/setting.go +++ b/internal/route/org/setting.go @@ -5,8 +5,6 @@ package org import ( - "strings" - "github.com/pkg/errors" log "unknwon.dev/clog/v2" @@ -40,43 +38,47 @@ func SettingsPost(c *context.Context, f form.UpdateOrgSetting) { org := c.Org.Organization - // Check if organization name has been changed. - if org.LowerName != strings.ToLower(f.Name) { - if db.Users.IsUsernameUsed(c.Req.Context(), f.Name) { - c.Data["OrgName"] = true - c.RenderWithErr(c.Tr("form.username_been_taken"), SETTINGS_OPTIONS, &f) - return - } else if err := db.Users.ChangeUsername(c.Req.Context(), org.ID, f.Name); err != nil { + // Check if the organization username (including cases) had been changed + if org.Name != f.Name { + err := db.Users.ChangeUsername(c.Req.Context(), c.Org.Organization.ID, f.Name) + if err != nil { c.Data["OrgName"] = true + var msg string switch { + case db.IsErrUserAlreadyExist(errors.Cause(err)): + msg = c.Tr("form.username_been_taken") case db.IsErrNameNotAllowed(errors.Cause(err)): - c.RenderWithErr(c.Tr("user.form.name_not_allowed", err.(db.ErrNameNotAllowed).Value()), SETTINGS_OPTIONS, &f) + msg = c.Tr("user.form.name_not_allowed", err.(db.ErrNameNotAllowed).Value()) default: c.Error(err, "change organization name") + return } + + c.RenderWithErr(msg, SETTINGS_OPTIONS, &f) return } + // reset c.org.OrgLink with new name c.Org.OrgLink = conf.Server.Subpath + "/org/" + f.Name log.Trace("Organization name changed: %s -> %s", org.Name, f.Name) } - // In case it's just a case change. - org.Name = f.Name - org.LowerName = strings.ToLower(f.Name) + opts := db.UpdateUserOptions{ + FullName: f.FullName, + Website: f.Website, + Location: f.Location, + Description: f.Description, + MaxRepoCreation: org.MaxRepoCreation, + } if c.User.IsAdmin { - org.MaxRepoCreation = f.MaxRepoCreation + opts.MaxRepoCreation = f.MaxRepoCreation } - - org.FullName = f.FullName - org.Description = f.Description - org.Website = f.Website - org.Location = f.Location - if err := db.UpdateUser(org); err != nil { - c.Error(err, "update user") + err := db.Users.Update(c.Req.Context(), c.User.ID, opts) + if err != nil { + c.Error(err, "update organization") return } - log.Trace("Organization setting updated: %s", org.Name) + c.Flash.Success(c.Tr("org.settings.update_setting_success")) c.Redirect(c.Org.OrgLink + "/settings") } |