Commit 51aab6db authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Merge branch 'CreationIndividu'

parents cfdb9604 6d50fc3b
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -10,6 +10,9 @@ use Application\Service\Individu\IndividuServiceFactory;
use Application\Service\Utilisateur\UtilisateurService;
use UnicaenAuth\Guard\PrivilegeController;
use Zend\Mvc\Router\Http\Literal;
use Application\Form\Validator\PasswordValidator;
use Application\Form\Validator\NewEmailValidator;
use Application\Form\Validator\Factory\NewEmailValidatorFactory;

return [
    'bjyauthorize'    => [
@@ -174,6 +177,13 @@ return [
        'factories' => [
            CreationUtilisateurHydrator::class => CreationUtilisateurHydratorFactory::class,
        ]
    ]

    ],
    'validators' => [
        'invokables' => [
            PasswordValidator::class => PasswordValidator::class,
        ],
        'factories' => [
            NewEmailValidator::class => NewEmailValidatorFactory::class,
        ],
    ],
];
+4 −8
Original line number Diff line number Diff line
@@ -315,10 +315,7 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle
            $form->setData($data);

            if ($form->isValid()) {
                if ($this->individuService->existIndividuUtilisateurByEmail($data['email'])) {
                    $error = "Addresse électronique déjà renseignée dans SyGAL.";

                } else {
                if ($data['nomPatronymique'] === '') $data['nomPatronymique'] = $data['nomUsuel'];

                /** @var Individu $individu */
                $individu = new Individu();
@@ -331,10 +328,11 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle

                /** @var Utilisateur $utilisateur */
                $utilisateur = new Utilisateur();
                    $utilisateur->setUsername($data['prenom'] . "." . $data['nomUsuel']);
                $utilisateur->setUsername($data['email']);
                $utilisateur->setPassword(password_hash($data['password'], PASSWORD_DEFAULT));
                $utilisateur->setState(1);
                $utilisateur->setEmail($data['email']);
                $utilisateur->setDisplayName($data['nomUsuel']. " " .$data['prenom']);

                $this->individuService->createFromForm($individu, $utilisateur);

@@ -342,12 +340,10 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle
                $this->redirect()->toRoute('utilisateur');
            }
        }
        }


        $form->prepare();
        return new ViewModel([
            'form' => $form,
            'error' => $error,
        ]);
    }
}
 No newline at end of file
+36 −10
Original line number Diff line number Diff line
@@ -2,26 +2,31 @@

namespace Application\Form;

use Application\Form\Validator\NewEmailValidator;
use Application\Form\Validator\PasswordValidator;
use Zend\Form\Element\Hidden;
use Zend\Form\Element\Password;
use Zend\Form\Element\Submit;
use Zend\Form\Element\Text;
use Zend\Form\Element\Hidden;
use Zend\Form\Element\Radio;
use Zend\Form\Form;
use Zend\InputFilter\Factory;
use Zend\InputFilter\InputFilterProviderInterface;

class CreationUtilisateurForm extends Form
class CreationUtilisateurForm extends Form implements InputFilterProviderInterface
{

    public function init()
    {
        //$this->setObject(new RdvBu());

        $this->add(
            (new Hidden('id'))
        );
        $this->add(
            (new Text('civilite'))
            (new Radio('civilite'))
                ->setLabel("Civilité :")
                ->setValueOptions([
                    'M.' => 'M.',
                    'Mme' => 'Mme',
                ])
        );
        $this->add(
            (new Text('nomUsuel'))
@@ -50,7 +55,18 @@ class CreationUtilisateurForm extends Form
            ->setAttribute('class', 'btn btn-primary')
        );

        $this->setInputFilter((new Factory())->createInputFilter([
        //$this->setInputFilter((new Factory())->createInputFilter());
    }

    /**
     * Should return an array specification compatible with
     * {@link Zend\InputFilter\Factory::createInputFilter()}.
     *
     * @return array
     */
    public function getInputFilterSpecification()
    {
        return [
            'civilite' => [
                'name' => 'civilite',
                'required' => true,
@@ -61,7 +77,7 @@ class CreationUtilisateurForm extends Form
            ],
            'nomPatronymique' => [
                'name' => 'nomPatronymique',
                'required' => true,
                'required' => false,
            ],
            'prenom' => [
                'name' => 'prenom',
@@ -70,11 +86,21 @@ class CreationUtilisateurForm extends Form
            'email' => [
                'name' => 'email',
                'required' => true,
                'validators' => [
                    [
                        'name' => NewEmailValidator::class,
                    ],
                ],
            ],
            'password' => [
                'name' =>'password',
                'required' => true,
            ]
        ]));
                'validators' => [
                    [
                        'name' => PasswordValidator::class,
                    ],
                ],
            ],
        ];
    }
}
 No newline at end of file
+21 −0
Original line number Diff line number Diff line
<?php

namespace Application\Form\Validator\Factory;

use Application\Form\Validator\NewEmailValidator;
use Doctrine\ORM\EntityManager;
use Zend\Validator\ValidatorPluginManager;

class NewEmailValidatorFactory
{
    public function __invoke(ValidatorPluginManager $validatorPluginManager)
    {
        /** @var EntityManager $entityManager */
        $entityManager = $validatorPluginManager->getServiceLocator()->get('doctrine.entitymanager.orm_default');

        $validator = new NewEmailValidator();
        $validator->setEntityManager($entityManager);
        return $validator;
    }

}
 No newline at end of file
+47 −0
Original line number Diff line number Diff line
<?php

namespace Application\Form\Validator;

use Application\Entity\Db\Individu;
use Application\Entity\Db\Utilisateur;
use UnicaenApp\Service\EntityManagerAwareTrait;
use Zend\Validator\AbstractValidator;

class NewEmailValidator extends AbstractValidator {

    use EntityManagerAwareTrait;

    const NOT_YET       = 'not-yet';
    const NOT_EMAIL     = 'not-email';
    const USER          = 'user';
    const INDIVIDU      = 'individu';

    protected $messageTemplates = [
        self::NOT_YET       => "La méthode est pas implémentée",
        self::USER          => "Email déjà enregistré (Utilisateur)",
        self::INDIVIDU      => "Email déjà enregistré (Individu)",
        self::NOT_EMAIL     => "Email mal formé",
    ];

    public function isValid($value)
    {
        $nb_pb = 0;
        if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
            $this->error(self::NOT_EMAIL);
            $nb_pb++;
        }
        if ($this->getEntityManager()->getRepository(Individu::class)->findOneBy(['email' => $value]) !== null) {
            $this->error(self::INDIVIDU);
            $nb_pb++;
        }
        if ($this->getEntityManager()->getRepository(Utilisateur::class)->findOneBy(['email' => $value]) !== null) {
            $this->error(self::USER);
            $nb_pb++;
        }

        if ($nb_pb > 0) return false;
        return true;
    }


}
 No newline at end of file
Loading