From 0ea81de751de7cc6074bddba35c77f816ada3ea2 Mon Sep 17 00:00:00 2001 From: "renater.salaun" <renater.salaun@047e039d-479c-447e-8a29-aa6bf4a09bab> Date: Thu, 2 Oct 2014 13:03:09 +0000 Subject: [PATCH] Bug fix to get email addresses regardless of XML namespaces git-svn-id: https://svn.geant.net/GEANT/edugain_testidp_account_manager/trunk@11 047e039d-479c-447e-8a29-aa6bf4a09bab --- lib/IdPAccountManager/SAMLMetadata.pm | 14 ++++++++------ templates/web/select_sp.tt2.html | 11 +++++------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/lib/IdPAccountManager/SAMLMetadata.pm b/lib/IdPAccountManager/SAMLMetadata.pm index 62ba33b..85e3467 100644 --- a/lib/IdPAccountManager/SAMLMetadata.pm +++ b/lib/IdPAccountManager/SAMLMetadata.pm @@ -234,10 +234,12 @@ sub _parse_saml_metadata { }elsif ($child->nodeName =~ /ContactPerson$/) { my %contact_details; $contact_details{'type'} = $child->getAttribute('contactType'); - foreach my $contact_child ($child->childNodes()) { - $contact_details{$contact_child->nodeName} = &IdPAccountManager::Tools::encode_utf8($contact_child->textContent()); - } - push @{$extracted_data->{'contacts'}}, \%contact_details; + if (defined $contact_details{'type'}) { + foreach my $contact_child ($child->childNodes()) { + $contact_details{$contact_child->localName} = &IdPAccountManager::Tools::encode_utf8($contact_child->textContent()); + } + push @{$extracted_data->{'contacts'}}, \%contact_details; + } } @@ -257,8 +259,8 @@ sub _parse_saml_metadata { my %contact_details; $contact_details{'type'} = $contact->getAttribute('contactType'); foreach my $contact_child ($EntityDescriptor->childNodes()) { - &IdPAccountManager::Tools::do_log('trace', "Contact : %s", $contact_child->nodeName); - $contact_details{$contact_child->nodeName} = &IdPAccountManager::Tools::encode_utf8($contact_child->textContent()); + &IdPAccountManager::Tools::do_log('trace', "Contact : %s", $contact_child->localName); + $contact_details{$contact_child->localName} = &IdPAccountManager::Tools::encode_utf8($contact_child->textContent()); } push @{$extracted_data->{'contacts'}}, \%contact_details; } diff --git a/templates/web/select_sp.tt2.html b/templates/web/select_sp.tt2.html index 0a3c444..40488c3 100644 --- a/templates/web/select_sp.tt2.html +++ b/templates/web/select_sp.tt2.html @@ -1,5 +1,5 @@ <h3>Send email challenge</h3> -[% IF entity.display_name && entity.display_name.en %] +[% IF sp_metadata_as_hashref.display_name && sp_metadata_as_hashref.display_name.en %] [% SET sp_display_name = sp_metadata_as_hashref.display_name.en %] [% ELSE %] [% SET sp_display_name = sp_metadata_as_hashref.entityid %] @@ -11,17 +11,16 @@ Before you can create test accounts at this Identity Provider, we need to ensure <fieldset> [% IF sp_metadata_as_hashref.contacts.defined %] <legend>Select your email address</legend> - <label for="sp_entityid">The email addresses below have been extracted from your SP SAML metadata.<br/>Please select the email address where an email challenge can be sent to validate your identity</label> + <label for="sp_entityid">The email addresses below have been extracted from your SP SAML metadata.<br/>Please select the email address where an email challenge + can be sent to validate your identity</label> - <ul> [% FOREACH contact IN sp_metadata_as_hashref.contacts -%] [% matches = contact.EmailAddress.match('^(mailto:)?(.*)$') %] [% SET email = matches.1%] -<li><input name="email" value="[% email %]" id="[% email %]" type="radio"/> -<label for="[% email %]">[% email %]</label></li> +<input name="email" value="[% email %]" id="[% email %]" type="radio"/> +<label for="[% email %]">[% email %]</label> [% END %] -</ul> [% ELSE %] No ContactPerson elements could be found in your SP SAML metadata. Therefore we are unable to provide test accounts for your SP. Please contact your local federation -- GitLab