diff options
author | Unknwon <u@gogs.io> | 2015-09-13 11:07:21 -0400 |
---|---|---|
committer | Unknwon <u@gogs.io> | 2015-09-13 11:07:21 -0400 |
commit | 83e747bfda43c2c8fa0aceb2c989d42fe5ca1582 (patch) | |
tree | 1dfee9128010bb08ad2177c24fd1c5c8c53d45cd /routers/admin | |
parent | e5ed5904c62d9a618cb6f4ad852b021a02c3481e (diff) | |
download | gitea-83e747bfda43c2c8fa0aceb2c989d42fe5ca1582.tar.gz gitea-83e747bfda43c2c8fa0aceb2c989d42fe5ca1582.zip |
#697 and #1606 and new admin edit user UI
Diffstat (limited to 'routers/admin')
-rw-r--r-- | routers/admin/users.go | 73 |
1 files changed, 43 insertions, 30 deletions
diff --git a/routers/admin/users.go b/routers/admin/users.go index dfa4d5ef28..036424f140 100644 --- a/routers/admin/users.go +++ b/routers/admin/users.go @@ -122,57 +122,74 @@ func NewUserPost(ctx *middleware.Context, form auth.AdminCrateUserForm) { ctx.Redirect(setting.AppSubUrl + "/admin/users/" + com.ToStr(u.Id)) } -func EditUser(ctx *middleware.Context) { - ctx.Data["Title"] = ctx.Tr("admin.users.edit_account") - ctx.Data["PageIsAdmin"] = true - ctx.Data["PageIsAdminUsers"] = true - - uid := com.StrTo(ctx.Params(":userid")).MustInt64() - if uid == 0 { - ctx.Handle(404, "EditUser", nil) - return - } - - u, err := models.GetUserByID(uid) +func prepareUserInfo(ctx *middleware.Context) *models.User { + u, err := models.GetUserByID(ctx.ParamsInt64(":userid")) if err != nil { ctx.Handle(500, "GetUserByID", err) - return + return nil } ctx.Data["User"] = u + if u.LoginSource > 0 { + ctx.Data["LoginSource"], err = models.GetLoginSourceByID(u.LoginSource) + if err != nil { + ctx.Handle(500, "GetLoginSourceByID", err) + return nil + } + } else { + ctx.Data["LoginSource"] = &models.LoginSource{} + } + sources, err := models.LoginSources() if err != nil { ctx.Handle(500, "LoginSources", err) - return + return nil } - ctx.Data["LoginSources"] = sources - ctx.HTML(200, USER_EDIT) + ctx.Data["Sources"] = sources + + return u } -func EditUserPost(ctx *middleware.Context, form auth.AdminEditUserForm) { +func EditUser(ctx *middleware.Context) { ctx.Data["Title"] = ctx.Tr("admin.users.edit_account") ctx.Data["PageIsAdmin"] = true ctx.Data["PageIsAdminUsers"] = true - uid := com.StrTo(ctx.Params(":userid")).MustInt64() - if uid == 0 { - ctx.Handle(404, "EditUser", nil) + prepareUserInfo(ctx) + if ctx.Written() { return } - u, err := models.GetUserByID(uid) - if err != nil { - ctx.Handle(500, "GetUserById", err) + ctx.HTML(200, USER_EDIT) +} + +func EditUserPost(ctx *middleware.Context, form auth.AdminEditUserForm) { + ctx.Data["Title"] = ctx.Tr("admin.users.edit_account") + ctx.Data["PageIsAdmin"] = true + ctx.Data["PageIsAdminUsers"] = true + + u := prepareUserInfo(ctx) + if ctx.Written() { return } - ctx.Data["User"] = u if ctx.HasError() { ctx.HTML(200, USER_EDIT) return } - // FIXME: need password length check + fields := strings.Split(form.LoginType, "-") + if len(fields) == 2 { + loginType := models.LoginType(com.StrTo(fields[0]).MustInt()) + loginSource := com.StrTo(fields[1]).MustInt64() + + if u.LoginSource != loginSource { + u.LoginSource = loginSource + u.LoginType = loginType + u.LoginName = form.LoginName + } + } + if len(form.Password) > 0 { u.Passwd = form.Password u.Salt = models.GetUserSalt() @@ -183,11 +200,6 @@ func EditUserPost(ctx *middleware.Context, form auth.AdminEditUserForm) { u.Email = form.Email u.Website = form.Website u.Location = form.Location - if len(form.Avatar) == 0 { - form.Avatar = form.Email - } - u.Avatar = base.EncodeMd5(form.Avatar) - u.AvatarEmail = form.Avatar u.IsActive = form.Active u.IsAdmin = form.Admin u.AllowGitHook = form.AllowGitHook @@ -202,6 +214,7 @@ func EditUserPost(ctx *middleware.Context, form auth.AdminEditUserForm) { return } log.Trace("Account profile updated by admin(%s): %s", ctx.User.Name, u.Name) + ctx.Flash.Success(ctx.Tr("admin.users.update_profile_success")) ctx.Redirect(setting.AppSubUrl + "/admin/users/" + ctx.Params(":userid")) } |