diff options
author | 6543 <6543@obermui.de> | 2020-12-16 23:39:12 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-17 00:39:12 +0100 |
commit | 9e456b5a56c3cf1860ca86be85e19619ad544160 (patch) | |
tree | 2088623e52e885947199b947c1a593ba30ecb9c0 /routers/api/v1/org/org.go | |
parent | 069acf6a215ea05f23ba5bf75e84dcc63ff95044 (diff) | |
download | gitea-9e456b5a56c3cf1860ca86be85e19619ad544160.tar.gz gitea-9e456b5a56c3cf1860ca86be85e19619ad544160.zip |
HotFix: Hide private partisipation in Orgs (#13994)
* HotFix: Hide private partisipation in Orgs
* refactor & add node to fuc GetOrganizations
Diffstat (limited to 'routers/api/v1/org/org.go')
-rw-r--r-- | routers/api/v1/org/org.go | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/routers/api/v1/org/org.go b/routers/api/v1/org/org.go index 987f141078..ca3e10173b 100644 --- a/routers/api/v1/org/org.go +++ b/routers/api/v1/org/org.go @@ -17,19 +17,28 @@ import ( "code.gitea.io/gitea/routers/api/v1/utils" ) -func listUserOrgs(ctx *context.APIContext, u *models.User, all bool) { - if err := u.GetOrganizations(&models.SearchOrganizationsOptions{ - ListOptions: utils.GetListOptions(ctx), - All: all, - }); err != nil { - ctx.Error(http.StatusInternalServerError, "GetOrganizations", err) +func listUserOrgs(ctx *context.APIContext, u *models.User) { + + listOptions := utils.GetListOptions(ctx) + showPrivate := ctx.IsSigned && (ctx.User.IsAdmin || ctx.User.ID == u.ID) + + orgs, err := models.GetOrgsByUserID(u.ID, showPrivate) + if err != nil { + ctx.Error(http.StatusInternalServerError, "GetOrgsByUserID", err) return } + maxResults := len(orgs) + + orgs = utils.PaginateUserSlice(orgs, listOptions.Page, listOptions.PageSize) - apiOrgs := make([]*api.Organization, len(u.Orgs)) - for i := range u.Orgs { - apiOrgs[i] = convert.ToOrganization(u.Orgs[i]) + apiOrgs := make([]*api.Organization, len(orgs)) + for i := range orgs { + apiOrgs[i] = convert.ToOrganization(orgs[i]) } + + ctx.SetLinkHeader(int(maxResults), listOptions.PageSize) + ctx.Header().Set("X-Total-Count", fmt.Sprintf("%d", maxResults)) + ctx.Header().Set("Access-Control-Expose-Headers", "X-Total-Count, Link") ctx.JSON(http.StatusOK, &apiOrgs) } @@ -53,7 +62,7 @@ func ListMyOrgs(ctx *context.APIContext) { // "200": // "$ref": "#/responses/OrganizationList" - listUserOrgs(ctx, ctx.User, true) + listUserOrgs(ctx, ctx.User) } // ListUserOrgs list user's orgs @@ -85,7 +94,7 @@ func ListUserOrgs(ctx *context.APIContext) { if ctx.Written() { return } - listUserOrgs(ctx, u, ctx.User != nil && (ctx.User.IsAdmin || ctx.User.ID == u.ID)) + listUserOrgs(ctx, u) } // GetAll return list of all public organizations |