From 0164d1f61a9e85cfafba69ed63b5087af89642e8 Mon Sep 17 00:00:00 2001
From: Olav Morken <olav.morken@uninett.no>
Date: Fri, 22 Jan 2010 09:13:52 +0000
Subject: [PATCH] Move IdP enabled check into SimpleSAML_IdP.

git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@2125 44740490-163a-0410-bde0-09ae8108e29a
---
 lib/SimpleSAML/IdP.php        | 8 ++++++++
 www/saml2/idp/SSOService.php  | 5 -----
 www/shib13/idp/SSOService.php | 5 -----
 3 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/lib/SimpleSAML/IdP.php b/lib/SimpleSAML/IdP.php
index 1be653d63..1800365cb 100644
--- a/lib/SimpleSAML/IdP.php
+++ b/lib/SimpleSAML/IdP.php
@@ -45,9 +45,17 @@ class SimpleSAML_IdP {
 		$this->id = $id;
 
 		$metadata = SimpleSAML_Metadata_MetaDataStorageHandler::getMetadataHandler();
+		$globalConfig = SimpleSAML_Configuration::getInstance();
+
 		if (substr($id, 0, 6) === 'saml2:') {
+			if (!$globalConfig->getBoolean('enable.saml20-idp', FALSE)) {
+				throw new SimpleSAML_Error_Exception('enable.saml20-idp disabled in config.php.');
+			}
 			$this->config = $metadata->getMetaDataConfig(substr($id, 6), 'saml20-idp-hosted');
 		} elseif (substr($id, 0, 6) === 'saml1:') {
+			if (!$globalConfig->getBoolean('enable.shib13-idp', FALSE)) {
+				throw new SimpleSAML_Error_Exception('enable.shib13-idp disabled in config.php.');
+			}
 			$this->config = $metadata->getMetaDataConfig(substr($id, 6), 'shib13-idp-hosted');
 		} else {
 			assert(FALSE);
diff --git a/www/saml2/idp/SSOService.php b/www/saml2/idp/SSOService.php
index 6bdbcecb6..3d8a6969a 100644
--- a/www/saml2/idp/SSOService.php
+++ b/www/saml2/idp/SSOService.php
@@ -13,11 +13,6 @@ require_once('../../../www/_include.php');
 
 SimpleSAML_Logger::info('SAML2.0 - IdP.SSOService: Accessing SAML 2.0 IdP endpoint SSOService');
 
-$config = SimpleSAML_Configuration::getInstance();
-if (!$config->getBoolean('enable.saml20-idp', FALSE)) {
-	throw new SimpleSAML_Error_Error('NOACCESS');
-}
-
 $metadata = SimpleSAML_Metadata_MetaDataStorageHandler::getMetadataHandler();
 $idpEntityId = $metadata->getMetaDataCurrentEntityID('saml20-idp-hosted');
 $idp = SimpleSAML_IdP::getById('saml2:' . $idpEntityId);
diff --git a/www/shib13/idp/SSOService.php b/www/shib13/idp/SSOService.php
index 5bc310a23..fc3ec6b8c 100644
--- a/www/shib13/idp/SSOService.php
+++ b/www/shib13/idp/SSOService.php
@@ -13,11 +13,6 @@ require_once('../../../www/_include.php');
 
 SimpleSAML_Logger::info('Shib1.3 - IdP.SSOService: Accessing Shibboleth 1.3 IdP endpoint SSOService');
 
-$config = SimpleSAML_Configuration::getInstance();
-if (!$config->getBoolean('enable.shib13-idp', FALSE)) {
-	throw new SimpleSAML_Error_Error('NOACCESS');
-}
-
 $metadata = SimpleSAML_Metadata_MetaDataStorageHandler::getMetadataHandler();
 $idpEntityId = $metadata->getMetaDataCurrentEntityID('shib13-idp-hosted');
 $idp = SimpleSAML_IdP::getById('saml1:' . $idpEntityId);
-- 
GitLab