diff --git a/lib/IdPAccountManager/SAMLMetadata.pm b/lib/IdPAccountManager/SAMLMetadata.pm index 31ac8be0fadd049383486564c5c13ba20f92f9d9..532ea49317c96a3d54c4d45cb4142185c0854037 100644 --- a/lib/IdPAccountManager/SAMLMetadata.pm +++ b/lib/IdPAccountManager/SAMLMetadata.pm @@ -140,15 +140,17 @@ sub parse { } } } elsif ($child->localname() eq 'ContactPerson') { - my %contact_details; - $contact_details{type} = $child->getAttribute('contactType'); - if (defined $contact_details{type}) { + my $details; + $details->{type} = $child->getAttribute('contactType'); + if (defined $details->{type}) { foreach my $contact_child ($child->childNodes()) { next unless $contact_child->nodeType() == XML_ELEMENT_NODE; - $contact_details{ $contact_child->localname() } = - $contact_child->textContent(); + my $key = $contact_child->localname(); + my $value = $contact_child->textContent(); + $value =~ s/^mailto:// if $key eq 'EmailAddress'; + $details->{$key} = $value; } - push @{ $data->{contacts} }, \%contact_details; + push @{ $data->{contacts} }, $details; } } elsif ($child->localname() eq 'Organization') { foreach my $name ($child->getChildrenByLocalName('OrganizationName')) {