51 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace dokuwiki\Action;
 | 
						|
 | 
						|
use dokuwiki\Action\Exception\ActionDisabledException;
 | 
						|
use dokuwiki\Action\Exception\ActionException;
 | 
						|
 | 
						|
/**
 | 
						|
 * 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 \dokuwiki\Extension\AuthPlugin $auth */
 | 
						|
        global $auth;
 | 
						|
        if(!$auth->canDo('logout')) throw new ActionDisabledException();
 | 
						|
    }
 | 
						|
 | 
						|
    /** @inheritdoc */
 | 
						|
    public function preProcess() {
 | 
						|
        global $ID;
 | 
						|
        global $INPUT;
 | 
						|
 | 
						|
        // 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, array('do' => 'login'), true, '&'));
 | 
						|
 | 
						|
        // should never be reached
 | 
						|
        throw new ActionException('login');
 | 
						|
    }
 | 
						|
 | 
						|
}
 |