diff options
author | Joe Chen <jc@unknwon.io> | 2022-11-27 19:36:10 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-27 19:36:10 +0800 |
commit | ae20d03aece78fb44dc1caaacfa40c3aa40c7949 (patch) | |
tree | 7e7b33f99eae57d8426eeead443276d5cbe0dd5a /internal/route/api | |
parent | 44333afd20a6312b617e0c33a497a4385ba3a250 (diff) |
refactor(db): migrate `UpdateUser` off `user.go` (#7267)
Diffstat (limited to 'internal/route/api')
-rw-r--r-- | internal/route/api/v1/admin/user.go | 55 | ||||
-rw-r--r-- | internal/route/api/v1/org/org.go | 23 |
2 files changed, 42 insertions, 36 deletions
diff --git a/internal/route/api/v1/admin/user.go b/internal/route/api/v1/admin/user.go index c7c207af..97f7a0bb 100644 --- a/internal/route/api/v1/admin/user.go +++ b/internal/route/api/v1/admin/user.go @@ -15,7 +15,6 @@ import ( "gogs.io/gogs/internal/db" "gogs.io/gogs/internal/email" "gogs.io/gogs/internal/route/api/v1/user" - "gogs.io/gogs/internal/userutil" ) func parseLoginSource(c *context.APIContext, sourceID int64) { @@ -83,39 +82,30 @@ func EditUser(c *context.APIContext, form api.EditUserOption) { return } - if len(form.Password) > 0 { - u.Password = form.Password - var err error - if u.Salt, err = userutil.RandomSalt(); err != nil { - c.Error(err, "get user salt") - return - } - u.Password = userutil.EncodePassword(u.Password, u.Salt) + opts := db.UpdateUserOptions{ + LoginSource: &form.SourceID, + LoginName: &form.LoginName, + FullName: &form.FullName, + Website: &form.Website, + Location: &form.Location, + MaxRepoCreation: form.MaxRepoCreation, + IsActivated: form.Active, + IsAdmin: form.Admin, + AllowGitHook: form.AllowGitHook, + AllowImportLocal: form.AllowImportLocal, + ProhibitLogin: nil, // TODO: Add this option to API } - u.LoginSource = form.SourceID - u.LoginName = form.LoginName - u.FullName = form.FullName - u.Email = form.Email - u.Website = form.Website - u.Location = form.Location - if form.Active != nil { - u.IsActive = *form.Active - } - if form.Admin != nil { - u.IsAdmin = *form.Admin - } - if form.AllowGitHook != nil { - u.AllowGitHook = *form.AllowGitHook + if form.Password != "" { + opts.Password = &form.Password } - if form.AllowImportLocal != nil { - u.AllowImportLocal = *form.AllowImportLocal - } - if form.MaxRepoCreation != nil { - u.MaxRepoCreation = *form.MaxRepoCreation + + if u.Email != form.Email { + opts.Email = &form.Email } - if err := db.UpdateUser(u); err != nil { + err := db.Users.Update(c.Req.Context(), u.ID, opts) + if err != nil { if db.IsErrEmailAlreadyUsed(err) { c.ErrorStatus(http.StatusUnprocessableEntity, err) } else { @@ -123,8 +113,13 @@ func EditUser(c *context.APIContext, form api.EditUserOption) { } return } - log.Trace("Account profile updated by admin %q: %s", c.User.Name, u.Name) + log.Trace("Account updated by admin %q: %s", c.User.Name, u.Name) + u, err = db.Users.GetByID(c.Req.Context(), u.ID) + if err != nil { + c.Error(err, "get user") + return + } c.JSONSuccess(u.APIFormat()) } diff --git a/internal/route/api/v1/org/org.go b/internal/route/api/v1/org/org.go index 2f6b4b70..9b99bead 100644 --- a/internal/route/api/v1/org/org.go +++ b/internal/route/api/v1/org/org.go @@ -89,14 +89,25 @@ func Edit(c *context.APIContext, form api.EditOrgOption) { return } - org.FullName = form.FullName - org.Description = form.Description - org.Website = form.Website - org.Location = form.Location - if err := db.UpdateUser(org); err != nil { - c.Error(err, "update user") + err := db.Users.Update( + c.Req.Context(), + c.Org.Organization.ID, + db.UpdateUserOptions{ + FullName: &form.FullName, + Website: &form.Website, + Location: &form.Location, + Description: &form.Description, + }, + ) + if err != nil { + c.Error(err, "update organization") return } + org, err = db.GetOrgByName(org.Name) + if err != nil { + c.Error(err, "get organization") + return + } c.JSONSuccess(convert.ToOrganization(org)) } |