10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/command_tower/admin_scope/manifest_projection.rb', line 10
def call(definition:, principal:)
scope_payload = scope_payload_for(definition)
unscoped_unregistered = scope_payload.nil? && !admin_scope_registered?(definition.id)
availability = availability_for(definition, principal:)
scope_options = scope_options_for(definition, principal:)
payload = {
scope: scope_payload,
availability:,
scope_options:
}.compact
if CommandTower::Current.impersonation_active
payload[:availability] = {
enabled: false,
reason: IMPERSONATION_DISABLED_REASON
}
return payload
end
return {} if unscoped_unregistered
payload
end
|