summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlav Morken <olav.morken@uninett.no>2010-08-12 09:00:57 +0000
committerOlav Morken <olav.morken@uninett.no>2010-08-12 09:00:57 +0000
commitd50fcc9c00f86d2c3a5d5ad51d263e409e99cc0c (patch)
tree0fd59e4dd3228f4cb6acdda767eb940800ff0763
parentd4fe2dbf51ac8248b9055cb86c94154e2cd387e8 (diff)
downloadsimplesamlphp-d50fcc9c00f86d2c3a5d5ad51d263e409e99cc0c.zip
simplesamlphp-d50fcc9c00f86d2c3a5d5ad51d263e409e99cc0c.tar.gz
simplesamlphp-d50fcc9c00f86d2c3a5d5ad51d263e409e99cc0c.tar.bz2
New error page for metadata not found.
git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@2516 44740490-163a-0410-bde0-09ae8108e29a
-rw-r--r--lib/SimpleSAML/Error/MetadataNotFound.php50
-rw-r--r--lib/SimpleSAML/Metadata/MetaDataStorageHandler.php2
-rw-r--r--modules/core/dictionaries/no_metadata.definition.json17
-rw-r--r--modules/core/dictionaries/no_metadata.translation.json22
-rw-r--r--modules/core/templates/no_metadata.tpl.php16
5 files changed, 106 insertions, 1 deletions
diff --git a/lib/SimpleSAML/Error/MetadataNotFound.php b/lib/SimpleSAML/Error/MetadataNotFound.php
new file mode 100644
index 0000000..d079331
--- /dev/null
+++ b/lib/SimpleSAML/Error/MetadataNotFound.php
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * Error for missing metadata.
+ *
+ * @package simpleSAMLphp
+ * @version $Id$
+ */
+class SimpleSAML_Error_MetadataNotFound extends SimpleSAML_Error_Error {
+
+ /**
+ * The entityID we were unable to locate.
+ *
+ * @var string
+ */
+ private $entityId;
+
+
+ /**
+ * Create the error
+ *
+ * @param string $entityId The entityID we were unable to locate.
+ */
+ public function __construct($entityId) {
+ assert('is_string($entityId)');
+
+ parent::__construct('Unable to locate metadata for ' . var_export($entityId, TRUE) . '.');
+ $this->entityId = $entityId;
+ }
+
+
+ /**
+ * Show the error to the user.
+ *
+ * This function does not return.
+ */
+ public function show() {
+
+ header('HTTP/1.0 500 Internal Server Error');
+
+ $this->logError();
+
+ $globalConfig = SimpleSAML_Configuration::getInstance();
+ $t = new SimpleSAML_XHTML_Template($globalConfig, 'core:no_metadata.tpl.php');
+ $t->data['entityId'] = $this->entityId;
+ $t->show();
+ exit();
+ }
+
+}
diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php
index 91c999c..2e4352e 100644
--- a/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php
+++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php
@@ -286,7 +286,7 @@ class SimpleSAML_Metadata_MetaDataStorageHandler {
}
}
- throw new Exception('Unable to locate metadata for \'' . $index . '\' in set \'' . $set . '\'.');
+ throw new SimpleSAML_Error_MetadataNotFound($index);
}
diff --git a/modules/core/dictionaries/no_metadata.definition.json b/modules/core/dictionaries/no_metadata.definition.json
new file mode 100644
index 0000000..4d551aa
--- /dev/null
+++ b/modules/core/dictionaries/no_metadata.definition.json
@@ -0,0 +1,17 @@
+{
+ "header": {
+ "en": "Metadata not found"
+ },
+ "not_found_for": {
+ "en": "We were unable to locate the metadata for the entity:"
+ },
+ "config_problem": {
+ "en": "This is most likely a configuration problem on either the service provider or identity provider."
+ },
+ "suggestion_user_link": {
+ "en": "If you are an user who received this error after following a link on a site, you should report this error to the owner of that site."
+ },
+ "suggestion_developer": {
+ "en": "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider."
+ }
+}
diff --git a/modules/core/dictionaries/no_metadata.translation.json b/modules/core/dictionaries/no_metadata.translation.json
new file mode 100644
index 0000000..568cea7
--- /dev/null
+++ b/modules/core/dictionaries/no_metadata.translation.json
@@ -0,0 +1,22 @@
+{
+ "header": {
+ "no": "Kunne ikke finne metadata",
+ "nn": "Kunne ikkje finne metadata"
+ },
+ "not_found_for": {
+ "no": "Vi fant ikke metadataene for:",
+ "nn": "Vi fann ikkje metadataene for:"
+ },
+ "config_problem": {
+ "no": "Dette er sannsynligvis et konfigurasjonsproblem hos enten tjenesteleverand\u00f8ren eller identitetsleverand\u00f8ren.",
+ "nn": "Dette er sannsynlegvis eit problem med oppsettet hj\u00e5 anten tenesteleverand\u00f8ren eller identitetsleverand\u00f8ren."
+ },
+ "suggestion_user_link": {
+ "no": "Hvis du er en bruker som fikk denne feilen etter at du fulgte en link p\u00e5 en nettside, s\u00e5 b\u00f8r du rapportere denne feilen til eieren av den nettsiden.",
+ "nn": "Om du er ein brukar som mottok denne feilen etter at du f\u00f8lgde ei lenke p\u00e5 ei nettside, s\u00e5 b\u00f8r du melde denne feilen til eigaren av den nettsida."
+ },
+ "suggestion_developer": {
+ "no": "Hvis du er en utvikler som setter opp en \"single sign-on\" l\u00f8sning, s\u00e5 har du et problem med metadataoppsettet. Kontroller at metadata er riktig konfigurert hos b\u00e5de identitetsleverand\u00f8ren og tjenesteleverand\u00f8ren.",
+ "nn": "Om du er ein utviklar som set opp ei \"single sign-on\" l\u00f8ysing, s\u00e5 har du eit problem med metadataoppsettet. Kontroller at metadata er rett satt opp hj\u00e5 b\u00e5de identitetsleverand\u00f8ren og tenesteleverand\u00f8ren."
+ }
+}
diff --git a/modules/core/templates/no_metadata.tpl.php b/modules/core/templates/no_metadata.tpl.php
new file mode 100644
index 0000000..09cdbbc
--- /dev/null
+++ b/modules/core/templates/no_metadata.tpl.php
@@ -0,0 +1,16 @@
+<?php
+
+$this->data['header'] = $this->t('{core:no_metadata:header}');
+$this->includeAtTemplateBase('includes/header.php');
+
+echo('<h2>' . $this->t('{core:no_metadata:header}') . '</h2>');
+echo('<p>' . $this->t('{core:no_metadata:not_found_for}') . '</p>');
+echo('<code style="margin-left: 3em;">' . htmlspecialchars($this->data['entityId']) . '</code>');
+echo('<p>' . $this->t('{core:no_metadata:config_problem}') . '</p>');
+
+echo('<ul>');
+echo('<li>' . $this->t('{core:no_metadata:suggestion_user_link}') . '</li>');
+echo('<li>' . $this->t('{core:no_metadata:suggestion_developer}') . '</li>');
+echo('</ul>');
+
+$this->includeAtTemplateBase('includes/footer.php');