Module: HasHelpers::ServiceTrust::Authorization

Defined in:
lib/has_helpers/service_trust/authorization.rb

Class Method Summary collapse

Class Method Details

.capabilities_from(token_context) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/has_helpers/service_trust/authorization.rb', line 25

def capabilities_from(token_context)
  return token_context[:capabilities] if token_context.is_a?(Hash) && token_context[:capabilities]
  return token_context["capabilities"] if token_context.is_a?(Hash) && token_context["capabilities"]
  return token_context["_capabilities"] if token_context.is_a?(Hash) && token_context["_capabilities"]

  []
end

.require!(token_context, capability:) ⇒ Object

Raises:

  • (ArgumentError)


8
9
10
11
12
13
14
15
16
# File 'lib/has_helpers/service_trust/authorization.rb', line 8

def require!(token_context, capability:)
  return if capability == :none
  raise ArgumentError, "capability required" if capability.blank?

  caps = capabilities_from(token_context)
  return if Capability.includes?(caps, capability)

  raise InsufficientCapabilityError, "missing capability: #{capability}"
end

.require_any!(token_context, capabilities:) ⇒ Object



18
19
20
21
22
23
# File 'lib/has_helpers/service_trust/authorization.rb', line 18

def require_any!(token_context, capabilities:)
  caps = capabilities_from(token_context)
  return if Capability.any_match?(caps, capabilities)

  raise InsufficientCapabilityError, "missing any capability of: #{Array(capabilities).join(', ')}"
end