From 4d0f6c5dbe63a2fb29b70f9679dae665d72cbdce Mon Sep 17 00:00:00 2001
From: Thijs Kinkhorst <thijs@kinkhorst.com>
Date: Mon, 19 Nov 2018 15:02:21 +0000
Subject: [PATCH] Always add core templates to twig search paths.

This is because some templates, e.g. errror, expect to be able to
include them. This fixes e.g. the No State error page.
---
 lib/SimpleSAML/XHTML/Template.php | 4 +++-
 templates/error.twig              | 4 +++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/lib/SimpleSAML/XHTML/Template.php b/lib/SimpleSAML/XHTML/Template.php
index 3ae190b88..39bce25eb 100644
--- a/lib/SimpleSAML/XHTML/Template.php
+++ b/lib/SimpleSAML/XHTML/Template.php
@@ -167,7 +167,7 @@ class Template
         $this->twig_template = ($namespace !== null) ? '@'.$namespace.'/'.$filename : $filename;
         $loader = new TemplateLoader();
         $templateDirs = $this->findThemeTemplateDirs();
-        if ($this->module) {
+        if ($this->module && $this->module != 'core') {
             $templateDirs[] = [$this->module => TemplateLoader::getModuleTemplateDir($this->module)];
         }
         if ($this->theme['module']) {
@@ -180,6 +180,8 @@ class Template
             }
         }
 
+        $templateDirs[] = ['core' => TemplateLoader::getModuleTemplateDir('core')];
+
         // default, themeless templates are checked last
         $templateDirs[] = [
             \Twig_Loader_Filesystem::MAIN_NAMESPACE => $this->configuration->resolvePath('templates')
diff --git a/templates/error.twig b/templates/error.twig
index 311aa2925..23e06c570 100644
--- a/templates/error.twig
+++ b/templates/error.twig
@@ -10,7 +10,9 @@
        e.g. "core:no_state.tpl.php". The format is "<module>:<template name>"
     #}
     {% if includeTemplate -%}
-        {% include(includeTemplate) %}
+        {% set parts = includeTemplate|replace({'.tpl.php':'.twig'})|split(':') %}
+        {% set namespacedTemplate = "@" ~ parts[0] ~ "/" ~ parts[1] %}
+        {% include(namespacedTemplate) %}
     {%- endif %}
 
     <div class="message-box">
-- 
GitLab