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

Merge branch 'release_2.1.7'

parents 7931a01f 25a45957
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -202,10 +202,8 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle
     */
    public function ajouterAction()
    {
        /** @var CreationUtilisateurForm $form */
        $form = $this->creationUtilisateurForm;
//        $infos = new CreationUtilisateurInfos();
//        $form->bind($infos);
        $form->setData(['individu' => 1]);

        /** @var Request $request */
        $request = $this->getRequest();
@@ -216,7 +214,15 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle
                if (!trim($data['nomPatronymique'])) {
                    $data['nomPatronymique'] = $data['nomUsuel'];
                }
                if ($data['individu'] == '1') {
                    $individu = $this->utilisateurService->createIndividuFromFormData($data->toArray());
                    $utilisateur = $this->utilisateurService->createFromIndividuAndFormData($individu, $data->toArray());

                } else {
                    $utilisateur = $this->utilisateurService->createFromFormData($data->toArray());
                }
                $this->userService->updateUserPasswordResetToken($utilisateur);
                $this->notifierService->triggerInitialisationCompte($utilisateur, $utilisateur->getPasswordResetToken());
                $this->flashMessenger()->addSuccessMessage("Utilisateur <strong>{$utilisateur->getUsername()}</strong> créé avec succès.");
                $this->redirect()->toRoute('utilisateur');
            }
+6 −26
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ namespace Application\Form;
use Application\Entity\Db\Individu;
use Application\Form\Validator\NewEmailValidator;
use Application\Form\Validator\PasswordValidator;
use Zend\Form\Element\Checkbox;
use Zend\Form\Element\Hidden;
use Zend\Form\Element\Password;
use Zend\Form\Element\Radio;
@@ -47,15 +48,9 @@ class CreationUtilisateurForm extends Form implements InputFilterProviderInterfa
                ->setLabel("Adresse électronique (identifiant de connexion) :")
        );
        $this->add(
            (new Password('password'))
                ->setLabel("Mot de passe :")
            (new Checkbox('individu'))
                ->setLabel("Création d'individu pour cet utilisateur <br/> <span class='text-danger'><span class='glyphicon glyphicon-warning-sign'></span> Ne pas cocher si pour lier à un individu existant</span>")
        );

        $this->add(
            (new Password('passwordbis'))
                ->setLabel("Confirmation du mot de passe :")
        );

        $this->add((new Submit('submit'))
            ->setValue("Enregistrer")
            ->setAttribute('class', 'btn btn-primary')
@@ -63,9 +58,6 @@ class CreationUtilisateurForm extends Form implements InputFilterProviderInterfa
    }

    /**
     * Should return an array specification compatible with
     * {@link Zend\InputFilter\Factory::createInputFilter()}.
     *
     * @return array
     */
    public function getInputFilterSpecification()
@@ -96,21 +88,9 @@ class CreationUtilisateurForm extends Form implements InputFilterProviderInterfa
                    ],
                ],
            ],
            'password' => [
                'name' =>'password',
                'required' => true,
                'validators' => [
                    [
                        'name' => PasswordValidator::class,
                    ],
                ],
            ],
            'passwordbis' => [
                'name' =>'passwordbis',
                'required' => true,
                'validators' => [
                    new Identical('password'),
                ],
            'individu' => [
                'name' => 'individu',
                'required' => false,
            ],
        ];
    }
+1 −1
Original line number Diff line number Diff line
@@ -674,7 +674,7 @@ EOS;
                $username = ($individu->getNomUsuel() ?: $individu->getNomPatronymique()) . "_" . $president->getId();
                $user = $this->utilisateurService->createFromIndividu($individu, $username, 'none');
                $token = $this->userService->updateUserPasswordResetToken($user);
                $this->getNotifierService()->triggerInitialisationCompte($user, $token);
                $this->getNotifierService()->triggerInitialisationCompte($user);
                $this->getNotifierService()->triggerValidationDepotTheseCorrigee($these);
                return ['success', "Création de compte initialisée et notification des corrections faite à <strong>" . $email . "</strong>"];
            } else {
+32 −8
Original line number Diff line number Diff line
@@ -106,13 +106,36 @@ class UtilisateurService extends BaseService
        return $this->createFromIndividu($individu, $username, $password);
    }

    public function createFromFormData(array $data)
    {
        $userName = $data['email'];
        $displayName = $data['prenom'] . " " . $data['nomUsuel'];
        $email = $data['email'];

        $utilisateur = new Utilisateur();
        $utilisateur->setDisplayName($displayName);
        $utilisateur->setEmail($email);
        $utilisateur->setUsername($userName);
        $utilisateur->setPassword('none');
        $utilisateur->setState(1);

        try {
            $this->getEntityManager()->persist($utilisateur);
            $this->getEntityManager()->flush($utilisateur);
        } catch (ORMException $e) {
            throw new RuntimeException("Impossible d'enregistrer le nouvel utilisateur", null, $e);
        }

        return $utilisateur;
    }

    /**
     * @param Individu $individu
     * @param string   $username
     * @param string   $password
     * @return Utilisateur
     */
    public function createFromIndividu(Individu $individu, $username, $password)
    public function createFromIndividu(Individu $individu, string $username, string $password) : Utilisateur
    {
        if (! $username) {
            throw new RuntimeException("Impossible de créer un utilisateur sans username");
@@ -132,10 +155,10 @@ class UtilisateurService extends BaseService
        $utilisateur->setState(1);
        $utilisateur->setIndividu($individu);

        $this->getEntityManager()->persist($utilisateur);
        try {
            $this->getEntityManager()->persist($utilisateur);
            $this->getEntityManager()->flush($utilisateur);
        } catch (OptimisticLockException $e) {
        } catch (ORMException $e) {
            throw new RuntimeException("Impossible d'enregistrer le nouvel utilisateur", null, $e);
        }

@@ -165,9 +188,9 @@ class UtilisateurService extends BaseService
     * Crée un utilisateur ainsi que l'individu associé, à partir des données du formulaire de création d'utilisateur.
     *
     * @param array $formData
     * @return Utilisateur
     * @return Individu
     */
    public function createFromFormData(array $formData)
    public function createIndividuFromFormData(array $formData)
    {
        $source = $this->sourceService->fetchApplicationSource();

@@ -178,7 +201,6 @@ class UtilisateurService extends BaseService
        $individu->setNomPatronymique($formData['nomPatronymique']);
        $individu->setPrenom1($formData['prenom']);
        $individu->setEmail($formData['email']);
        $individu->setEmail($formData['email']);
        $individu->setSource($source);
        $individu->setSourceCode(uniqid()); // NB: sera remplacé par "COMUE::{INDIVIDU.ID}"

@@ -195,11 +217,11 @@ class UtilisateurService extends BaseService

        try {
            $this->getEntityManager()->flush($individu);
        } catch (OptimisticLockException $e) {
        } catch (ORMException $e) {
            throw new RuntimeException("Erreur lors de l'enregistrement de l'individu", null, $e);
        }

        return $this->createFromIndividuAndFormData($individu, $formData);
        return $individu;
    }

    /**
@@ -268,4 +290,6 @@ class UtilisateurService extends BaseService
        $result = $this->getRepository()->find($id);
        return $result;
    }


}
 No newline at end of file