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

Merge branch 'CreationIndividu'

parents ceca0e43 cf2d9fd6
Loading
Loading
Loading
Loading
+41 −0
Changes for module/Application/config/others/utilisateur.config.php: 41 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

use Application\Controller\Factory\UtilisateurControllerFactory;
use Application\Form\CreationUtilisateurForm;
use Application\Form\Factory\CreationUtilisateurFormFactory;
use Application\Form\Factory\CreationUtilisateurHydratorFactory;
use Application\Form\Hydrator\CreationUtilisateurHydrator;
use Application\Provider\Privilege\UtilisateurPrivileges;
use Application\Service\Individu\IndividuServiceFactory;
use Application\Service\Utilisateur\UtilisateurService;
use UnicaenAuth\Guard\PrivilegeController;
use Zend\Mvc\Router\Http\Literal;

return [
    'bjyauthorize'    => [
@@ -42,11 +47,30 @@ return [
                    ],
                    'privileges' => UtilisateurPrivileges::UTILISATEUR_ATTRIBUTION_ROLE,
                ],
                [
                    'controller' => 'Application\Controller\Utilisateur',
                    'action'     => [
                        'creation-utilisateur',
                    ],
                    'privileges' => UtilisateurPrivileges::UTILISATEUR_MODIFICATION,
                ],
            ],
        ],
    ],
    'router'          => [
        'routes' => [
            'creation-utilisateur' => [
                'type'          => Literal::class,
                'options'       => [
                    'route'       => '/creation-utilisateur',
                    'defaults'    => [
                        '__NAMESPACE__' => 'Application\Controller',
                        'controller'    => 'Utilisateur',
                        'action' => 'creation-utilisateur',
                    ],
                ],
                'may_terminate' => true,
            ],
            'utilisateur' => [
                'type'          => 'Segment',
                'options'       => [
@@ -99,6 +123,7 @@ return [
                            ],
                        ],
                    ],

                ],
            ],
        ],
@@ -114,6 +139,11 @@ return [
                                'route'    => 'utilisateur',
                                'resource' => PrivilegeController::getResourceId('Application\Controller\Utilisateur', 'index'),
                            ],
                            'creation' => [
                                'label'    => 'Création d\'utilisateur',
                                'route'    => 'creation-utilisateur',
                                'resource' => PrivilegeController::getResourceId('Application\Controller\Utilisateur', 'creation-utilisateur'),
                            ],
                        ],
                    ],
                ],
@@ -135,4 +165,15 @@ return [
            'Application\Controller\Utilisateur' => UtilisateurControllerFactory::class,
        ],
    ],
    'form_elements' => [
        'factories' => [
            CreationUtilisateurForm::class => CreationUtilisateurFormFactory::class
        ]
    ],
    'hydrators' => [
        'factories' => [
            CreationUtilisateurHydrator::class => CreationUtilisateurHydratorFactory::class,
        ]
    ]

];
+4 −0
Changes for module/Application/src/Application/Controller/Factory/UtilisateurControllerFactory.php: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ use Application\Controller\UtilisateurController;
use Application\Service\Individu\IndividuServiceLocateTrait;
use Application\Service\Role\RoleService;
use Application\Service\Utilisateur\UtilisateurService;
use Doctrine\ORM\EntityManager;
use UnicaenLdap\Service\People as LdapPeopleService;
use Zend\Mvc\Controller\ControllerManager;

@@ -21,16 +22,19 @@ class UtilisateurControllerFactory
         * @var RoleService $roleService
         * @var UtilisateurService $utilisateurService
         * @var LdapPeopleService $ldapPeopleService
         * @var EntityManager $entityManager;
         */
        $roleService = $sl->get('RoleService');
        $ldapPeopleService  = $sl->get('LdapServicePeople');
        $utilisateurService = $sl->get('UtilisateurService');
        $entityManager = $sl->get('doctrine.entitymanager.orm_default');

        $controller = new UtilisateurController();
        $controller->setRoleService($roleService);
        $controller->setLdapPeopleService($ldapPeopleService);
        $controller->setUtilisateurService($utilisateurService);
        $controller->setIndividuService($this->locateIndividuService($sl));
        $controller->setEntityManager($entityManager);

        return $controller;
    }
+64 −0
Changes for module/Application/src/Application/Controller/UtilisateurController.php: 64 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -2,8 +2,10 @@

namespace Application\Controller;

use Application\Entity\Db\CreationUtilisateurInfos;
use Application\Entity\Db\Role;
use Application\Entity\Db\Utilisateur;
use Application\Form\CreationUtilisateurForm;
use Application\RouteMatch;
use Application\Service\Individu\IndividuServiceAwareTrait;
use Application\Service\Role\RoleServiceAwareTrait;
@@ -16,12 +18,18 @@ use Doctrine\ORM\QueryBuilder;
use Doctrine\ORM\Tools\Pagination\Paginator;
use DoctrineORMModule\Paginator\Adapter\DoctrinePaginator;
use UnicaenApp\Exception\RuntimeException;
use UnicaenApp\Service\EntityManagerAwareTrait;
use UnicaenImport\Entity\Db\Source;
use UnicaenLdap\Entity\People;
use UnicaenLdap\Filter\People as LdapPeopleFilter;
use UnicaenLdap\Service\LdapPeopleServiceAwareTrait;
use UnicaenLdap\Service\People as LdapPeopleService;
use Zend\Db\Sql\Predicate\In;
use Zend\View\Model\JsonModel;
use Zend\View\Model\ViewModel;
use Zend\Http\Request;
use Zend\Form\Form;
use Application\Entity\Db\Individu;

