refactor(db): migrate UpdateUser off user.go (#7267)

This commit is contained in:
Joe Chen
2022-11-27 19:36:10 +08:00
committed by GitHub
parent 44333afd20
commit ae20d03aec
15 changed files with 350 additions and 234 deletions

View File

@@ -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.AllowImportLocal != nil {
u.AllowImportLocal = *form.AllowImportLocal
}
if form.MaxRepoCreation != nil {
u.MaxRepoCreation = *form.MaxRepoCreation
if form.Password != "" {
opts.Password = &form.Password
}
if err := db.UpdateUser(u); err != nil {
if u.Email != form.Email {
opts.Email = &form.Email
}
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())
}

View File

@@ -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))
}