Commit 3193b60c authored by Wolfgang Knopki's avatar Wolfgang Knopki
Browse files

Add new selectsource.php as bae for multiauth customization

parent 42ca6b79
This commit is part of merge request !17. Comments created here will be created in the context of that merge request.
Showing with 85 additions and 0 deletions
+85 -0
<?php
/**
* This page shows a list of authentication sources. When the user selects
* one of them if pass this information to the
* \SimpleSAML\Module\multiauth\Auth\Source\MultiAuth class and call the
* delegateAuthentication method on it.
*
* @author Lorenzo Gil, Yaco Sistemas S.L.
* @package SimpleSAMLphp
*/
// Retrieve the authentication state
if (!array_key_exists('AuthState', $_REQUEST)) {
throw new \SimpleSAML\Error\BadRequest('Missing AuthState parameter.');
}
$authStateId = $_REQUEST['AuthState'];
/** @var array $state */
$state = \SimpleSAML\Auth\State::loadState($authStateId, \SimpleSAML\Module\multiauth\Auth\Source\MultiAuth::STAGEID);
if (array_key_exists("\SimpleSAML\Auth\Source.id", $state)) {
$authId = $state["\SimpleSAML\Auth\Source.id"];
/** @var \SimpleSAML\Module\multiauth\Auth\Source\MultiAuth $as */
$as = \SimpleSAML\Auth\Source::getById($authId);
} else {
$as = null;
}
$source = null;
if (array_key_exists('source', $_REQUEST)) {
$source = $_REQUEST['source'];
} else {
foreach ($_REQUEST as $k => $v) {
$k = explode('-', $k, 2);
if (count($k) === 2 && $k[0] === 'src') {
$source = base64_decode($k[1]);
}
}
}
if ($source !== null) {
if ($as !== null) {
$as->setPreviousSource($source);
}
\SimpleSAML\Module\multiauth\Auth\Source\MultiAuth::delegateAuthentication($source, $state);
}
if (array_key_exists('multiauth:preselect', $state)) {
$source = $state['multiauth:preselect'];
\SimpleSAML\Module\multiauth\Auth\Source\MultiAuth::delegateAuthentication($source, $state);
}
$globalConfig = \SimpleSAML\Configuration::getInstance();
$t = new \SimpleSAML\XHTML\Template($globalConfig, 'mymodule:selectsource.tpl.php');
$defaultLanguage = $globalConfig->getString('language.default', 'en');
$language = $t->getTranslator()->getLanguage()->getLanguage();
$sources = $state[\SimpleSAML\Module\multiauth\Auth\Source\MultiAuth::SOURCESID];
foreach ($sources as $key => $source) {
$sources[$key]['source64'] = base64_encode($sources[$key]['source']);
if (isset($sources[$key]['text'][$language])) {
$sources[$key]['text'] = $sources[$key]['text'][$language];
} else {
$sources[$key]['text'] = $sources[$key]['text'][$defaultLanguage];
}
if (isset($sources[$key]['help'][$language])) {
$sources[$key]['help'] = $sources[$key]['help'][$language];
} else {
$sources[$key]['help'] = $sources[$key]['help'][$defaultLanguage];
}
}
$t->data['authstate'] = $authStateId;
$t->data['sources'] = $sources;
$t->data['selfUrl'] = $_SERVER['PHP_SELF'];
if ($as !== null) {
$t->data['preferred'] = $as->getPreviousSource();
} else {
$t->data['preferred'] = null;
}
$t->show();
exit();
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment