diff --git a/models/organization/org.go b/models/organization/org.go index 6c6f8d3ac9..739dfc6e46 100644 --- a/models/organization/org.go +++ b/models/organization/org.go @@ -417,8 +417,8 @@ func GetUsersWhoCanCreateOrgRepo(ctx context.Context, orgID int64) (map[int64]*u And("team_user.org_id = ?", orgID).Find(&users) } -// HasOrgOrUserVisible tells if the given user can see the given org or user -func HasOrgOrUserVisible(ctx context.Context, orgOrUser, user *user_model.User) bool { +// IsOwnerVisibleToDoer tells if the given user can see the given org or user +func IsOwnerVisibleToDoer(ctx context.Context, orgOrUser, user *user_model.User) bool { // If user is nil, it's an anonymous user/request. // The Ghost user is handled like an anonymous user. if user == nil || user.IsGhost() { @@ -446,7 +446,7 @@ func HasOrgsVisible(ctx context.Context, orgs []*Organization, user *user_model. } for _, org := range orgs { - if HasOrgOrUserVisible(ctx, org.AsUser(), user) { + if IsOwnerVisibleToDoer(ctx, org.AsUser(), user) { return true } } diff --git a/models/organization/org_test.go b/models/organization/org_test.go index cb7ecbf4b3..9faeae7d67 100644 --- a/models/organization/org_test.go +++ b/models/organization/org_test.go @@ -378,18 +378,18 @@ func TestHasOrgVisibleTypePublic(t *testing.T) { assert.NoError(t, organization.CreateOrganization(t.Context(), org, owner)) org = unittest.AssertExistsAndLoadBean(t, &organization.Organization{Name: org.Name, Type: user_model.UserTypeOrganization}) - test1 := organization.HasOrgOrUserVisible(t.Context(), org.AsUser(), owner) - test2 := organization.HasOrgOrUserVisible(t.Context(), org.AsUser(), org3) - test3 := organization.HasOrgOrUserVisible(t.Context(), org.AsUser(), nil) + test1 := organization.IsOwnerVisibleToDoer(t.Context(), org.AsUser(), owner) + test2 := organization.IsOwnerVisibleToDoer(t.Context(), org.AsUser(), org3) + test3 := organization.IsOwnerVisibleToDoer(t.Context(), org.AsUser(), nil) assert.True(t, test1) // owner of org assert.True(t, test2) // user not a part of org assert.True(t, test3) // logged out user restrictedUser := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 29, IsRestricted: true}) require.True(t, restrictedUser.IsRestricted) - assert.True(t, organization.HasOrgOrUserVisible(t.Context(), org.AsUser(), restrictedUser)) + assert.True(t, organization.IsOwnerVisibleToDoer(t.Context(), org.AsUser(), restrictedUser)) defer test.MockVariableValue(&setting.Service.RequireSignInViewStrict, true)() - assert.False(t, organization.HasOrgOrUserVisible(t.Context(), org.AsUser(), restrictedUser)) + assert.False(t, organization.IsOwnerVisibleToDoer(t.Context(), org.AsUser(), restrictedUser)) } func TestHasOrgVisibleTypeLimited(t *testing.T) { @@ -407,9 +407,9 @@ func TestHasOrgVisibleTypeLimited(t *testing.T) { assert.NoError(t, organization.CreateOrganization(t.Context(), org, owner)) org = unittest.AssertExistsAndLoadBean(t, &organization.Organization{Name: org.Name, Type: user_model.UserTypeOrganization}) - test1 := organization.HasOrgOrUserVisible(t.Context(), org.AsUser(), owner) - test2 := organization.HasOrgOrUserVisible(t.Context(), org.AsUser(), org3) - test3 := organization.HasOrgOrUserVisible(t.Context(), org.AsUser(), nil) + test1 := organization.IsOwnerVisibleToDoer(t.Context(), org.AsUser(), owner) + test2 := organization.IsOwnerVisibleToDoer(t.Context(), org.AsUser(), org3) + test3 := organization.IsOwnerVisibleToDoer(t.Context(), org.AsUser(), nil) assert.True(t, test1) // owner of org assert.True(t, test2) // user not a part of org assert.False(t, test3) // logged out user @@ -430,9 +430,9 @@ func TestHasOrgVisibleTypePrivate(t *testing.T) { assert.NoError(t, organization.CreateOrganization(t.Context(), org, owner)) org = unittest.AssertExistsAndLoadBean(t, &organization.Organization{Name: org.Name, Type: user_model.UserTypeOrganization}) - test1 := organization.HasOrgOrUserVisible(t.Context(), org.AsUser(), owner) - test2 := organization.HasOrgOrUserVisible(t.Context(), org.AsUser(), org3) - test3 := organization.HasOrgOrUserVisible(t.Context(), org.AsUser(), nil) + test1 := organization.IsOwnerVisibleToDoer(t.Context(), org.AsUser(), owner) + test2 := organization.IsOwnerVisibleToDoer(t.Context(), org.AsUser(), org3) + test3 := organization.IsOwnerVisibleToDoer(t.Context(), org.AsUser(), nil) assert.True(t, test1) // owner of org assert.False(t, test2) // user not a part of org assert.False(t, test3) // logged out user diff --git a/models/perm/access/repo_permission.go b/models/perm/access/repo_permission.go index 31bf064ba7..c6e65f3f72 100644 --- a/models/perm/access/repo_permission.go +++ b/models/perm/access/repo_permission.go @@ -427,8 +427,7 @@ func GetIndividualUserRepoPermission(ctx context.Context, repo *repo_model.Repos // Prevent strangers from checking out public repo of private organization/users // Allow user if they are a collaborator of a repo within a private user or a private organization but not a member of the organization itself - // TODO: rename it to "IsOwnerVisibleToDoer" - if !organization.HasOrgOrUserVisible(ctx, repo.Owner, user) && !isCollaborator { + if !organization.IsOwnerVisibleToDoer(ctx, repo.Owner, user) && !isCollaborator { perm.AccessMode = perm_model.AccessModeNone return perm, nil } diff --git a/routers/api/v1/org/org.go b/routers/api/v1/org/org.go index 19dcfc0afb..c78b7ba527 100644 --- a/routers/api/v1/org/org.go +++ b/routers/api/v1/org/org.go @@ -145,8 +145,8 @@ func GetUserOrgsPermissions(ctx *context.APIContext) { op := api.OrganizationPermissions{} - if !organization.HasOrgOrUserVisible(ctx, o, ctx.Doer) { - ctx.APIErrorNotFound("HasOrgOrUserVisible", nil) + if !organization.IsOwnerVisibleToDoer(ctx, o, ctx.Doer) { + ctx.APIErrorNotFound("IsOwnerVisibleToDoer", nil) return } @@ -311,8 +311,8 @@ func Get(ctx *context.APIContext) { // "404": // "$ref": "#/responses/notFound" - if !organization.HasOrgOrUserVisible(ctx, ctx.Org.Organization.AsUser(), ctx.Doer) { - ctx.APIErrorNotFound("HasOrgOrUserVisible", nil) + if !organization.IsOwnerVisibleToDoer(ctx, ctx.Org.Organization.AsUser(), ctx.Doer) { + ctx.APIErrorNotFound("IsOwnerVisibleToDoer", nil) return } diff --git a/routers/api/v1/repo/fork.go b/routers/api/v1/repo/fork.go index 4413493564..8adb6f9122 100644 --- a/routers/api/v1/repo/fork.go +++ b/routers/api/v1/repo/fork.go @@ -93,7 +93,7 @@ func prepareDoerCreateRepoInOrg(ctx *context.APIContext, orgName string) *organi return nil } - if !organization.HasOrgOrUserVisible(ctx, org.AsUser(), ctx.Doer) { + if !organization.IsOwnerVisibleToDoer(ctx, org.AsUser(), ctx.Doer) { ctx.APIErrorNotFound() return nil } diff --git a/services/context/package.go b/services/context/package.go index ce2007d0ad..a566ad5d09 100644 --- a/services/context/package.go +++ b/services/context/package.go @@ -149,7 +149,7 @@ func determineAccessMode(ctx *Base, pkgOwner, doer *user_model.User) (perm.Acces } } } - if accessMode == perm.AccessModeNone && organization.HasOrgOrUserVisible(ctx, pkgOwner, doer) { + if accessMode == perm.AccessModeNone && organization.IsOwnerVisibleToDoer(ctx, pkgOwner, doer) { // 2. If user is unauthorized or no org member, check if org is visible accessMode = perm.AccessModeRead } diff --git a/templates/repo/issue/fields/dropdown.tmpl b/templates/repo/issue/fields/dropdown.tmpl index 26505f58a5..2eb76fe543 100644 --- a/templates/repo/issue/fields/dropdown.tmpl +++ b/templates/repo/issue/fields/dropdown.tmpl @@ -1,8 +1,7 @@