// Copyright 2015 The Gogs Authors. All rights reserved. // Copyright 2019 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. package admin import ( api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/routers/api/v1/convert" "code.gitea.io/gitea/routers/api/v1/user" ) // CreateOrg api for create organization func CreateOrg(ctx *context.APIContext, form api.CreateOrgOption) { // swagger:operation POST /admin/users/{username}/orgs admin adminCreateOrg // --- // summary: Create an organization // consumes: // - application/json // produces: // - application/json // parameters: // - name: username // in: path // description: username of the user that will own the created organization // type: string // required: true // - name: organization // in: body // required: true // schema: { "$ref": "#/definitions/CreateOrgOption" } // responses: // "201": // "$ref": "#/responses/Organization" // "403": // "$ref": "#/responses/forbidden" // "422": // "$ref": "#/responses/validationError" u := user.GetUserByParams(ctx) if ctx.Written() { return } visibility := api.VisibleTypePublic if form.Visibility != "" { visibility = api.VisibilityModes[form.Visibility] } org := &models.User{ Name: form.UserName, FullName: form.FullName, Description: form.Description, Website: form.Website, Location: form.Location, IsActive: true, Type: models.UserTypeOrganization, Visibility: visibility, } if err := models.CreateOrganization(org, u); 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)) } //GetAllOrgs API for getting information of all the organizations func GetAllOrgs(ctx *context.APIContext) { // swagger:operation GET /admin/orgs admin adminGetAllOrgs // --- // summary: List all organizations // produces: // - application/json // parameters: // - name: page // in: query // description: page number of results to return (1-based) // type: integer // - name: limit // in: query // description: page size of results, maximum page size is 50 // type: integer // responses: // "200": // "$ref": "#/responses/OrganizationList" // "403": // "$ref": "#/responses/forbidden" users, _, err := models.SearchUsers(&models.SearchUserOptions{ Type: models.UserTypeOrganization, OrderBy: models.SearchOrderByAlphabetically, Page: ctx.QueryInt("page"), PageSize: convert.ToCorrectPageSize(ctx.QueryInt("limit")), Private: true, }) if err != nil { ctx.Error(500, "SearchOrganizations", err) return } orgs := make([]*api.Organization, len(users)) for i := range users { orgs[i] = convert.ToOrganization(users[i]) } ctx.JSON(200, &orgs) }