From 5e4ddbb128e455f9f92f753157482193824ecfbf Mon Sep 17 00:00:00 2001
From: Tim van Dijen <tim.dijen@minbzk.nl>
Date: Sat, 10 Aug 2019 16:09:28 +0200
Subject: [PATCH] Twigify exampleauth (#1183)

---
 .../exampleauth/templates/authenticate.twig   | 29 ++++++++++++
 modules/exampleauth/www/authpage.php          | 47 +++++--------------
 2 files changed, 40 insertions(+), 36 deletions(-)
 create mode 100644 modules/exampleauth/templates/authenticate.twig

diff --git a/modules/exampleauth/templates/authenticate.twig b/modules/exampleauth/templates/authenticate.twig
new file mode 100644
index 000000000..4a68e334c
--- /dev/null
+++ b/modules/exampleauth/templates/authenticate.twig
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+    <title>exampleauth login page</title>
+  </head>
+  <body>
+    <h1>exampleauth login page</h1>
+    <p>
+      In this example you can log in with two accounts: <code>student</code> and <code>admin</code>.
+      In both cases, the password is the same as the username.
+    </p>
+    <form method="post" action="?">
+      <p>
+        Username:
+        <input type="text" name="username">
+      </p>
+      <p>
+        Password:
+        <input type="text" name="password">
+      </p>
+      <input type="hidden" name="ReturnTo" value="{{ returnTo|escape('html') }}">
+      <p><input type="submit" value="Log in"></p>
+    </form>
+{% if badUserPass == true %}
+    <p>!!! Bad username or password !!!</p>
+{% endif %}
+  </body>
+</html>
diff --git a/modules/exampleauth/www/authpage.php b/modules/exampleauth/www/authpage.php
index 7bc87a5a1..f59c707a1 100644
--- a/modules/exampleauth/www/authpage.php
+++ b/modules/exampleauth/www/authpage.php
@@ -15,7 +15,7 @@ if (!isset($_REQUEST['ReturnTo'])) {
 
 $returnTo = \SimpleSAML\Utils\HTTP::checkURLAllowed($_REQUEST['ReturnTo']);
 
-/*
+/**
  * The following piece of code would never be found in a real authentication page. Its
  * purpose in this example is to make this example safer in the case where the
  * administrator of the IdP leaves the exampleauth-module enabled in a production
@@ -24,19 +24,18 @@ $returnTo = \SimpleSAML\Utils\HTTP::checkURLAllowed($_REQUEST['ReturnTo']);
  * What we do here is to extract the $state-array identifier, and check that it belongs to
  * the exampleauth:External process.
  */
-
 if (!preg_match('@State=(.*)@', $returnTo, $matches)) {
     die('Invalid ReturnTo URL for this example.');
 }
-\SimpleSAML\Auth\State::loadState(urldecode($matches[1]), 'exampleauth:External');
 
-/*
+/**
  * The loadState-function will not return if the second parameter does not
  * match the parameter passed to saveState, so by now we know that we arrived here
  * through the exampleauth:External authentication page.
  */
+\SimpleSAML\Auth\State::loadState(urldecode($matches[1]), 'exampleauth:External');
 
-/*
+/**
  * Our list of users.
  */
 $users = [
@@ -56,7 +55,7 @@ $users = [
     ],
 ];
 
-/*
+/**
  * Time to handle login responses.
  * Since this is a dummy example, we accept any data.
  */
@@ -85,35 +84,11 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
     }
 }
 
-/*
+/**
  * If we get this far, we need to show the login page to the user.
  */
-?><!DOCTYPE html>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>exampleauth login page</title>
-</head>
-<body>
-<h1>exampleauth login page</h1>
-<p>
-In this example you can log in with two accounts: <code>student</code> and <code>admin</code>.
-In both cases, the password is the same as the username.
-</p>
-<?php if ($badUserPass) { ?>
-<p>Bad username or password.</p>
-<?php } ?>
-<form method="post" action="?">
-<p>
-Username:
-<input type="text" name="username">
-</p>
-<p>
-Password:
-<input type="text" name="password">
-</p>
-<input type="hidden" name="ReturnTo" value="<?php echo htmlspecialchars($returnTo); ?>">
-<p><input type="submit" value="Log in"></p>
-</form>
-</body>
-</html>
+$config = \SimpleSAML\Configuration::getInstance();
+$t = new \SimpleSAML\XHTML\Template($config, 'exampleauth:authenticate.twig');
+$t->data['badUserPass'] = $badUserPass;
+$t->data['returnTo'] = $returnTo;
+$t->show();
-- 
GitLab