diff options
Diffstat (limited to 'routers')
-rw-r--r-- | routers/admin/admin.go | 30 | ||||
-rw-r--r-- | routers/admin/user.go | 193 | ||||
-rw-r--r-- | routers/admin/users.go | 224 |
3 files changed, 224 insertions, 223 deletions
diff --git a/routers/admin/admin.go b/routers/admin/admin.go index ebc446b820..75dbf2712b 100644 --- a/routers/admin/admin.go +++ b/routers/admin/admin.go @@ -23,7 +23,6 @@ import ( const ( DASHBOARD base.TplName = "admin/dashboard" - USERS base.TplName = "admin/users" REPOS base.TplName = "admin/repos" AUTHS base.TplName = "admin/auths" CONFIG base.TplName = "admin/config" @@ -157,35 +156,6 @@ func Dashboard(ctx *middleware.Context) { ctx.HTML(200, DASHBOARD) } -func Users(ctx *middleware.Context) { - ctx.Data["Title"] = "User Management" - ctx.Data["PageIsUsers"] = true - - p := com.StrTo(ctx.Query("p")).MustInt() - if p < 1 { - p = 1 - } - pageNum := 50 - count := models.CountUsers() - curCount := int64((p-1)*pageNum + pageNum) - if curCount > count { - p = int(count) / pageNum - } else if count > curCount { - ctx.Data["NextPageNum"] = p + 1 - } - if p > 1 { - ctx.Data["LastPageNum"] = p - 1 - } - - var err error - ctx.Data["Users"], err = models.GetUsers(pageNum, (p-1)*pageNum) - if err != nil { - ctx.Handle(500, "admin.Users(GetUsers)", err) - return - } - ctx.HTML(200, USERS) -} - func Repositories(ctx *middleware.Context) { ctx.Data["Title"] = "Repository Management" ctx.Data["PageIsRepos"] = true diff --git a/routers/admin/user.go b/routers/admin/user.go deleted file mode 100644 index 0355632b53..0000000000 --- a/routers/admin/user.go +++ /dev/null @@ -1,193 +0,0 @@ -// Copyright 2014 The Gogs Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package admin - -import ( - "strings" - - "github.com/Unknwon/com" - - "github.com/gogits/gogs/models" - "github.com/gogits/gogs/modules/auth" - "github.com/gogits/gogs/modules/base" - "github.com/gogits/gogs/modules/log" - "github.com/gogits/gogs/modules/middleware" -) - -const ( - USER_NEW base.TplName = "admin/user/new" - USER_EDIT base.TplName = "admin/user/edit" -) - -func NewUser(ctx *middleware.Context) { - ctx.Data["Title"] = "New Account" - ctx.Data["PageIsUsers"] = true - auths, err := models.GetAuths() - if err != nil { - ctx.Handle(500, "admin.user.NewUser(GetAuths)", err) - return - } - ctx.Data["LoginSources"] = auths - ctx.HTML(200, USER_NEW) -} - -func NewUserPost(ctx *middleware.Context, form auth.RegisterForm) { - ctx.Data["Title"] = "New Account" - ctx.Data["PageIsUsers"] = true - - if ctx.HasError() { - ctx.HTML(200, USER_NEW) - return - } - - if form.Password != form.Retype { - ctx.Data["Err_Password"] = true - ctx.Data["Err_RetypePasswd"] = true - ctx.RenderWithErr("Password and re-type password are not same.", "admin/users/new", &form) - return - } - - u := &models.User{ - Name: form.UserName, - Email: form.Email, - Passwd: form.Password, - IsActive: true, - LoginType: models.PLAIN, - } - - if len(form.LoginType) > 0 { - // NOTE: need rewrite. - fields := strings.Split(form.LoginType, "-") - tp, _ := com.StrTo(fields[0]).Int() - u.LoginType = models.LoginType(tp) - u.LoginSource, _ = com.StrTo(fields[1]).Int64() - u.LoginName = form.LoginName - } - - if err := models.CreateUser(u); err != nil { - switch err { - case models.ErrUserAlreadyExist: - ctx.RenderWithErr("Username has been already taken", USER_NEW, &form) - case models.ErrEmailAlreadyUsed: - ctx.RenderWithErr("E-mail address has been already used", USER_NEW, &form) - case models.ErrUserNameIllegal: - ctx.RenderWithErr(models.ErrRepoNameIllegal.Error(), USER_NEW, &form) - default: - ctx.Handle(500, "admin.user.NewUser(CreateUser)", err) - } - return - } - - log.Trace("%s User created by admin(%s): %s", ctx.Req.RequestURI, - ctx.User.LowerName, strings.ToLower(form.UserName)) - - ctx.Redirect("/admin/users") -} - -func EditUser(ctx *middleware.Context) { - ctx.Data["Title"] = "Edit Account" - ctx.Data["PageIsUsers"] = true - - uid, err := com.StrTo(ctx.Params(":userid")).Int() - if err != nil { - ctx.Handle(404, "admin.user.EditUser", err) - return - } - - u, err := models.GetUserById(int64(uid)) - if err != nil { - ctx.Handle(500, "admin.user.EditUser(GetUserById)", err) - return - } - - ctx.Data["User"] = u - auths, err := models.GetAuths() - if err != nil { - ctx.Handle(500, "admin.user.NewUser(GetAuths)", err) - return - } - ctx.Data["LoginSources"] = auths - ctx.HTML(200, USER_EDIT) -} - -func EditUserPost(ctx *middleware.Context, form auth.AdminEditUserForm) { - ctx.Data["Title"] = "Edit Account" - ctx.Data["PageIsUsers"] = true - - uid, err := com.StrTo(ctx.Params(":userid")).Int() - if err != nil { - ctx.Handle(404, "admin.user.EditUserPost", err) - return - } - - u, err := models.GetUserById(int64(uid)) - if err != nil { - ctx.Handle(500, "admin.user.EditUserPost(GetUserById)", err) - return - } - - if ctx.HasError() { - ctx.HTML(200, USER_EDIT) - return - } - - if form.Passwd != "" { - u.Passwd = form.Passwd - u.Rands = models.GetUserSalt() - u.Salt = models.GetUserSalt() - u.EncodePasswd() - } - - u.Email = form.Email - u.Website = form.Website - u.Location = form.Location - u.Avatar = base.EncodeMd5(form.Avatar) - u.AvatarEmail = form.Avatar - u.IsActive = form.Active - u.IsAdmin = form.Admin - if err := models.UpdateUser(u); err != nil { - ctx.Handle(500, "admin.user.EditUserPost(UpdateUser)", err) - return - } - log.Trace("%s User profile updated by admin(%s): %s", ctx.Req.RequestURI, - ctx.User.LowerName, ctx.User.LowerName) - - ctx.Data["User"] = u - ctx.Flash.Success("Account profile has been successfully updated.") - ctx.Redirect("/admin/users/" + ctx.Params(":userid")) -} - -func DeleteUser(ctx *middleware.Context) { - ctx.Data["Title"] = "Delete Account" - ctx.Data["PageIsUsers"] = true - - //log.Info("delete") - uid, err := com.StrTo(ctx.Params(":userid")).Int() - if err != nil { - ctx.Handle(404, "admin.user.DeleteUser", err) - return - } - - u, err := models.GetUserById(int64(uid)) - if err != nil { - ctx.Handle(500, "admin.user.DeleteUser(GetUserById)", err) - return - } - - if err = models.DeleteUser(u); err != nil { - switch err { - case models.ErrUserOwnRepos: - ctx.Flash.Error("This account still has ownership of repository, owner has to delete or transfer them first.") - ctx.Redirect("/admin/users/" + ctx.Params(":userid")) - default: - ctx.Handle(500, "admin.user.DeleteUser", err) - } - return - } - log.Trace("%s User deleted by admin(%s): %s", ctx.Req.RequestURI, - ctx.User.LowerName, ctx.User.LowerName) - - ctx.Redirect("/admin/users") -} diff --git a/routers/admin/users.go b/routers/admin/users.go new file mode 100644 index 0000000000..5f98a64be6 --- /dev/null +++ b/routers/admin/users.go @@ -0,0 +1,224 @@ +// Copyright 2014 The Gogs Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package admin + +import ( + "strings" + + "github.com/Unknwon/com" + + "github.com/gogits/gogs/models" + "github.com/gogits/gogs/modules/auth" + "github.com/gogits/gogs/modules/base" + "github.com/gogits/gogs/modules/log" + "github.com/gogits/gogs/modules/middleware" +) + +const ( + USERS base.TplName = "admin/user/list" + USER_NEW base.TplName = "admin/user/new" + USER_EDIT base.TplName = "admin/user/edit" +) + +func Users(ctx *middleware.Context) { + ctx.Data["Title"] = ctx.Tr("admin.users") + ctx.Data["PageIsAdmin"] = true + ctx.Data["PageIsAdminUsers"] = true + + p := com.StrTo(ctx.Query("p")).MustInt() + if p < 1 { + p = 1 + } + pageNum := 50 + count := models.CountUsers() + curCount := int64((p-1)*pageNum + pageNum) + if curCount > count { + p = int(count) / pageNum + } else if count > curCount { + ctx.Data["NextPageNum"] = p + 1 + } + if p > 1 { + ctx.Data["LastPageNum"] = p - 1 + } + + var err error + ctx.Data["Users"], err = models.GetUsers(pageNum, (p-1)*pageNum) + if err != nil { + ctx.Handle(500, "admin.Users(GetUsers)", err) + return + } + ctx.HTML(200, USERS) +} + +func NewUser(ctx *middleware.Context) { + ctx.Data["Title"] = ctx.Tr("admin.users.new_account") + ctx.Data["PageIsAdmin"] = true + ctx.Data["PageIsAdminUsers"] = true + + auths, err := models.GetAuths() + if err != nil { + ctx.Handle(500, "GetAuths", err) + return + } + ctx.Data["LoginSources"] = auths + ctx.HTML(200, USER_NEW) +} + +func NewUserPost(ctx *middleware.Context, form auth.RegisterForm) { + ctx.Data["Title"] = ctx.Tr("admin.users.new_account") + ctx.Data["PageIsAdmin"] = true + ctx.Data["PageIsAdminUsers"] = true + + if ctx.HasError() { + ctx.HTML(200, USER_NEW) + return + } + + if form.Password != form.Retype { + ctx.Data["Err_Password"] = true + ctx.RenderWithErr(ctx.Tr("form.password_not_match"), USER_NEW, &form) + return + } + + u := &models.User{ + Name: form.UserName, + Email: form.Email, + Passwd: form.Password, + IsActive: true, + LoginType: models.PLAIN, + } + + if len(form.LoginType) > 0 { + // NOTE: need rewrite. + fields := strings.Split(form.LoginType, "-") + tp, _ := com.StrTo(fields[0]).Int() + u.LoginType = models.LoginType(tp) + u.LoginSource, _ = com.StrTo(fields[1]).Int64() + u.LoginName = form.LoginName + } + + if err := models.CreateUser(u); err != nil { + switch err { + case models.ErrUserAlreadyExist: + ctx.Data["Err_UserName"] = true + ctx.RenderWithErr(ctx.Tr("form.username_been_taken"), USER_NEW, &form) + case models.ErrEmailAlreadyUsed: + ctx.Data["Err_Email"] = true + ctx.RenderWithErr(ctx.Tr("form.email_been_used"), USER_NEW, &form) + case models.ErrUserNameIllegal: + ctx.Data["Err_UserName"] = true + ctx.RenderWithErr(ctx.Tr("form.illegal_username"), USER_NEW, &form) + default: + ctx.Handle(500, "CreateUser", err) + } + return + } + log.Trace("Account created by admin(%s): %s", ctx.User.Name, u.Name) + ctx.Redirect("/admin/users") +} + +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) + if err != nil { + ctx.Handle(500, "GetUserById", err) + return + } + + ctx.Data["User"] = u + auths, err := models.GetAuths() + if err != nil { + ctx.Handle(500, "GetAuths", err) + return + } + ctx.Data["LoginSources"] = auths + 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 + + uid := com.StrTo(ctx.Params(":userid")).MustInt64() + if uid == 0 { + ctx.Handle(404, "EditUser", nil) + return + } + + u, err := models.GetUserById(uid) + if err != nil { + ctx.Handle(500, "GetUserById", err) + return + } + + if ctx.HasError() { + ctx.HTML(200, USER_EDIT) + return + } + + // NOTE: need password length check? + if len(form.Passwd) > 0 { + u.Passwd = form.Passwd + u.Salt = models.GetUserSalt() + u.EncodePasswd() + } + + 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 + if err := models.UpdateUser(u); err != nil { + ctx.Handle(500, "UpdateUser", err) + return + } + log.Trace("Account profile updated by admin(%s): %s", ctx.User.Name, u.Name) + + ctx.Data["User"] = u + ctx.Flash.Success(ctx.Tr("admin.users.update_profile_success")) + ctx.Redirect("/admin/users/" + ctx.Params(":userid")) +} + +func DeleteUser(ctx *middleware.Context) { + uid := com.StrTo(ctx.Params(":userid")).MustInt64() + if uid == 0 { + ctx.Handle(404, "DeleteUser", nil) + return + } + + u, err := models.GetUserById(uid) + if err != nil { + ctx.Handle(500, "GetUserById", err) + return + } + + if err = models.DeleteUser(u); err != nil { + switch err { + case models.ErrUserOwnRepos: + ctx.Flash.Error(ctx.Tr("admin.users.still_own_repo")) + ctx.Redirect("/admin/users/" + ctx.Params(":userid")) + default: + ctx.Handle(500, "DeleteUser", err) + } + return + } + log.Trace("Account deleted by admin(%s): %s", ctx.User.Name, u.Name) + ctx.Redirect("/admin/users") +} |