summaryrefslogtreecommitdiffstats
path: root/routers
diff options
context:
space:
mode:
authorUnknown <joe2010xtmf@163.com>2014-07-02 16:42:16 -0400
committerUnknown <joe2010xtmf@163.com>2014-07-02 16:42:16 -0400
commit465dc962b5e1febdfc988419d4d03e98f777019f (patch)
tree8c0f4abc434f75a7add718e98b077cb245608062 /routers
parente57aebb31667a1de54e82cd26e9bbdb8e795039d (diff)
downloadgitea-465dc962b5e1febdfc988419d4d03e98f777019f.tar.gz
gitea-465dc962b5e1febdfc988419d4d03e98f777019f.zip
Finish create organization team
Diffstat (limited to 'routers')
-rw-r--r--routers/org/teams.go81
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) {