diff options
author | Unknwon <u@gogs.io> | 2016-03-21 12:47:54 -0400 |
---|---|---|
committer | Unknwon <u@gogs.io> | 2016-03-21 12:47:54 -0400 |
commit | e6f927f61af927156798390e64f17dd6755697e7 (patch) | |
tree | c97f90dfb0f4ae96534c13f98352907fb42d177b /routers | |
parent | 60ae8ac3d2995d46156ead8ad93004801daad4ce (diff) | |
download | gitea-e6f927f61af927156798390e64f17dd6755697e7.tar.gz gitea-e6f927f61af927156798390e64f17dd6755697e7.zip |
#1692 api: admin list and create team under organization
Diffstat (limited to 'routers')
-rw-r--r-- | routers/api/v1/admin/org.go (renamed from routers/api/v1/admin/orgs.go) | 0 | ||||
-rw-r--r-- | routers/api/v1/admin/org_team.go | 56 | ||||
-rw-r--r-- | routers/api/v1/admin/repo.go (renamed from routers/api/v1/admin/repos.go) | 0 | ||||
-rw-r--r-- | routers/api/v1/admin/user.go (renamed from routers/api/v1/admin/users.go) | 0 | ||||
-rw-r--r-- | routers/api/v1/api.go | 4 | ||||
-rw-r--r-- | routers/api/v1/convert/convert.go | 9 | ||||
-rw-r--r-- | routers/api/v1/repo/hook.go (renamed from routers/api/v1/repo/hooks.go) | 0 | ||||
-rw-r--r-- | routers/api/v1/repo/key.go (renamed from routers/api/v1/repo/keys.go) | 0 | ||||
-rw-r--r-- | routers/api/v1/user/follower.go (renamed from routers/api/v1/user/followers.go) | 0 | ||||
-rw-r--r-- | routers/api/v1/user/key.go (renamed from routers/api/v1/user/keys.go) | 0 | ||||
-rw-r--r-- | routers/org/teams.go | 16 |
11 files changed, 70 insertions, 15 deletions
diff --git a/routers/api/v1/admin/orgs.go b/routers/api/v1/admin/org.go index fcce3b9314..fcce3b9314 100644 --- a/routers/api/v1/admin/orgs.go +++ b/routers/api/v1/admin/org.go diff --git a/routers/api/v1/admin/org_team.go b/routers/api/v1/admin/org_team.go new file mode 100644 index 0000000000..618dd9a948 --- /dev/null +++ b/routers/api/v1/admin/org_team.go @@ -0,0 +1,56 @@ +// Copyright 2016 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 ( + api "github.com/gogits/go-gogs-client" + + "github.com/gogits/gogs/models" + "github.com/gogits/gogs/modules/context" + "github.com/gogits/gogs/routers/api/v1/convert" + "github.com/gogits/gogs/routers/api/v1/user" +) + +func ListTeams(ctx *context.APIContext) { + org := user.GetUserByParamsName(ctx, ":orgname") + if ctx.Written() { + return + } + + if err := org.GetTeams(); err != nil { + ctx.Error(500, "GetTeams", err) + return + } + + apiTeams := make([]*api.Team, len(org.Teams)) + for i := range org.Teams { + apiTeams[i] = convert.ToTeam(org.Teams[i]) + } + ctx.JSON(200, apiTeams) +} + +func CreateTeam(ctx *context.APIContext, form api.CreateTeamOption) { + org := user.GetUserByParamsName(ctx, ":orgname") + if ctx.Written() { + return + } + + team := &models.Team{ + OrgID: org.Id, + Name: form.Name, + Description: form.Description, + Authorize: models.ParseAccessMode(form.Permission), + } + if err := models.NewTeam(team); err != nil { + if models.IsErrTeamAlreadyExist(err) { + ctx.Error(422, "NewTeam", err) + } else { + ctx.Error(500, "NewTeam", err) + } + return + } + + ctx.JSON(200, convert.ToTeam(team)) +} diff --git a/routers/api/v1/admin/repos.go b/routers/api/v1/admin/repo.go index 0f0c3862de..0f0c3862de 100644 --- a/routers/api/v1/admin/repos.go +++ b/routers/api/v1/admin/repo.go diff --git a/routers/api/v1/admin/users.go b/routers/api/v1/admin/user.go index ce13804ffb..ce13804ffb 100644 --- a/routers/api/v1/admin/users.go +++ b/routers/api/v1/admin/user.go diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 59625efdf1..744289ac0d 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -223,6 +223,10 @@ func RegisterRoutes(m *macaron.Macaron) { m.Post("/repos", bind(api.CreateRepoOption{}), admin.CreateRepo) }) }) + + m.Group("/orgs/:orgname", func() { + m.Combo("/teams").Get(admin.ListTeams).Post(bind(api.CreateTeamOption{}), admin.CreateTeam) + }) }, ReqAdmin()) }, context.APIContexter()) } diff --git a/routers/api/v1/convert/convert.go b/routers/api/v1/convert/convert.go index 7e3e380bd8..8eca5f4ec6 100644 --- a/routers/api/v1/convert/convert.go +++ b/routers/api/v1/convert/convert.go @@ -196,3 +196,12 @@ func ToOrganization(org *models.User) *api.Organization { Location: org.Location, } } + +func ToTeam(team *models.Team) *api.Team { + return &api.Team{ + ID: team.ID, + Name: team.Name, + Description: team.Description, + Permission: team.Authorize.String(), + } +} diff --git a/routers/api/v1/repo/hooks.go b/routers/api/v1/repo/hook.go index 0cbe6762a8..0cbe6762a8 100644 --- a/routers/api/v1/repo/hooks.go +++ b/routers/api/v1/repo/hook.go diff --git a/routers/api/v1/repo/keys.go b/routers/api/v1/repo/key.go index 563dac2615..563dac2615 100644 --- a/routers/api/v1/repo/keys.go +++ b/routers/api/v1/repo/key.go diff --git a/routers/api/v1/user/followers.go b/routers/api/v1/user/follower.go index 00d1952d59..00d1952d59 100644 --- a/routers/api/v1/user/followers.go +++ b/routers/api/v1/user/follower.go diff --git a/routers/api/v1/user/keys.go b/routers/api/v1/user/key.go index 7337112ece..7337112ece 100644 --- a/routers/api/v1/user/keys.go +++ b/routers/api/v1/user/key.go diff --git a/routers/org/teams.go b/routers/org/teams.go index e8ae8291b7..430f08ec28 100644 --- a/routers/org/teams.go +++ b/routers/org/teams.go @@ -154,25 +154,11 @@ func NewTeamPost(ctx *context.Context, form auth.CreateTeamForm) { ctx.Data["PageIsOrgTeams"] = true ctx.Data["PageIsOrgTeamsNew"] = true - // Validate permission level. - var auth models.AccessMode - switch form.Permission { - case "read": - auth = models.ACCESS_MODE_READ - case "write": - auth = models.ACCESS_MODE_WRITE - case "admin": - auth = models.ACCESS_MODE_ADMIN - default: - ctx.Error(401) - return - } - t := &models.Team{ OrgID: ctx.Org.Organization.Id, Name: form.TeamName, Description: form.Description, - Authorize: auth, + Authorize: models.ParseAccessMode(form.Permission), } ctx.Data["Team"] = t |