diff --git a/doc/conf/LSauthMethod/LSauthMethod_HTTP.docbook b/doc/conf/LSauthMethod/LSauthMethod_HTTP.docbook index 5fd744c3..69641f9d 100644 --- a/doc/conf/LSauthMethod/LSauthMethod_HTTP.docbook +++ b/doc/conf/LSauthMethod/LSauthMethod_HTTP.docbook @@ -93,6 +93,17 @@ + + LSAUTHMETHOD_HTTP_LOGOUT_REMOTE_URL + + URL de déconnexion externe, utile par exemple dans le contexte d'une + connexion via un service SSO. L'utilisateur sera automatiquement redirigé + vers cette URL après sa déconnexion effective au niveau d'LdapSaisie. + Si cette URL de déconnexion n'est pas défini, le bouton de + déconnexion sera masqué. + + + diff --git a/public_html/conf/LSauth/config.LSauthMethod_HTTP.php b/public_html/conf/LSauth/config.LSauthMethod_HTTP.php index 29540675..9cb3cdcd 100644 --- a/public_html/conf/LSauth/config.LSauthMethod_HTTP.php +++ b/public_html/conf/LSauth/config.LSauthMethod_HTTP.php @@ -47,3 +47,5 @@ */ //define('LSAUTHMETHOD_HTTP_METHOD', 'PHP_PASS'); +// Remote logout URL (in SSO context for instance) +//define('LSAUTHMETHOD_HTTP_LOGOUT_REMOTE_URL', 'https://idp.domain.tld/logout'); diff --git a/public_html/includes/class/class.LSauthMethod_HTTP.php b/public_html/includes/class/class.LSauthMethod_HTTP.php index 81ef86ab..6318de5a 100644 --- a/public_html/includes/class/class.LSauthMethod_HTTP.php +++ b/public_html/includes/class/class.LSauthMethod_HTTP.php @@ -31,7 +31,8 @@ class LSauthMethod_HTTP extends LSauthMethod_basic { public function __construct() { LSauth :: disableLoginForm(); - LSauth :: disableLogoutBtn(); + if (!defined('LSAUTHMETHOD_HTTP_LOGOUT_REMOTE_URL')) + LSauth :: disableLogoutBtn(); return parent :: __construct(); } @@ -102,6 +103,21 @@ class LSauthMethod_HTTP extends LSauthMethod_basic { } } + /** + * After logout + * + * This method is run by LSsession after the local session was + * was successfully destroyed. + * + * @retval void + **/ + public static function afterLogout() { + if (defined('LSAUTHMETHOD_HTTP_LOGOUT_REMOTE_URL')) { + LSsession :: redirect(LSAUTHMETHOD_HTTP_LOGOUT_REMOTE_URL); + } + return true; + } + } /*