diff --git a/modules/multiauth/templates/selectsource.twig b/modules/multiauth/templates/selectsource.twig new file mode 100644 index 0000000000000000000000000000000000000000..81fc1a6a997c23fb50a0131db238087bba0d8372 --- /dev/null +++ b/modules/multiauth/templates/selectsource.twig @@ -0,0 +1,24 @@ +{% set pagetitle = '{multiauth:multiauth:select_source_header}'|trans %} +{% extends "base.twig" %} + +{% block content %} + <h2>{{ '{multiauth:multiauth:select_source_header}'| trans }}</h2> + <p>{{ '{multiauth:multiauth:select_source_text}'| trans }}</p> + + <form action="{{ selfUrl|escape('html') }}" method="get"> + <input type="hidden" name="AuthState" value="{{ authstate|escape('html') }} " /> + <ul> + {% for key, source in sources %} + {% set name = ('src-' ~ source.source64) %} + {% set button = ('button-' ~ source.source) %} + <li class="{{ source.css_class|escape('html') }} authsource"> + {% if source.source == preferred %} + <input type="submit" name="{{ name|escape('html') }}" autofocus="autofocus" id="{{ button|escape('html') }}" value="{{ source.text|escape('html') }}" /> + {% else %} + <input type="submit" name="{{ name|escape('html') }}" id="{{ button|escape('html') }}" value="{{ source.text|escape('html') }}" /> + {% endif %} + </li> + {% endfor %} + </ul> + </form> +{% endblock %} diff --git a/modules/multiauth/www/selectsource.php b/modules/multiauth/www/selectsource.php index db09029f89a18ecc50d38de81213afac86a67a0d..1736263be8a2f261cde1948cc8b0e71d397d7c3b 100644 --- a/modules/multiauth/www/selectsource.php +++ b/modules/multiauth/www/selectsource.php @@ -12,49 +12,59 @@ // Retrieve the authentication state if (!array_key_exists('AuthState', $_REQUEST)) { - throw new SimpleSAML_Error_BadRequest('Missing AuthState parameter.'); + throw new SimpleSAML_Error_BadRequest('Missing AuthState parameter.'); } $authStateId = $_REQUEST['AuthState']; $state = SimpleSAML_Auth_State::loadState($authStateId, sspmod_multiauth_Auth_Source_MultiAuth::STAGEID); if (array_key_exists("SimpleSAML_Auth_Source.id", $state)) { - $authId = $state["SimpleSAML_Auth_Source.id"]; - $as = SimpleSAML_Auth_Source::getById($authId); + $authId = $state["SimpleSAML_Auth_Source.id"]; + $as = SimpleSAML_Auth_Source::getById($authId); } else { - $as = NULL; + $as = null; } -$source = NULL; +$source = null; if (array_key_exists('source', $_REQUEST)) { - $source = $_REQUEST['source']; + $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]); - } - } + 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); - } - sspmod_multiauth_Auth_Source_MultiAuth::delegateAuthentication($source, $state); +if ($source !== null) { + if ($as !== null) { + $as->setPreviousSource($source); + } + sspmod_multiauth_Auth_Source_MultiAuth::delegateAuthentication($source, $state); } if (array_key_exists('multiauth:preselect', $state)) { - $source = $state['multiauth:preselect']; - sspmod_multiauth_Auth_Source_MultiAuth::delegateAuthentication($source, $state); + $source = $state['multiauth:preselect']; + sspmod_multiauth_Auth_Source_MultiAuth::delegateAuthentication($source, $state); } $globalConfig = SimpleSAML_Configuration::getInstance(); $t = new SimpleSAML_XHTML_Template($globalConfig, 'multiauth:selectsource.php'); +$language = $t->getLanguage(); + +$sources = $state[sspmod_multiauth_Auth_Source_MultiAuth::SOURCESID]; +foreach ($sources as $key => $source){ + $sources[$key]['source64'] = base64_encode($sources[$key]['source']); + $sources[$key]['text'] = $sources[$key]['text'][$language]; +} + $t->data['authstate'] = $authStateId; -$t->data['sources'] = $state[sspmod_multiauth_Auth_Source_MultiAuth::SOURCESID]; -if ($as !== NULL) { - $t->data['preferred'] = $as->getPreviousSource(); +$t->data['sources'] = $sources; +$t->data['selfUrl'] = $_SERVER['PHP_SELF']; + +if ($as !== null) { + $t->data['preferred'] = $as->getPreviousSource(); } else { - $t->data['preferred'] = NULL; + $t->data['preferred'] = null; } $t->show(); exit();