summaryrefslogtreecommitdiffstats
path: root/routers
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2014-05-05 16:42:15 +0800
committerLunny Xiao <xiaolunwen@gmail.com>2014-05-05 16:42:15 +0800
commitd8136c9c3cf0f7d84510402f01cbe07a656a0587 (patch)
tree2a1a7553a111a008a0322625c30130ca952b6acd /routers
parent02687cbdf37be3c89005abe45c7d1f6240e339e0 (diff)
parent1652dd5068f2f3ae1851bc2321832c88af85d570 (diff)
downloadgitea-d8136c9c3cf0f7d84510402f01cbe07a656a0587.tar.gz
gitea-d8136c9c3cf0f7d84510402f01cbe07a656a0587.zip
Merge branch 'dev-ldap' into dev
Diffstat (limited to 'routers')
-rw-r--r--routers/admin/admin.go13
-rw-r--r--routers/admin/auths.go147
-rw-r--r--routers/admin/user.go33
3 files changed, 188 insertions, 5 deletions
diff --git a/routers/admin/admin.go b/routers/admin/admin.go
index 2d5bdaff27..eafe8cb41b 100644
--- a/routers/admin/admin.go
+++ b/routers/admin/admin.go
@@ -120,6 +120,19 @@ func Users(ctx *middleware.Context) {
ctx.HTML(200, "admin/users")
}
+func Auths(ctx *middleware.Context) {
+ ctx.Data["Title"] = "Auth Sources"
+ ctx.Data["PageIsAuths"] = true
+
+ var err error
+ ctx.Data["Sources"], err = models.GetAuths()
+ if err != nil {
+ ctx.Handle(200, "admin.Auths", err)
+ return
+ }
+ ctx.HTML(200, "admin/auths")
+}
+
func Repositories(ctx *middleware.Context) {
ctx.Data["Title"] = "Repository Management"
ctx.Data["PageIsRepos"] = true
diff --git a/routers/admin/auths.go b/routers/admin/auths.go
new file mode 100644
index 0000000000..892413049e
--- /dev/null
+++ b/routers/admin/auths.go
@@ -0,0 +1,147 @@
+package admin
+
+import (
+ "strings"
+
+ "github.com/go-martini/martini"
+ "github.com/gogits/gogs/models"
+ "github.com/gogits/gogs/modules/auth"
+ "github.com/gogits/gogs/modules/auth/ldap"
+ "github.com/gogits/gogs/modules/base"
+ "github.com/gogits/gogs/modules/middleware"
+ "github.com/gpmgo/gopm/log"
+)
+
+func NewAuthSource(ctx *middleware.Context) {
+ ctx.Data["Title"] = "New Authentication"
+ ctx.Data["PageIsAuths"] = true
+ ctx.Data["LoginTypes"] = models.LoginTypes
+ ctx.HTML(200, "admin/auths/new")
+}
+
+func NewAuthSourcePost(ctx *middleware.Context, form auth.AuthenticationForm) {
+ ctx.Data["Title"] = "New Authentication"
+ ctx.Data["PageIsAuths"] = true
+
+ if ctx.HasError() {
+ ctx.HTML(200, "admin/auths/new")
+ return
+ }
+
+ u := &models.LDAPConfig{
+ Ldapsource: ldap.Ldapsource{
+ Host: form.Host,
+ Port: form.Port,
+ BaseDN: form.BaseDN,
+ Attributes: form.Attributes,
+ Filter: form.Filter,
+ MsAdSAFormat: form.MsAdSA,
+ Enabled: true,
+ Name: form.Name,
+ },
+ }
+
+ if err := models.AddLDAPSource(form.Name, u); err != nil {
+ switch err {
+ default:
+ ctx.Handle(500, "admin.auths.NewAuth", err)
+ }
+ return
+ }
+
+ log.Trace("%s Authentication created by admin(%s): %s", ctx.Req.RequestURI,
+ ctx.User.LowerName, strings.ToLower(form.Name))
+
+ ctx.Redirect("/admin/auths")
+}
+
+func EditAuthSource(ctx *middleware.Context, params martini.Params) {
+ ctx.Data["Title"] = "Edit Authentication"
+ ctx.Data["PageIsAuths"] = true
+ id, err := base.StrTo(params["authid"]).Int64()
+ if err != nil {
+ ctx.Handle(404, "admin.auths.EditAuthSource", err)
+ return
+ }
+ u, err := models.GetLoginSourceById(id)
+ if err != nil {
+ ctx.Handle(500, "admin.user.EditUser", err)
+ return
+ }
+ ctx.Data["Source"] = u
+ ctx.Data["LoginTypes"] = models.LoginTypes
+ ctx.HTML(200, "admin/auths/edit")
+}
+
+func EditAuthSourcePost(ctx *middleware.Context, form auth.AuthenticationForm) {
+ ctx.Data["Title"] = "Edit Authentication"
+ ctx.Data["PageIsAuths"] = true
+
+ if ctx.HasError() {
+ ctx.HTML(200, "admin/auths/edit")
+ return
+ }
+
+ u := models.LoginSource{
+ Name: form.Name,
+ IsActived: form.IsActived,
+ Type: models.LT_LDAP,
+ Cfg: &models.LDAPConfig{
+ Ldapsource: ldap.Ldapsource{
+ Host: form.Host,
+ Port: form.Port,
+ BaseDN: form.BaseDN,
+ Attributes: form.Attributes,
+ Filter: form.Filter,
+ MsAdSAFormat: form.MsAdSA,
+ Enabled: true,
+ Name: form.Name,
+ },
+ },
+ }
+
+ if err := models.UpdateLDAPSource(&u); err != nil {
+ switch err {
+ default:
+ ctx.Handle(500, "admin.auths.EditAuth", err)
+ }
+ return
+ }
+
+ log.Trace("%s Authentication changed by admin(%s): %s", ctx.Req.RequestURI,
+ ctx.User.LowerName, strings.ToLower(form.Name))
+
+ ctx.Redirect("/admin/auths")
+}
+
+func DeleteAuthSource(ctx *middleware.Context, params martini.Params) {
+ ctx.Data["Title"] = "Delete Authentication"
+ ctx.Data["PageIsAuths"] = true
+
+ id, err := base.StrTo(params["authid"]).Int64()
+ if err != nil {
+ ctx.Handle(404, "admin.auths.DeleteAuth", err)
+ return
+ }
+
+ a, err := models.GetLoginSourceById(id)
+ if err != nil {
+ ctx.Handle(500, "admin.auths.DeleteAuth", err)
+ return
+ }
+
+ if err = models.DelLoginSource(a); err != nil {
+ switch err {
+ case models.ErrAuthenticationUserUsed:
+ ctx.Flash.Error("This authentication still has used by some users, you should move them and then delete again.")
+ ctx.Redirect("/admin/auths/" + params["authid"])
+ default:
+ ctx.Handle(500, "admin.auths.DeleteAuth", err)
+ }
+ return
+ }
+ log.Trace("%s Authentication deleted by admin(%s): %s", ctx.Req.RequestURI,
+ ctx.User.LowerName, ctx.User.LowerName)
+
+ ctx.Redirect("/admin/auths")
+}
diff --git a/routers/admin/user.go b/routers/admin/user.go
index fee692202e..14c17e9756 100644
--- a/routers/admin/user.go
+++ b/routers/admin/user.go
@@ -5,6 +5,8 @@
package admin
import (
+ "fmt"
+ "strconv"
"strings"
"github.com/go-martini/martini"
@@ -19,6 +21,12 @@ import (
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", err)
+ return
+ }
+ ctx.Data["LoginSources"] = auths
ctx.HTML(200, "admin/users/new")
}
@@ -40,10 +48,18 @@ func NewUserPost(ctx *middleware.Context, form auth.RegisterForm) {
}
u := &models.User{
- Name: form.UserName,
- Email: form.Email,
- Passwd: form.Password,
- IsActive: true,
+ Name: form.UserName,
+ Email: form.Email,
+ Passwd: form.Password,
+ IsActive: true,
+ LoginType: models.LT_PLAIN,
+ }
+
+ if len(form.LoginType) > 0 {
+ fields := strings.Split(form.LoginType, "-")
+ u.LoginType, _ = strconv.Atoi(fields[0])
+ u.LoginSource, _ = strconv.ParseInt(fields[1], 10, 64)
+ fmt.Println(u.LoginSource)
}
var err error
@@ -84,6 +100,12 @@ func EditUser(ctx *middleware.Context, params martini.Params) {
}
ctx.Data["User"] = u
+ auths, err := models.GetAuths()
+ if err != nil {
+ ctx.Handle(500, "admin.user.NewUser", err)
+ return
+ }
+ ctx.Data["LoginSources"] = auths
ctx.HTML(200, "admin/users/edit")
}
@@ -110,6 +132,7 @@ func EditUserPost(ctx *middleware.Context, params martini.Params, form auth.Admi
u.AvatarEmail = form.Avatar
u.IsActive = form.Active == "on"
u.IsAdmin = form.Admin == "on"
+ u.LoginType = form.LoginType
if err := models.UpdateUser(u); err != nil {
ctx.Handle(500, "admin.user.EditUser", err)
return
@@ -126,7 +149,7 @@ func DeleteUser(ctx *middleware.Context, params martini.Params) {
ctx.Data["Title"] = "Delete Account"
ctx.Data["PageIsUsers"] = true
- log.Info("delete")
+ //log.Info("delete")
uid, err := base.StrTo(params["userid"]).Int()
if err != nil {
ctx.Handle(404, "admin.user.EditUser", err)