Commit 7efde877 authored by Wolfgang Knopki's avatar Wolfgang Knopki
Browse files

Merge branch 'prepare_prod' into 'prep'

# Conflicts:
#   mymodule/themes/fancytheme/default/includes/header.php
parents 669f57dc f98ec4ad
<?php
$this->data['header'] = $this->t('{multiauth:multiauth:select_source_header}');
$this->includeAtTemplateBase('includes/header.php');
?>
<h2><?php echo 'Benutzerkonto auswählen' ?></h2>
<p><?php echo 'Bitte wählen Sie ein Benutzerkonto aus, mit dem Sie sich authentifizieren wollen:' ?></p>
<form action="/idp/module.php/multiauth/selectsource.php" method="get">
<input type="hidden" name="AuthState" value="<?php echo htmlspecialchars($this->data['authstate']); ?>" />
<?php
echo '<div>';
foreach ($this->data['sources'] as $source) {
if ($source['source'] === $this->data['preferred']) {
$autofocus = ' autofocus="autofocus"';
} else {
$autofocus = '';
}
$name = 'src-'.base64_encode($source['source']);
echo '<input type="submit" class="'.htmlspecialchars($source['css_class']).'" name="'.htmlspecialchars($name).'"'.$autofocus.' '.
'id="button-'.htmlspecialchars($source['source']).'" '.
'value="'.htmlspecialchars($source['text']).'" ></input>';
}
echo '</div>';
?>
</form>
<?php $this->includeAtTemplateBase('includes/footer.php');
<?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();
Markdown is supported
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