Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion app/controllers/v3/application_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,9 @@ def permission_queryer
perm_client,
SecurityContext,
configuration.get(:perm, :enabled),
configuration.get(:perm, :query_enabled))
configuration.get(:perm, :query_enabled),
configuration.get(:perm, :query_raise_on_mismatch)
)
end

private
Expand Down
26 changes: 22 additions & 4 deletions lib/cloud_controller/perm/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@ def rehydrate
end

def create_org_role(role:, org_id:)
create_role(org_role(role, org_id))
create_role(org_role(role, org_id), [
org_role_to_permission(role, org_id)
])
end

def delete_org_role(role:, org_id:)
Expand All @@ -54,7 +56,9 @@ def unassign_org_role(role:, org_id:, user_id:, issuer:)
end

def create_space_role(role:, space_id:)
create_role(space_role(role, space_id))
create_role(space_role(role, space_id), [
space_role_to_permission(role, space_id)
])
end

def delete_space_role(role:, space_id:)
Expand Down Expand Up @@ -129,10 +133,24 @@ def space_role(role, space_id)
"space-#{role}-#{space_id}"
end

def create_role(role)
def org_role_to_permission(role, org_id)
CloudFoundry::Perm::V1::Models::Permission.new(
name: "org.#{role}",
resource_pattern: org_id.to_s
)
end

def space_role_to_permission(role, space_id)
CloudFoundry::Perm::V1::Models::Permission.new(
name: "space.#{role}",
resource_pattern: space_id.to_s
)
end

def create_role(role, permissions=[])
if enabled
begin
client.create_role(role_name: role)
client.create_role(role_name: role, permissions: permissions)
rescue CloudFoundry::Perm::V1::Errors::AlreadyExists
logger.debug('create-role.role-already-exists', role: role)
rescue CloudFoundry::Perm::V1::Errors::BadStatus => e
Expand Down
2 changes: 1 addition & 1 deletion lib/cloud_controller/perm/permissions.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def can_read_from_org?(org_id)
permissions = [
{ permission_name: 'org.manager', resource_id: org_id },
{ permission_name: 'org.auditor', resource_id: org_id },
{ permission_name: 'org.member', resource_id: org_id },
{ permission_name: 'org.user', resource_id: org_id },
{ permission_name: 'org.billing_manager', resource_id: org_id },
]
can_read_globally? || has_any_permission?(permissions)
Expand Down
4 changes: 3 additions & 1 deletion lib/cloud_controller/permissions/queryer.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
class VCAP::CloudController::Permissions::Queryer
attr_reader :perm_permissions, :db_permissions

def self.build(perm_client, security_context, perm_enabled, query_enabled)
def self.build(perm_client, security_context, perm_enabled, query_enabled, query_raise_on_mismatch=false)
VCAP::CloudController::Science::Experiment.raise_on_mismatches = query_raise_on_mismatch

db_permissions =
VCAP::CloudController::Permissions.new(
security_context.current_user
Expand Down
Loading