diff --git a/lib/SimpleSAML/IdP/IFrameLogoutHandler.php b/lib/SimpleSAML/IdP/IFrameLogoutHandler.php index e1f4df2ada8ad367faa18bac493ed729a587ce68..cc9a20582f0a9ae7d6b6b74d8027f80e64a23570 100644 --- a/lib/SimpleSAML/IdP/IFrameLogoutHandler.php +++ b/lib/SimpleSAML/IdP/IFrameLogoutHandler.php @@ -20,7 +20,6 @@ class IFrameLogoutHandler implements LogoutHandlerInterface */ private $idp; - /** * LogoutIFrame constructor. * @@ -90,30 +89,14 @@ class IFrameLogoutHandler implements LogoutHandlerInterface { assert(is_string($assocId)); - $spId = sha1($assocId); + $config = \SimpleSAML\Configuration::getInstance(); $this->idp->terminateAssociation($assocId); - $header = <<<HEADER -<!DOCTYPE html> -<html> - <head> - <title>Logout response from %s</title> - <script> -HEADER; - printf($header, htmlspecialchars(var_export($assocId, true))); - if ($error) { - $errorMsg = $error->getMessage(); - echo('window.parent.logoutFailed("'.$spId.'", "'.addslashes($errorMsg).'");'); - } else { - echo('window.parent.logoutCompleted("'.$spId.'");'); - } - echo <<<FOOTER - </script> - </head> - <body> - </body> -</html> -FOOTER; + $t = new \SimpleSAML\XHTML\Template($config, 'IFrameLogoutHandler.twig'); + $t->data['assocId'] = var_export($assocId, true); + $t->data['spId'] = sha($assocId); + $t->data['errorMsg'] = $error->getMessage(); + $t->show(); exit(0); } } diff --git a/templates/IFrameLogoutHandler.twig b/templates/IFrameLogoutHandler.twig new file mode 100644 index 0000000000000000000000000000000000000000..2706636e0383e8bbb92561a1c82460c86e4c2690 --- /dev/null +++ b/templates/IFrameLogoutHandler.twig @@ -0,0 +1,16 @@ +<!DOCTYPE html> +<html> + <head> + <title>Logout response from {{ assocId|escape('html') }}</title> + <script> +{% if error %} + window.parent.logoutFailed("{{ spId }}", "{{ errorMsg|escape }}"); +{% else %} + window.parent.logoutCompleted("{{ spId }}"); +{% endif %} + </script> + </head> + <body> + </body> +</html> +