mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-27 00:58:55 +01:00
116 lines
2.8 KiB
PHP
Executable File
116 lines
2.8 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* EGroupware - Logout
|
|
*
|
|
* @link http://www.egroupware.org
|
|
* @author Joseph Engo <jengo@phpgroupware.org>
|
|
* @license http://opensource.org/licenses/lgpl-license.php LGPL - GNU Lesser General Public License
|
|
* @package api
|
|
* @subpackage authentication
|
|
* @version $Id$
|
|
*/
|
|
|
|
use EGroupware\Api;
|
|
|
|
$GLOBALS['egw_info'] = array(
|
|
'flags' => array(
|
|
'disable_Template_class' => True,
|
|
'currentapp' => 'logout',
|
|
'noheader' => True,
|
|
'nofooter' => True,
|
|
'nonavbar' => True
|
|
)
|
|
);
|
|
include('./header.inc.php');
|
|
|
|
$GLOBALS['sessionid'] = Api\Session::get_sessionid();
|
|
$GLOBALS['kp3'] = Api\Session::get_request('kp3');
|
|
|
|
$verified = $GLOBALS['egw']->session->verify();
|
|
|
|
if(!($redirectTarget = Api\Cache::getSession('login', 'referer')))
|
|
{
|
|
$redirectTarget = $GLOBALS['egw_info']['server']['webserver_url'].'/login.php?cd=1&domain='.$GLOBALS['egw_info']['user']['domain'];
|
|
}
|
|
elseif(strpos($redirectTarget, '[?&]cd=') !== false)
|
|
{
|
|
$redirectTarget = preg_replace('/([?&])cd=[^&]+/', '$1cd=1', $redirectTarget);
|
|
}
|
|
|
|
if ($verified)
|
|
{
|
|
$auth = new Api\Auth();
|
|
|
|
// remove remember me cookie on explicit logout, unless it is a second factor
|
|
if ($GLOBALS['egw']->session->removeRememberMeTokenOnLogout())
|
|
{
|
|
Api\Session::egw_setcookie('eGW_remember','',0,'/');
|
|
}
|
|
Api\Hooks::process('logout');
|
|
$GLOBALS['egw']->session->destroy($GLOBALS['sessionid'],$GLOBALS['kp3']);
|
|
}
|
|
|
|
Api\Session::egw_setcookie('sessionid');
|
|
Api\Session::egw_setcookie('kp3');
|
|
Api\Session::egw_setcookie('domain');
|
|
|
|
// SSO Logout (does not return for SSO systems)
|
|
if (isset($auth)) $auth->logout();
|
|
|
|
// $GLOBALS['egw']->redirect($redirectTarget);
|
|
?>
|
|
<head>
|
|
<script language="javascript">
|
|
function clearAuthenticationCache(page)
|
|
{
|
|
// Default to a non-existing page (give error 500).
|
|
// An empty page is better, here.
|
|
if (!page) page = '.force_logout';
|
|
|
|
try
|
|
{
|
|
var agt=navigator.userAgent.toLowerCase();
|
|
if (agt.indexOf("msie") != -1)
|
|
{
|
|
// IE clear HTTP Authentication
|
|
document.execCommand("ClearAuthenticationCache");
|
|
}
|
|
else
|
|
{
|
|
var xmlhttp;
|
|
if (window.XMLHttpRequest)
|
|
{
|
|
xmlhttp = new XMLHttpRequest();
|
|
}
|
|
else if (window.ActiveXObject)
|
|
{
|
|
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
|
|
// Let's prepare invalid credentials
|
|
xmlhttp.open("GET", page, true, "logout", "logout");
|
|
// Let's send the request to the server
|
|
xmlhttp.send("");
|
|
// Let's abort the request
|
|
xmlhttp.abort();
|
|
}
|
|
}
|
|
catch(e)
|
|
{
|
|
alert("An exception occurred in the script. Error name: " + e.name + ". Error message: " + e.message);
|
|
// There was an error
|
|
return;
|
|
}
|
|
}
|
|
</script>
|
|
<meta http-equiv="refresh" content="1;url=<?php echo $redirectTarget ?>">
|
|
</head>
|
|
<body onload="clearAuthenticationCache()">
|
|
<a href="<?php echo $redirectTarget ?>">Logout in progress...</a>
|
|
</body>
|
|
|