1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
<?php
namespace dokuwiki\Action;
use dokuwiki\Action\Exception\ActionDisabledException;
use dokuwiki\Action\Exception\ActionException;
use dokuwiki\Extension\AuthPlugin;
/**
* Class Logout
*
* Log out a user
*
* @package dokuwiki\Action
*/
class Logout extends AbstractUserAction
{
/** @inheritdoc */
public function minimumPermission()
{
return AUTH_NONE;
}
/** @inheritdoc */
public function checkPreconditions()
{
parent::checkPreconditions();
/** @var AuthPlugin $auth */
global $auth;
if (!$auth->canDo('logout')) throw new ActionDisabledException();
}
/** @inheritdoc */
public function preProcess()
{
global $ID;
global $INPUT;
if (!checkSecurityToken()) throw new ActionException();
// when logging out during an edit session, unlock the page
$lockedby = checklock($ID);
if ($lockedby == $INPUT->server->str('REMOTE_USER')) {
unlock($ID);
}
// do the logout stuff and redirect to login
auth_logoff();
send_redirect(wl($ID, ['do' => 'login'], true, '&'));
// should never be reached
throw new ActionException('login');
}
}
|