main
1# frozen_string_literal: true
2
3module Saml
4 module Kit
5 module Builders
6 # {include:file:lib/saml/kit/builders/templates/logout_request.builder}
7 # {include:file:spec/saml/kit/builders/logout_request_spec.rb}
8 class LogoutRequest
9 include XmlTemplatable
10 attr_accessor :id, :destination, :issuer, :name_id_format, :now
11 attr_accessor :version
12 attr_reader :user, :configuration
13
14 def initialize(user, configuration: Saml::Kit.configuration)
15 @configuration = configuration
16 @user = user
17 @id = ::Xml::Kit::Id.generate
18 @issuer = configuration.entity_id
19 @name_id_format = Saml::Kit::Namespaces::PERSISTENT
20 @now = Time.now.utc
21 @version = '2.0'
22 end
23
24 def build
25 Saml::Kit::LogoutRequest.new(to_xml, configuration: configuration)
26 end
27
28 private
29
30 def logout_request_options
31 {
32 ID: id,
33 Version: version,
34 IssueInstant: now.utc.iso8601,
35 Destination: destination,
36 xmlns: Namespaces::PROTOCOL,
37 }
38 end
39
40 def name_id_options
41 {
42 Format: name_id_format,
43 xmlns: Namespaces::ASSERTION,
44 }
45 end
46 end
47 end
48 end
49end