diff --git a/app/assets/images/eid-sk.svg b/app/assets/images/eid-sk.svg index 842451ed..3d4bdd54 100644 --- a/app/assets/images/eid-sk.svg +++ b/app/assets/images/eid-sk.svg @@ -16,5 +16,5 @@ - Prihlásiť cez EID + Cez slovensko.sk \ No newline at end of file diff --git a/app/models/eid_token.rb b/app/models/eid_token.rb index af15ef7e..4840c226 100644 --- a/app/models/eid_token.rb +++ b/app/models/eid_token.rb @@ -14,7 +14,7 @@ def decoded_token end def sub - decoded_token&.first&.fetch('actor')&.fetch('sub') + decoded_token&.first&.fetch('sub') end def name diff --git a/app/models/upvs/assertion.rb b/app/models/upvs/assertion.rb new file mode 100644 index 00000000..35da8c1c --- /dev/null +++ b/app/models/upvs/assertion.rb @@ -0,0 +1,47 @@ +module Upvs + class Assertion + include ActiveModel::Model + attr_accessor(:raw, :subject_name, :subject_id, :subject_ico) + + def self.new_from_xml(raw:) + return unless raw + + h = Hash.from_xml(raw) + new( + raw:, + subject_name: h.dig('Assertion', 'AttributeStatement', 'Attribute').detect{|e| e['Name'] == 'Subject.FormattedName' }.dig('AttributeValue'), + subject_id: h.dig('Assertion', 'AttributeStatement', 'Attribute').detect{|e| e['Name'] == 'SubjectID' }.dig('AttributeValue'), + subject_ico: h.dig('Assertion', 'AttributeStatement', 'Attribute').detect{|e| e['Name'] == 'Subject.ICO' }.dig('AttributeValue'), + ) + end + + def self.assertion(eid_token, client: Faraday, url: "#{ENV.fetch('AUTH_EID_BASE_URL')}/api/upvs/assertion?token=#{eid_token&.api_token}") + new_from_xml(raw: get_from_sk_api(client, url, eid_token)) + end + + def self.get_from_sk_api(client, url, eid_token) + headers = { + "Accept": "application/samlassertion+xml", + "AUTHORIZATION": "Bearer #{eid_token&.api_token}", + } + + response = client.get(url, {}, headers) + error = begin + JSON.parse(response.body) + rescue StandardError + nil + end + if error && error['message'] + return nil + end + response.body + rescue StandardError => _e + raise + nil + end + + + class SkApiError < StandardError + end + end +end diff --git a/app/views/components/_header.html.erb b/app/views/components/_header.html.erb index 8ca223f2..8229a4c9 100644 --- a/app/views/components/_header.html.erb +++ b/app/views/components/_header.html.erb @@ -27,9 +27,6 @@ <%= current_user.email %> - <% if eid_token&.valid? %> - EID - <% end %>