<?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'); } }