diff --git a/auth/cas/auth.php b/auth/cas/auth.php index 94ea981fffe..ce843775e01 100644 --- a/auth/cas/auth.php +++ b/auth/cas/auth.php @@ -268,6 +268,9 @@ class auth_plugin_cas extends auth_plugin_ldap { if (!isset($config->certificate_path)) { $config->certificate_path = ''; } + if (!isset($config->logout_return_url)) { + $config->logout_return_url = ''; + } // LDAP settings if (!isset($config->host_url)) { @@ -331,6 +334,7 @@ class auth_plugin_cas extends auth_plugin_ldap { set_config('multiauth', $config->multiauth, $this->pluginconfig); set_config('certificate_check', $config->certificate_check, $this->pluginconfig); set_config('certificate_path', $config->certificate_path, $this->pluginconfig); + set_config('logout_return_url', $config->logout_return_url, $this->pluginconfig); // save LDAP settings set_config('host_url', trim($config->host_url), $this->pluginconfig); @@ -439,4 +443,19 @@ class auth_plugin_cas extends auth_plugin_ldap { } parent::sync_users($do_updates); } + + /** + * Hook for logout page + */ + function logoutpage_hook() { + global $USER, $redirect; + // Only do this if the user is actually logged in via CAS + if ($USER->auth === $this->authtype) { + // Check if there is an alternative logout return url defined + if (isset($this->config->logout_return_url) && !empty($this->config->logout_return_url)) { + // Set redirect to alternative return url + $redirect = $this->config->logout_return_url; + } + } + } } diff --git a/auth/cas/config.html b/auth/cas/config.html index 28557dda239..031df6e61f3 100644 --- a/auth/cas/config.html +++ b/auth/cas/config.html @@ -33,6 +33,9 @@ if (!isset ($config->certificate_check)) { if (!isset ($config->certificate_path)) { $config->certificate_path = ''; } +if (!isset($config->logout_return_url)) { + $config->logout_return_url = ''; +} // set to defaults if undefined (LDAP) if (!isset($config->host_url)) { @@ -201,6 +204,16 @@ $yesno = array( get_string('no'), get_string('yes') ); + + : + + + error_text($err['logout_return_url']); } ?> + + + + +

diff --git a/auth/cas/lang/en/auth_cas.php b/auth/cas/lang/en/auth_cas.php index 15cb616d83e..70a82a077ad 100644 --- a/auth/cas/lang/en/auth_cas.php +++ b/auth/cas/lang/en/auth_cas.php @@ -47,6 +47,8 @@ $string['auth_cas_invalidcaslogin'] = 'Sorry, your login has failed - you could $string['auth_cas_language'] = 'Select language for authentication pages'; $string['auth_cas_language_key'] = 'Language'; $string['auth_cas_logincas'] = 'Secure connection access'; +$string['auth_cas_logout_return_url_key'] = 'Alternative logout return URL'; +$string['auth_cas_logout_return_url'] = 'Provide the URL that CAS users shall be redirected to after logging out.
If left empty, users will be redirected to the location that moodle will redirect users to'; $string['auth_cas_logoutcas'] = 'Select \'yes\' if you want to logout from CAS when you disconnect from Moodle'; $string['auth_cas_logoutcas_key'] = 'CAS logout option'; $string['auth_cas_multiauth'] = 'Select \'yes\' if you want to have multi-authentication (CAS + other authentication)';