From c709b384cdb1d720631453589ef918bd3338c463 Mon Sep 17 00:00:00 2001
From: Tim van Dijen <tvdijen@gmail.com>
Date: Sat, 11 Aug 2018 13:00:18 +0200
Subject: [PATCH] Further twigify adfs

---
 modules/adfs/lib/IdP/ADFS.php             | 25 +++++++----------------
 modules/adfs/templates/postResponse.twig  | 16 +++++++++++++++
 modules/adfs/www/assets/js/postReponse.js |  3 +++
 3 files changed, 26 insertions(+), 18 deletions(-)
 create mode 100644 modules/adfs/templates/postResponse.twig
 create mode 100644 modules/adfs/www/assets/js/postReponse.js

diff --git a/modules/adfs/lib/IdP/ADFS.php b/modules/adfs/lib/IdP/ADFS.php
index 8187aff89..5ed65c328 100644
--- a/modules/adfs/lib/IdP/ADFS.php
+++ b/modules/adfs/lib/IdP/ADFS.php
@@ -131,24 +131,13 @@ MSG;
 
     private static function postResponse($url, $wresult, $wctx)
     {
-        $wresult = htmlspecialchars($wresult);
-        $wctx = htmlspecialchars($wctx);
-
-        $post = <<<MSG
-    <body onload="document.forms[0].submit()">
-        <form method="post" action="$url">
-            <input type="hidden" name="wa" value="wsignin1.0">
-            <input type="hidden" name="wresult" value="$wresult">
-            <input type="hidden" name="wctx" value="$wctx">
-            <noscript>
-                <input type="submit" value="Continue">
-            </noscript>
-        </form>
-    </body>
-MSG;
-
-        echo $post;
-        exit;
+        $config = \SimpleSAML\Configuration::getInstance();
+        $t = new \SimpleSAML\XHTML\Template($config, 'adfs:postResponse.twig');
+        $t->data['baseurlpath'] = \SimpleSAML\Module::getModuleUrl('adfs');
+        $t->data['url'] = $url;
+        $t->data['wresult'] = $wresult;
+        $t->data['wctx'] = $wctx;
+        $t->show();
     }
 
     public static function sendResponse(array $state)
diff --git a/modules/adfs/templates/postResponse.twig b/modules/adfs/templates/postResponse.twig
new file mode 100644
index 000000000..857aa8d7a
--- /dev/null
+++ b/modules/adfs/templates/postResponse.twig
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <script src="{{ baseurlpath }}/assets/js/postResponse.js"></script>
+    </head>
+    <body>
+        <form method="post" action="{{ url }}">
+            <input type="hidden" name="wa" value="wsignin1.0">
+            <input type="hidden" name="wresult" value="{{ wresult|escape('html') }}">
+            <input type="hidden" name="wctx" value="{{ wctx|escape('html') }}">
+            <noscript>
+                <input type="submit" value="Continue">
+            </noscript>
+        </form>
+    </body>
+</html>
diff --git a/modules/adfs/www/assets/js/postReponse.js b/modules/adfs/www/assets/js/postReponse.js
new file mode 100644
index 000000000..a813b92cb
--- /dev/null
+++ b/modules/adfs/www/assets/js/postReponse.js
@@ -0,0 +1,3 @@
+document.addEventListener('DOMContentLoaded', function () {
+    document.forms[0].submit();
+});
-- 
GitLab