Failed Conditions
Push — psr2-config ( c6639e )
by Andreas
06:39 queued 03:33
created

action_plugin_authad::handleAuthLoginCheck()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 18
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 11
nc 4
nop 2
dl 0
loc 18
rs 9.2
c 0
b 0
f 0
1
<?php
2
/**
3
 * DokuWiki Plugin addomain (Action Component)
4
 *
5
 * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
6
 * @author  Andreas Gohr <[email protected]>
7
 */
8
9
/**
10
 * Class action_plugin_addomain
11
 */
12
class action_plugin_authad extends DokuWiki_Action_Plugin
13
{
14
15
    /**
16
     * Registers a callback function for a given event
17
     */
18
    public function register(Doku_Event_Handler $controller)
19
    {
20
21
        $controller->register_hook('AUTH_LOGIN_CHECK', 'BEFORE', $this, 'handleAuthLoginCheck');
22
        $controller->register_hook('HTML_LOGINFORM_OUTPUT', 'BEFORE', $this, 'handleHtmlLoginformOutput');
23
    }
24
25
    /**
26
     * Adds the selected domain as user postfix when attempting a login
27
     *
28
     * @param Doku_Event $event
29
     * @param array      $param
30
     */
31
    public function handleAuthLoginCheck(Doku_Event $event, $param)
0 ignored issues
show
Unused Code introduced by
The parameter $param is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
32
    {
33
        global $INPUT;
34
35
        /** @var auth_plugin_authad $auth */
36
        global $auth;
37
        if (!is_a($auth, 'auth_plugin_authad')) return; // AD not even used
38
39
        if ($INPUT->str('dom')) {
40
            $usr = $auth->cleanUser($event->data['user']);
41
            $dom = $auth->getUserDomain($usr);
42
            if (!$dom) {
43
                $usr = "$usr@".$INPUT->str('dom');
44
            }
45
            $INPUT->post->set('u', $usr);
46
            $event->data['user'] = $usr;
47
        }
48
    }
49
50
    /**
51
     * Shows a domain selection in the login form when more than one domain is configured
52
     *
53
     * @param Doku_Event $event
54
     * @param array      $param
55
     */
56
    public function handleHtmlLoginformOutput(Doku_Event $event, $param)
0 ignored issues
show
Unused Code introduced by
The parameter $param is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
57
    {
58
        global $INPUT;
59
        /** @var auth_plugin_authad $auth */
60
        global $auth;
61
        if (!is_a($auth, 'auth_plugin_authad')) return; // AD not even used
62
        $domains = $auth->getConfiguredDomains();
63
        if (count($domains) <= 1) return; // no choice at all
64
65
        /** @var Doku_Form $form */
66
        $form =& $event->data;
67
68
        // any default?
69
        $dom = '';
70
        if ($INPUT->has('u')) {
71
            $usr = $auth->cleanUser($INPUT->str('u'));
72
            $dom = $auth->getUserDomain($usr);
73
74
            // update user field value
75
            if ($dom) {
76
                $usr          = $auth->getUserName($usr);
77
                $pos          = $form->findElementByAttribute('name', 'u');
78
                $ele          =& $form->getElementAt($pos);
79
                $ele['value'] = $usr;
80
            }
81
        }
82
83
        // add select box
84
        $element = form_makeListboxField('dom', $domains, $dom, $this->getLang('domain'), '', 'block');
85
        $pos     = $form->findElementByAttribute('name', 'p');
86
        $form->insertElement($pos + 1, $element);
87
    }
88
}
89
90
// vim:ts=4:sw=4:et:
91