Commit 4e0e8d94 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Protection pour éviter de créer un user de manière intempestive

parent c5e909c5
Loading
Loading
Loading
Loading
+1 −0
Changes for module/Application/src/Application/Connecteur/LdapConnecteur.php: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -235,6 +235,7 @@ class LdapConnecteur extends AbstractService
        if (!$code && $this->isActif()) {
            $ldapUser = $this->mapperPeople->findOneByUsername($login);

            if (!$ldapUser) return null;
            $code = $this->getPeopleAttribute($ldapUser, $this->getUtilisateurCode());
        }

+2 −11
Changes for module/Application/src/Application/Controller/IntervenantController.php: 2 added lines, 11 removed lines.
Original line number Diff line number Diff line
@@ -287,10 +287,7 @@ class IntervenantController extends AbstractController

    public function saisirAction()
    {
        $statutAutres = $this->getServiceStatutIntervenant()->getAutres();

        $role         = $this->getServiceContext()->getSelectedIdentityRole();
        $intervenant  = $role->getIntervenant() ?: $this->getEvent()->getParam('intervenant');
        $intervenant  = $this->getEvent()->getParam('intervenant');
        $title        = "Saisie d'un intervenant";
        $form         = $this->getFormIntervenantEdition();
        $errors       = [];
@@ -304,11 +301,6 @@ class IntervenantController extends AbstractController
        $isNew = !$intervenant;
        if (!$intervenant) {
            $intervenant = $this->getServiceIntervenant()->newEntity();
            $intervenant->setStructure($this->getServiceContext()->getStructure());
            $intervenant->setStatut($statutAutres);
            $intervenant->setAnnee($this->getServiceContext()->getAnnee());
            $intervenant->setSource($this->getServiceSource()->getOse());
            $intervenant->setCode(uniqid('OSE'));
        }

        if ($actionDetail == 'dupliquer') {
@@ -332,8 +324,7 @@ class IntervenantController extends AbstractController
            $form->setData($data);
            if ((!$form->isReadOnly()) && $form->isValid()) {
                try {
                    $form->protection($intervenant);
                    if ($form->get('login')->getValue() && $form->get('password')->getValue()) {
                    if ($this->params()->fromPost('userCreate') == '1' && $form->get('login')->getValue() && $form->get('password')->getValue()) {
                        $nom           = $intervenant->getNomUsuel();
                        $prenom        = $intervenant->getPrenom();
                        $dateNaissance = $intervenant->getDateNaissance();
+26 −1
Changes for module/Application/src/Application/Form/Intervenant/EditionForm.php: 26 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -296,6 +296,18 @@ class EditionForm extends AbstractForm
            'type' => 'Hidden',
        ]);

        $this->add([
            'name'       => 'userChange',
            'type'       => 'Hidden',
            'attributes' => ['value' => '0'],
        ]);

        $this->add([
            'name'       => 'userCreate',
            'type'       => 'Hidden',
            'attributes' => ['value' => '0'],
        ]);

        $this->add([
            'name'       => 'submit',
            'type'       => 'Submit',
@@ -460,7 +472,18 @@ class EditionForm extends AbstractForm
            'code'               => ['required' => true],
            'utilisateur'        => ['required' => false],
            'login'              => ['required' => false],
            'password'           => ['required' => false],
            'password'           => [
                'required'   => false,
                'validators' => [
                    [
                        'name'    => 'StringLength',
                        'options' => ['min' => 6],
                    ],
                ],
                'filters'    => [
                    ['name' => 'StringTrim'],
                ],
            ],
            'source'             => ['required' => false],
            'sourceCode'         => ['required' => false],
            'montantIndemniteFc' => ['required' => false],
@@ -491,6 +514,7 @@ class EditionFormHydrator extends GenericHydrator
    {
        parent::hydrate($data, $object);

        if ($data['userChange'] == '1') {
            $login = isset($data['utilisateur']['id']) ? $data['utilisateur']['id'] : null;
            if ($login) {
                $code = $this->getConnecteurLdap()->getCodeFromLogin($login);
@@ -500,6 +524,7 @@ class EditionFormHydrator extends GenericHydrator

            $object->setUtilisateurCode($code);
        }
    }



+17 −1
Changes for module/Application/src/Application/Service/IntervenantService.php: 17 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@ use Doctrine\ORM\QueryBuilder;
 *
 * @method Intervenant get($id)
 * @method Intervenant[] getList(QueryBuilder $qb = null, $alias = null)
 * @method Intervenant newEntity()
 */
class IntervenantService extends AbstractEntityService
{
@@ -375,6 +374,23 @@ class IntervenantService extends AbstractEntityService



    /**
     * @return Intervenant
     */
    public function newEntity(): Intervenant
    {
        $intervenant = parent::newEntity();
        $intervenant->setStructure($this->getServiceContext()->getStructure());
        $intervenant->setStatut($this->getServiceStatutIntervenant()->getAutres());
        $intervenant->setAnnee($this->getServiceContext()->getAnnee());
        $intervenant->setSource($this->getServiceSource()->getOse());
        $intervenant->setCode(uniqid('OSE'));

        return $intervenant;
    }



    /**
     * Sauvegarde une entité
     *
+40 −2
Changes for module/Application/view/application/intervenant/saisir.phtml: 40 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -128,18 +128,54 @@ if ($errors) {
                    this.getChangementEtatBtn().click(function () {
                        that.changementParDefaut();
                    });

                    this.getLoginElement().change(function () {
                        that.changementLoginPassword();
                    });

                    this.getPasswordElement().change(function () {
                        that.changementLoginPassword();
                    });

                    this.getUserUtilisateurElement().change(function () {
                        that.changementUtilisateur();
                    });
                },

                changementParDefaut: function ()
                {
                    console.log('changement par défaut!!!');
                    var btn = this.getChangementEtatBtn();

                    if (btn.hasClass('active')) {
                        btn.removeClass('active');
                        btn.html('Définir par défaut');
                    } else {
                        btn.addClass('active');
                        btn.html('Ne plus définir par défaut');
                    }
                },

                changementLoginPassword: function ()
                {
                    this.getUserCreateElement().val(1);
                },

                changementUtilisateur: function ()
                {
                    this.getUserChangeElement().val(1);
                },

                getStatutElement: function () { return this.element.find('select[name="statut"]'); },
                getSyncStatutElement: function () { return this.element.find('input[name="syncStatut"]'); },
                getStructureElement: function () { return this.element.find('select[name="structure"]'); },
                getSyncStructureElement: function () { return this.element.find('input[name="syncStructure"]'); },
                getChangementEtatBtn: function () { return $('#changement-etat-defaut'); }
                getChangementEtatBtn: function () { return $('#changement-etat-defaut'); },

                getUserChangeElement: function () { return this.element.find('input[name="userChange"]'); },
                getUserCreateElement: function () { return this.element.find('input[name="userCreate"]'); },
                getLoginElement: function () { return this.element.find('input[name="login"]'); },
                getPasswordElement: function () { return this.element.find('input[name="password"]'); },
                getUserUtilisateurElement: function () { return this.element.find('input[name="utilisateur[id]"]'); }
            });

            WidgetInitializer.add('form-intervenant-edition', 'formIntervenantEdition');
@@ -149,6 +185,8 @@ if ($errors) {

<?php
echo $this->formHidden($form->get('id'));
echo $this->formHidden($form->get('userChange'));
echo $this->formHidden($form->get('userCreate'));
echo $this->form()->closeTag();
echo ' ' . $this->tag('button', [
        'onclick' => "$('.form-intervenant-edition').submit();",