From d3012cbde2c169183aafe8e7d2dbf577a38a8d08 Mon Sep 17 00:00:00 2001 From: Olav Morken <olav.morken@uninett.no> Date: Wed, 22 Apr 2009 07:02:44 +0000 Subject: [PATCH] Change admin-authentication to use the 'admin' authentication source, if present. git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@1470 44740490-163a-0410-bde0-09ae8108e29a --- config-templates/authsources.php | 11 +++++++++++ lib/SimpleSAML/Utilities.php | 19 ++++++++++++++----- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/config-templates/authsources.php b/config-templates/authsources.php index 1ecc707eb..1370ffc36 100644 --- a/config-templates/authsources.php +++ b/config-templates/authsources.php @@ -2,6 +2,17 @@ $config = array( + /* + * This is a authentication source which handles admin authentication. + */ + 'admin' => array( + /* + * The default is to use core:AdminPassword, but it can be replaced with + * any authentication source. + */ + 'core:AdminPassword', + ), + 'example-sql' => array( 'sqlauth:SQL', 'dsn' => 'pgsql:host=sql.example.org;port=5432;dbname=simplesaml', diff --git a/lib/SimpleSAML/Utilities.php b/lib/SimpleSAML/Utilities.php index 19a66e9ab..d28987313 100644 --- a/lib/SimpleSAML/Utilities.php +++ b/lib/SimpleSAML/Utilities.php @@ -1688,7 +1688,7 @@ class SimpleSAML_Utilities { $session = SimpleSAML_Session::getInstance(); - return $session->isValid('login-admin'); + return $session->isValid('admin') || $session->isValid('login-admin'); } @@ -1721,11 +1721,20 @@ class SimpleSAML_Utilities { return; } + $returnTo = SimpleSAML_Utilities::selfURL(); + /* Not authenticated as admin user. Start authentication. */ - $config = SimpleSAML_Configuration::getInstance(); - SimpleSAML_Utilities::redirect('/' . $config->getBaseURL() . 'auth/login-admin.php', - array('RelayState' => SimpleSAML_Utilities::selfURL()) - ); + + if (SimpleSAML_Auth_Source::getById('admin') !== NULL) { + SimpleSAML_Auth_Default::initLogin('admin', $returnTo); + } else { + /* For backwards-compatibility. */ + + $config = SimpleSAML_Configuration::getInstance(); + SimpleSAML_Utilities::redirect('/' . $config->getBaseURL() . 'auth/login-admin.php', + array('RelayState' => $returnTo) + ); + } } } -- GitLab