class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurController
{
@@ -30,6 +38,7 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle
    use RoleServiceAwareTrait;
    use LdapPeopleServiceAwareTrait;
    use IndividuServiceAwareTrait;
    use EntityManagerAwareTrait;

    /**
     * @return array|\Zend\Http\Response|ViewModel
@@ -289,4 +298,59 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle

        return $role;
    }

    public function creationUtilisateurAction()
    {
        /** @var Form $form */
        $form = $this->getServiceLocator()->get('FormElementManager')->get(CreationUtilisateurForm::class);
        $infos = new CreationUtilisateurInfos();

        $form->bind($infos);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);

            if ($form->isValid()) {

                /** @var CreationUtilisateurInfos $info */


                // Le mail va servir de verification de la présence d'un utilisateur et d'un individu en db
                // todo utiliser la fonction dédiée de doctrine après la POC


                if ($this->individuService->existIndividuUtilisateurByEmail($data['email'])) {
                    var_dump("mail déjà en base");
                    //die("Problème de présence de l'entité en base");
                } else {

                    /** @var Individu $individu */
                    $individu = new Individu();
                    $individu->setCivilite($data['civilite']);
                    $individu->setNomUsuel($data['nomUsuel']);
                    $individu->setNomPatronymique($data['nomPatronymique']);
                    $individu->setPrenom1($data['prenom']);
                    $individu->setEmail($data['email']);
                    $individu->setSourceCode("COMUE::" . $data['email']);

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

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


        return new ViewModel([
            'form' => $form,
        ]);
    }
}
 No newline at end of file
+132 −0
Changes for module/Application/src/Application/Entity/Db/CreationUtilisateurInfos.php: 132 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Application\Entity\Db;

class CreationUtilisateurInfos {

    /** @var string */
    protected $civilite;
    /** @var string */
    protected $nomUsuel;
    /** @var string */
    protected $nomPatronymique;
    /** @var string */
    protected $prenom;
    /** @var string */
    protected $email;
    /** @var string */
    protected $password;

    /**
     * @return string
     */
    public function getCivilite()
    {
        return $this->civilite;
    }

    /**
     * @param string $civilite
     * @return CreationUtilisateurInfos
     */
    public function setCivilite($civilite)
    {
        $this->civilite = $civilite;
        return $this;
    }

    /**
     * @return string
     */
    public function getNomUsuel()
    {
        return $this->nomUsuel;
    }

    /**
     * @param string $nomUsuel
     * @return CreationUtilisateurInfos
     */
    public function setNomUsuel($nomUsuel)
    {
        $this->nomUsuel = $nomUsuel;
        return $this;
    }

    /**
     * @return string
     */
    public function getNomPatronymique()
    {
        return $this->nomPatronymique;
    }

    /**
     * @param string $nomPatronymique
     * @return CreationUtilisateurInfos
     */
    public function setNomPatronymique($nomPatronymique)
    {
        $this->nomPatronymique = $nomPatronymique;
        return $this;
    }

    /**
     * @return string
     */
    public function getPrenom()
    {
        return $this->prenom;
    }

    /**
     * @param string $prenom
     * @return CreationUtilisateurInfos
     */
    public function setPrenom($prenom)
    {
        $this->prenom = $prenom;
        return $this;
    }

    /**
     * @return string
     */
    public function getEmail()
    {
        return $this->email;
    }

    /**
     * @param string $email
     * @return CreationUtilisateurInfos
     */
    public function setEmail($email)
    {
        $this->email = $email;
        return $this;
    }

    /**
     * @return string
     */
    public function getPassword()
    {
        return $this->password;
    }

    /**
     * @param string $password
     * @return CreationUtilisateurInfos
     */
    public function setPassword($password)
    {
        $this->password = $password;
        return $this;
    }





}
 No newline at end of file
+80 −0
Changes for module/Application/src/Application/Form/CreationUtilisateurForm.php: 80 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Application\Form;

use Zend\Form\Element\Password;
use Zend\Form\Element\Submit;
use Zend\Form\Element\Text;
use Zend\Form\Element\Hidden;
use Zend\Form\Form;
use Zend\InputFilter\Factory;

class CreationUtilisateurForm extends Form
{

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

        $this->add(
            (new Hidden('id'))
        );
        $this->add(
            (new Text('civilite'))
                ->setLabel("Civilité :")
        );
        $this->add(
            (new Text('nomUsuel'))
                ->setLabel("Nom usuel :")
        );

        $this->add(
            (new Text('nomPatronymique'))
            ->setLabel("Nom Patronymique :")
        );
        $this->add(
            (new Text('prenom'))
                ->setLabel("Prénom :")
        );
        $this->add(
            (new Text('email'))
                ->setLabel("Email :")
        );
        $this->add(
            (new Password('password'))
                ->setLabel("Mot de passe :")
        );

        $this->add((new Submit('submit'))
            ->setValue("Enregistrer")
            ->setAttribute('class', 'btn btn-primary')
        );

        $this->setInputFilter((new Factory())->createInputFilter([
            'civilite' => [
                'name' => 'civilite',
                'required' => true,
            ],
            'nomUsuel' => [
                'name' => 'nomUsuel',
                'required' => true,
            ],
            'nomPatronymique' => [
                'name' => 'nomPatronymique',
                'required' => true,
            ],
            'prenom' => [
                'name' => 'prenom',
                'required' => true,
            ],
            'email' => [
                'name' => 'email',
                'required' => true,
            ],
            'password' => [
                'name' =>'password',
                'required' => true,
            ]
        ]));
    }
}
 No newline at end of file
Loading