xref: /dokuwiki/inc/Action/Logout.php (revision ab583a1bc44ef1ef3b917647fc361aabd055c2ac)
164ab5140SAndreas Gohr<?php
264ab5140SAndreas Gohr
364ab5140SAndreas Gohrnamespace dokuwiki\Action;
464ab5140SAndreas Gohr
564ab5140SAndreas Gohruse dokuwiki\Action\Exception\ActionException;
664ab5140SAndreas Gohr
7*ab583a1bSAndreas Gohr/**
8*ab583a1bSAndreas Gohr * Class Logout
9*ab583a1bSAndreas Gohr *
10*ab583a1bSAndreas Gohr * Log out a user
11*ab583a1bSAndreas Gohr *
12*ab583a1bSAndreas Gohr * @package dokuwiki\Action
13*ab583a1bSAndreas Gohr */
14*ab583a1bSAndreas Gohrclass Logout extends AbstractUserAction {
1564ab5140SAndreas Gohr
1664ab5140SAndreas Gohr    /** @inheritdoc */
1764ab5140SAndreas Gohr    function minimumPermission() {
1864ab5140SAndreas Gohr        return AUTH_NONE;
1964ab5140SAndreas Gohr    }
2064ab5140SAndreas Gohr
2164ab5140SAndreas Gohr    /** @inheritdoc */
2264ab5140SAndreas Gohr    public function preProcess() {
2364ab5140SAndreas Gohr        global $ID;
2464ab5140SAndreas Gohr        global $INPUT;
2564ab5140SAndreas Gohr
2664ab5140SAndreas Gohr        // when logging out during an edit session, unlock the page
2764ab5140SAndreas Gohr        $lockedby = checklock($ID);
2864ab5140SAndreas Gohr        if($lockedby == $INPUT->server->str('REMOTE_USER')) {
2964ab5140SAndreas Gohr            unlock($ID);
3064ab5140SAndreas Gohr        }
3164ab5140SAndreas Gohr
3264ab5140SAndreas Gohr        // do the logout stuff and redirect to login
3364ab5140SAndreas Gohr        auth_logoff();
3464ab5140SAndreas Gohr        send_redirect(wl($ID, array('do' => 'login')));
3564ab5140SAndreas Gohr
3664ab5140SAndreas Gohr        // should never be reached
3764ab5140SAndreas Gohr        throw new ActionException('login');
3864ab5140SAndreas Gohr    }
3964ab5140SAndreas Gohr
4064ab5140SAndreas Gohr}
41