diff options
author | Unknown <joe2010xtmf@163.com> | 2014-07-02 16:42:16 -0400 |
---|---|---|
committer | Unknown <joe2010xtmf@163.com> | 2014-07-02 16:42:16 -0400 |
commit | 465dc962b5e1febdfc988419d4d03e98f777019f (patch) | |
tree | 8c0f4abc434f75a7add718e98b077cb245608062 /routers | |
parent | e57aebb31667a1de54e82cd26e9bbdb8e795039d (diff) | |
download | gitea-465dc962b5e1febdfc988419d4d03e98f777019f.tar.gz gitea-465dc962b5e1febdfc988419d4d03e98f777019f.zip |
Finish create organization team
Diffstat (limited to 'routers')
-rw-r--r-- | routers/org/teams.go | 81 |
1 files changed, 78 insertions, 3 deletions
diff --git a/routers/org/teams.go b/routers/org/teams.go index eef6a63469..492739250b 100644 --- a/routers/org/teams.go +++ b/routers/org/teams.go @@ -8,12 +8,15 @@ import ( "github.com/go-martini/martini" "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 ( - TEAMS base.TplName = "org/teams" + TEAMS base.TplName = "org/teams" + TEAM_NEW base.TplName = "org/team_new" ) func Teams(ctx *middleware.Context, params martini.Params) { @@ -46,8 +49,80 @@ func Teams(ctx *middleware.Context, params martini.Params) { } func NewTeam(ctx *middleware.Context, params martini.Params) { - ctx.Data["Title"] = "Organization " + params["org"] + " New Team" - ctx.HTML(200, "org/new_team") + org, err := models.GetUserByName(params["org"]) + if err != nil { + if err == models.ErrUserNotExist { + ctx.Handle(404, "org.NewTeam(GetUserByName)", err) + } else { + ctx.Handle(500, "org.NewTeam(GetUserByName)", err) + } + return + } + ctx.Data["Org"] = org + + // Check ownership of organization. + if !org.IsOrgOwner(ctx.User.Id) { + ctx.Error(403) + return + } + + ctx.HTML(200, TEAM_NEW) +} + +func NewTeamPost(ctx *middleware.Context, params martini.Params, form auth.CreateTeamForm) { + org, err := models.GetUserByName(params["org"]) + if err != nil { + if err == models.ErrUserNotExist { + ctx.Handle(404, "org.NewTeamPost(GetUserByName)", err) + } else { + ctx.Handle(500, "org.NewTeamPost(GetUserByName)", err) + } + return + } + ctx.Data["Org"] = org + + // Check ownership of organization. + if !org.IsOrgOwner(ctx.User.Id) { + ctx.Error(403) + return + } + + if ctx.HasError() { + ctx.HTML(200, TEAM_NEW) + return + } + + // Validate permission level. + var auth models.AuthorizeType + switch form.Permission { + case "read": + auth = models.ORG_READABLE + case "write": + auth = models.ORG_WRITABLE + case "admin": + auth = models.ORG_ADMIN + default: + ctx.Error(401) + return + } + + t := &models.Team{ + OrgId: org.Id, + Name: form.TeamName, + Description: form.Description, + Authorize: auth, + } + if err = models.NewTeam(t); err != nil { + if err == models.ErrTeamAlreadyExist { + ctx.Data["Err_TeamName"] = true + ctx.RenderWithErr("Team name has already been used", TEAM_NEW, &form) + } else { + ctx.Handle(500, "org.NewTeamPost(NewTeam)", err) + } + return + } + log.Trace("%s Team created: %s/%s", ctx.Req.RequestURI, org.Name, t.Name) + ctx.Redirect("/org/" + org.LowerName + "/teams/" + t.LowerName) } func EditTeam(ctx *middleware.Context, params martini.Params) { |