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