Module: OpenIDConnect::RequestObject::Claimable

Included in:
IdToken, UserInfo
Defined in:
lib/openid_connect/request_object/claimable.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



4
5
6
7
8
# File 'lib/openid_connect/request_object/claimable.rb', line 4

def self.included(klass)
  klass.send :attr_optional, :claims
  klass.send :alias_method_chain, :initialize, :claims
  klass.send :alias_method_chain, :as_json, :keep_blank
end

Instance Method Details

#accessible?(claim) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/openid_connect/request_object/claimable.rb', line 51

def accessible?(claim)
  claims.try(:include?, claim)
end

#as_json_with_keep_blank(options = {}) ⇒ Object



32
33
34
35
36
37
38
39
# File 'lib/openid_connect/request_object/claimable.rb', line 32

def as_json_with_keep_blank(options = {})
  keys = claims.try(:keys)
  hash = as_json_without_keep_blank options
  Array(keys).each do |key|
    hash[:claims][key] ||= nil
  end
  hash
end

#initialize_with_claims(attributes = {}) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/openid_connect/request_object/claimable.rb', line 10

def initialize_with_claims(attributes = {})
  initialize_without_claims attributes
  if claims.present?
    _claims_ = {}
    claims.each do |key, value|
      _claims_[key] = case value
      when :optional, :voluntary
        {
          essential: false
        }
      when :required, :essential
        {
          essential: true
        }
      else
        value
      end
    end
    self.claims = _claims_.with_indifferent_access
  end
end

#optional?(claim) ⇒ Boolean Also known as: voluntary?

Returns:

  • (Boolean)


46
47
48
# File 'lib/openid_connect/request_object/claimable.rb', line 46

def optional?(claim)
  accessible?(claim) && !required?(claim)
end

#required?(claim) ⇒ Boolean Also known as: essential?

Returns:

  • (Boolean)


41
42
43
# File 'lib/openid_connect/request_object/claimable.rb', line 41

def required?(claim)
  accessible?(claim) && claims[claim].is_a?(Hash) && claims[claim][:essential]
end