diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2018-11-21 01:31:30 +0800 |
---|---|---|
committer | techknowlogick <hello@techknowlogick.com> | 2018-11-20 12:31:30 -0500 |
commit | 8ef177f8c5d0968e732daf6b62fe77d3c2555527 (patch) | |
tree | 65d29b34c4d2612979e8fb66b0e613997f2a133e /routers | |
parent | 499bff43d935f1334a76b86fe3a44a5a670479ef (diff) | |
download | gitea-8ef177f8c5d0968e732daf6b62fe77d3c2555527.tar.gz gitea-8ef177f8c5d0968e732daf6b62fe77d3c2555527.zip |
add api for user to create org (#5268)
* add api for user to create org
* remove unused blank line on the swagger file end
* fix create and add test
* fix tests
* fix routes of create org API
* fix bug
* add copyright heads
Diffstat (limited to 'routers')
-rw-r--r-- | routers/api/v1/api.go | 2 | ||||
-rw-r--r-- | routers/api/v1/org/org.go | 51 |
2 files changed, 53 insertions, 0 deletions
diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index a839ce8dc1..c5f01d91d8 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -1,4 +1,5 @@ // Copyright 2015 The Gogs Authors. All rights reserved. +// Copyright 2018 The Gitea Authors. All rights reserved. // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. @@ -578,6 +579,7 @@ func RegisterRoutes(m *macaron.Macaron) { // Organizations m.Get("/user/orgs", reqToken(), org.ListMyOrgs) m.Get("/users/:username/orgs", org.ListUserOrgs) + m.Post("/orgs", reqToken(), bind(api.CreateOrgOption{}), org.Create) m.Group("/orgs/:orgname", func() { m.Get("/repos", user.ListOrgRepos) m.Combo("").Get(org.Get). diff --git a/routers/api/v1/org/org.go b/routers/api/v1/org/org.go index 29d45d2f2e..93c2ed7a88 100644 --- a/routers/api/v1/org/org.go +++ b/routers/api/v1/org/org.go @@ -1,4 +1,5 @@ // Copyright 2015 The Gogs Authors. All rights reserved. +// Copyright 2018 The Gitea Authors. All rights reserved. // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. @@ -62,6 +63,56 @@ func ListUserOrgs(ctx *context.APIContext) { listUserOrgs(ctx, u, false) } +// Create api for create organization +func Create(ctx *context.APIContext, form api.CreateOrgOption) { + // swagger:operation POST /orgs organization orgCreate + // --- + // summary: Create an organization + // consumes: + // - application/json + // produces: + // - application/json + // parameters: + // - name: organization + // in: body + // required: true + // schema: { "$ref": "#/definitions/CreateOrgOption" } + // responses: + // "201": + // "$ref": "#/responses/Organization" + // "403": + // "$ref": "#/responses/forbidden" + // "422": + // "$ref": "#/responses/validationError" + + if !ctx.User.AllowCreateOrganization { + ctx.Error(403, "Create organization not allowed", nil) + return + } + + org := &models.User{ + Name: form.UserName, + FullName: form.FullName, + Description: form.Description, + Website: form.Website, + Location: form.Location, + IsActive: true, + Type: models.UserTypeOrganization, + } + if err := models.CreateOrganization(org, ctx.User); err != nil { + if models.IsErrUserAlreadyExist(err) || + models.IsErrNameReserved(err) || + models.IsErrNamePatternNotAllowed(err) { + ctx.Error(422, "", err) + } else { + ctx.Error(500, "CreateOrganization", err) + } + return + } + + ctx.JSON(201, convert.ToOrganization(org)) +} + // Get get an organization func Get(ctx *context.APIContext) { // swagger:operation GET /orgs/{org} organization orgGet |