diff --git a/models/user.go b/models/user.go index 764c2280d73..0d8f6088613 100644 --- a/models/user.go +++ b/models/user.go @@ -1,4 +1,5 @@ // Copyright 2014 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. @@ -1358,7 +1359,7 @@ func SearchUsers(opts *SearchUserOptions) (users []*User, _ int64, _ error) { return nil, 0, fmt.Errorf("Count: %v", err) } - if opts.PageSize <= 0 || opts.PageSize > setting.UI.ExplorePagingNum { + if opts.PageSize == 0 || opts.PageSize > setting.UI.ExplorePagingNum { opts.PageSize = setting.UI.ExplorePagingNum } if opts.Page <= 0 { @@ -1368,11 +1369,13 @@ func SearchUsers(opts *SearchUserOptions) (users []*User, _ int64, _ error) { opts.OrderBy = SearchOrderByAlphabetically } + sess := x.Where(cond) + if opts.PageSize > 0 { + sess = sess.Limit(opts.PageSize, (opts.Page-1)*opts.PageSize) + } + users = make([]*User, 0, opts.PageSize) - return users, count, x.Where(cond). - Limit(opts.PageSize, (opts.Page-1)*opts.PageSize). - OrderBy(opts.OrderBy.String()). - Find(&users) + return users, count, sess.OrderBy(opts.OrderBy.String()).Find(&users) } // GetStarredRepos returns the repos starred by a particular user diff --git a/routers/api/v1/admin/org.go b/routers/api/v1/admin/org.go index 406cbb9a31f..03263a86dd9 100644 --- a/routers/api/v1/admin/org.go +++ b/routers/api/v1/admin/org.go @@ -1,4 +1,5 @@ // 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. @@ -66,3 +67,31 @@ func CreateOrg(ctx *context.APIContext, form api.CreateOrgOption) { 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 + // responses: + // "200": + // "$ref": "#/responses/OrganizationList" + // "403": + // "$ref": "#/responses/forbidden" + users, _, err := models.SearchUsers(&models.SearchUserOptions{ + Type: models.UserTypeOrganization, + OrderBy: models.SearchOrderByAlphabetically, + PageSize: -1, + }) + 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) +} diff --git a/routers/api/v1/admin/user.go b/routers/api/v1/admin/user.go index cff8ae4850f..e35beffc92e 100644 --- a/routers/api/v1/admin/user.go +++ b/routers/api/v1/admin/user.go @@ -1,4 +1,5 @@ // 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. @@ -291,3 +292,27 @@ func DeleteUserPublicKey(ctx *context.APIContext) { ctx.Status(204) } + +//GetAllUsers API for getting information of all the users +func GetAllUsers(ctx *context.APIContext) { + // swagger:operation GET /admin/users admin adminGetAllUsers + // --- + // summary: List all users + // produces: + // - application/json + // responses: + // "200": + // "$ref": "#/responses/UserList" + // "403": + // "$ref": "#/responses/forbidden" + users, _, err := models.SearchUsers(&models.SearchUserOptions{ + Type: models.UserTypeIndividual, + OrderBy: models.SearchOrderByAlphabetically, + PageSize: -1, + }) + if err != nil { + ctx.Error(500, "SearchUsers", err) + return + } + ctx.JSON(200, &users) +} diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 82c4b78de8e..2787d01a04c 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -671,7 +671,9 @@ func RegisterRoutes(m *macaron.Macaron) { }) m.Group("/admin", func() { + m.Get("/orgs", admin.GetAllOrgs) m.Group("/users", func() { + m.Get("", admin.GetAllUsers) m.Post("", bind(api.CreateUserOption{}), admin.CreateUser) m.Group("/:username", func() { m.Combo("").Patch(bind(api.EditUserOption{}), admin.EditUser). @@ -680,6 +682,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Post("", bind(api.CreateKeyOption{}), admin.CreatePublicKey) m.Delete("/:id", admin.DeleteUserPublicKey) }) + m.Get("/orgs", org.ListUserOrgs) m.Post("/orgs", bind(api.CreateOrgOption{}), admin.CreateOrg) m.Post("/repos", bind(api.CreateRepoOption{}), admin.CreateRepo) }) diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl index 153701d6dda..d86d1116cab 100644 --- a/templates/swagger/v1_json.tmpl +++ b/templates/swagger/v1_json.tmpl @@ -23,7 +23,45 @@ }, "basePath": "{{AppSubUrl}}/api/v1", "paths": { + "/admin/orgs": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "admin" + ], + "summary": "List all organizations", + "operationId": "adminGetAllOrgs", + "responses": { + "200": { + "$ref": "#/responses/OrganizationList" + }, + "403": { + "$ref": "#/responses/forbidden" + } + } + } + }, "/admin/users": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "admin" + ], + "summary": "List all users", + "operationId": "adminGetAllUsers", + "responses": { + "200": { + "$ref": "#/responses/UserList" + }, + "403": { + "$ref": "#/responses/forbidden" + } + } + }, "post": { "consumes": [ "application/json"