Completed
Push — master ( 13ce47...b2c9cd )
by Andreas
10:39 queued 06:48
created

Logout   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Importance

Changes 0
Metric Value
dl 0
loc 36
rs 10
c 0
b 0
f 0
wmc 5
lcom 0
cbo 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A minimumPermission() 0 3 1
A preProcess() 0 17 2
A checkPreconditions() 0 7 2
1
<?php
2
3
namespace dokuwiki\Action;
4
5
use dokuwiki\Action\Exception\ActionDisabledException;
6
use dokuwiki\Action\Exception\ActionException;
7
8
/**
9
 * Class Logout
10
 *
11
 * Log out a user
12
 *
13
 * @package dokuwiki\Action
14
 */
15
class 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_Auth_Plugin $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')));
45
46
        // should never be reached
47
        throw new ActionException('login');
48
    }
49
50
}
51