UserUsurpationHelper.php 3.22 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<?php

namespace UnicaenAuth\View\Helper;

use UnicaenApp\Form\View\Helper\FormControlGroup;
use UnicaenAuth\Options\ModuleOptions;
use Zend\Form\Element\Submit;
use Zend\Form\Element\Text;
use Zend\Form\Form;
use Zend\Form\View\Helper\Form as FormHelper;
use Zend\View\Renderer\PhpRenderer;

/**
 * Aide de vue permettant de saisir et valider le login de l'utilisateur dont on veut usurper l'identité.
 *
 * @author Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr>
 */
class UserUsurpationHelper extends UserAbstract
{
    /**
     * @var PhpRenderer
     */
    protected $view;

    /**
     * @var ModuleOptions
     */
    protected $moduleOptions;

    /**
     * @var string
     */
    private $url;

    /**
     * @var bool
     */
    private $usurpationEnabled = false;

    /**
     * Point d'entrée.
     *
     * @return self
     */
    public function __invoke()
    {
        return $this;
    }
    
    /**
     * Retourne le code HTML généré par cette aide de vue.
     * 
     * @return string 
     */
    public function __toString()
    {
        if (! $this->usurpationEnabled) {
            return '';
        }

        /** @var FormHelper $formHelper */
        $formHelper = $this->view->plugin('form');
        /** @var FormControlGroup $formControlGroupHelper */
        $formControlGroupHelper = $this->view->plugin('formControlGroup');

        $form = new Form('user-usurpation-form');
        $form->setAttributes([
            'class' => 'user-usurpation-form',
            'action' => $this->url,
        ]);

        $input = new Text('identity');
        $input->setAttributes([
            'id' => 'user-usurpation-input',
            'placeholder' => "Identifiant utilisateur",
        ]);

        $submit = new Submit('submit');
        $submit->setValue("Usurper");
        $submit->setAttributes([
            'class' => 'user-usurpation-submit btn btn-info',
        ]);

        $html = '';
        $html .= $formHelper->openTag($form);
        $html .= "<div><strong>Usurpation d'identité :</strong></div>";
        $html .= $formControlGroupHelper->__invoke($input);
        $html .= $formControlGroupHelper->__invoke($submit);
        $html .= $formHelper->closeTag();

        $html .= <<<EOS
<script>
    $(".user-usurpation-form").submit(function() {
        $("body *").css('cursor', 'wait');
    });
    var input = $("#user-usurpation-input").on('input', function() {
        updateUsurpationSubmit();
    });
    function updateUsurpationSubmit() {
        $(".user-usurpation-submit").prop("disabled", input.val().length === 0);
    }
    updateUsurpationSubmit();
</script>
EOS;

        return $html;
    }

    /**
     * @param string $url
     * @return $this
     */
    public function setUrl($url)
    {
        $this->url = $url;

        return $this;
    }

    /**
     * @param ModuleOptions $moduleOptions
     * @return self
     */
    public function setModuleOptions(ModuleOptions $moduleOptions)
    {
        $this->moduleOptions = $moduleOptions;

        return $this;
    }

    /**
     * @param bool $usurpationEnabled
     * @return self
     */
    public function setUsurpationEnabled($usurpationEnabled = true)
    {
        $this->usurpationEnabled = $usurpationEnabled;

        return $this;
    }
}