class SAML2::Conditions
def self.from_xml(node)
def self.from_xml(node) return nil unless node result = new result.from_xml(node) result end
def build(builder)
def build(builder) builder['saml'].Conditions do |conditions| conditions.parent['NotBefore'] = not_before.iso8601 if not_before conditions.parent['NotOnOrAfter'] = not_on_or_after.iso8601 if not_on_or_after each do |condition| condition.build(conditions) end end end
def from_xml(node)
def from_xml(node) @xml = node @not_before = Time.parse(node['NotBefore']) if node['NotBefore'] @not_on_or_after = Time.parse(node['NotOnOrAfter']) if node['NotOnOrAfter'] replace(node.element_children.map do |restriction| klass = if self.class.const_defined?(restriction.name, false) self.class.const_get(restriction.name, false) else Condition end klass.from_xml(restriction) end) end
def valid?(now: Time.now.utc, **options)
def valid?(now: Time.now.utc, **options) validate(verification_time: now, **options).empty? end
def validate(verification_time: Time.now.utc, **options)
-
(Array<>)-
Parameters:
-
options() -- -
verification_time() -- optional [Time]
def validate(verification_time: Time.now.utc, **options) options[:verification_time] ||= verification_time errors = [] if not_before && verification_time < not_before errors << "not_before #{not_before} is later than now (#{verification_time})" end if not_on_or_after && verification_time >= not_on_or_after errors << "not_on_or_after #{not_on_or_after} is earlier than now (#{verification_time})" end each do |condition| errors.concat(condition.validate(**options)) end errors end