From 1778b87e85c133ece2c053f5997bffd612aa60f7 Mon Sep 17 00:00:00 2001
From: Tim van Dijen <tvdijen@gmail.com>
Date: Tue, 9 Feb 2021 14:01:18 +0100
Subject: [PATCH] Add www-directory to psalm-config and fix some issues

---
 psalm.xml                                   | 1 +
 www/saml2/idp/ArtifactResolutionService.php | 8 ++++++--
 www/saml2/idp/initSLO.php                   | 2 +-
 www/saml2/idp/metadata.php                  | 8 +++++---
 4 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/psalm.xml b/psalm.xml
index e760ea7ca..6f229cf1a 100644
--- a/psalm.xml
+++ b/psalm.xml
@@ -12,6 +12,7 @@
         <directory name="metadata-templates" />
         <directory name="modules" />
         <directory name="tests" />
+        <directory name="www" />
 
         <!-- Ignore certain directories -->
         <ignoreFiles>
diff --git a/www/saml2/idp/ArtifactResolutionService.php b/www/saml2/idp/ArtifactResolutionService.php
index bcec37713..76cc4a185 100644
--- a/www/saml2/idp/ArtifactResolutionService.php
+++ b/www/saml2/idp/ArtifactResolutionService.php
@@ -15,6 +15,7 @@ use SAML2\ArtifactResponse;
 use SAML2\DOMDocumentFactory;
 use SAML2\SOAP;
 use SAML2\XML\saml\Issuer;
+use SimpleSAML\Assert\Assert;
 use SimpleSAML\Configuration;
 use SimpleSAML\Error;
 use SimpleSAML\Module;
@@ -57,7 +58,10 @@ if (!($request instanceof ArtifactResolve)) {
     throw new Exception('Message received on ArtifactResolutionService wasn\'t a ArtifactResolve request.');
 }
 
-$issuer = $request->getIssuer()->getValue();
+$issuer = $request->getIssuer();
+/** @psalm-assert \SAML2\XML\saml\Issuer $issuer */
+Assert::notNull($issuer);
+$issuer = $issuer->getValue();
 $spMetadata = $metadata->getMetaDataConfig($issuer, 'saml20-sp-remote');
 $artifact = $request->getArtifact();
 $responseData = $store->get('artifact', $artifact);
@@ -65,7 +69,7 @@ $store->delete('artifact', $artifact);
 
 if ($responseData !== null) {
     $document = DOMDocumentFactory::fromString($responseData);
-    $responseXML = $document->firstChild;
+    $responseXML = $document->documentElement;
 } else {
     $responseXML = null;
 }
diff --git a/www/saml2/idp/initSLO.php b/www/saml2/idp/initSLO.php
index e6c7f26f6..f86b49488 100644
--- a/www/saml2/idp/initSLO.php
+++ b/www/saml2/idp/initSLO.php
@@ -5,7 +5,7 @@ require_once('../../_include.php');
 use SimpleSAML\Assert\Assert;
 use SimpleSAML\Configuration;
 use SimpleSAML\Error;
-use SimpleSAML\Idp;
+use SimpleSAML\IdP;
 use SimpleSAML\Logger;
 use SimpleSAML\Metadata;
 use SimpleSAML\Module;
diff --git a/www/saml2/idp/metadata.php b/www/saml2/idp/metadata.php
index f9534c48c..7bf640076 100644
--- a/www/saml2/idp/metadata.php
+++ b/www/saml2/idp/metadata.php
@@ -201,9 +201,11 @@ try {
 
     $technicalContactEmail = $config->getString('technicalcontact_email', false);
     if ($technicalContactEmail && $technicalContactEmail !== 'na@example.org') {
-        $techcontact['emailAddress'] = $technicalContactEmail;
-        $techcontact['name'] = $config->getString('technicalcontact_name', null);
-        $techcontact['contactType'] = 'technical';
+        $techcontact = [
+            'emailAddress' => $technicalContactEmail,
+            'name' => $config->getString('technicalcontact_name', null),
+            'contactType' => 'technical',
+        ];
         $metaArray['contacts'][] = Metadata::getContact($techcontact);
     }
 
-- 
GitLab