public function inscriptionAction()
 {
     $this->layout('layout/connexion');
     /** @var EntityManager $em */
     $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager');
     $form = new UtilisateurForm($em);
     $utilisateur = new Utilisateur();
     $form->get('submit')->setAttribute('class', 'btn btn-primary btn-block')->setValue('Inscription');
     $form->bind($utilisateur);
     $utilisateur->setRole(Utilisateur::DEFAULT_ROLE);
     /** @var Request $request */
     $request = $this->getRequest();
     if ($request->isPost()) {
         $form->setData($request->getPost());
         if ($form->isValid()) {
             $utilisateur->setEncryptedPassword(Hash::compute('sha256', $utilisateur->getPassword()));
             $utilisateur->setDisabled(false);
             $em->persist($utilisateur);
             $em->flush();
             $this->flashMessenger()->addSuccessMessage('Votre inscription a bien été prise en compte.<br/>Vous pouvez dès à présent vous connecter.');
             $subject = 'Votre compte a bien été créé';
             $viewMessage = new ViewModel();
             $viewMessage->setTemplate('mail/utilisateur-nouveau')->setVariables(array('utilisateur' => $utilisateur))->setTerminal(true);
             $viewRender = $this->getServiceLocator()->get('ViewRenderer');
             $message = $viewRender->render($viewMessage);
             $to = $utilisateur->getEmail();
             $mailer = new Mailer($this->getServiceLocator());
             $mailer->sendMail($subject, $message, $to);
             return $this->redirect()->toRoute('connexion');
         }
     }
     $view = new ViewModel();
     return $view->setVariables(array('form' => $form));
 }
 public function editAction()
 {
     $id_util = (int) $this->params()->fromRoute('id', 0);
     if (!$id_util) {
         return $this->redirect()->toRoute('utilisateur', array('action' => 'add'));
     }
     $utilisateur = $this->getEntityManager()->find('Application\\Entity\\Utilisateur', $id_util);
     if (!$utilisateur) {
         return $this->redirect()->toRoute('utilisateur', array('action' => 'index'));
     }
     $form = new UtilisateurForm();
     $form->bind($utilisateur);
     $form->get('submit')->setAttribute('value', 'Edit');
     $request = $this->getRequest();
     if ($request->isPost()) {
         $form->setInputFilter($utilisateur->getInputFilter());
         $form->setData($request->getPost());
         if ($form->isValid()) {
             $this->getEntityManager()->flush();
             // Redirect to list of utilisateurs
             return $this->redirect()->toRoute('utilisateur');
         }
     }
     return array('id_util' => $id_util, 'form' => $form);
 }
 public function modifierAction()
 {
     $routeId = (int) $this->params()->fromRoute('id');
     $id = $routeId == 0 ? $this->identity()->getId() : $routeId;
     /** @var Utilisateur $utilisateur */
     $utilisateur = $this->identity();
     if ($utilisateur->getId() != $id && $utilisateur->getRole() != Utilisateur::ROLE_ADMINISTRATEUR) {
         $this->flashMessenger()->addErrorMessage('L\'utilisateur n\'existe pas.');
         return $this->redirect()->toRoute('accueil');
     }
     /** @var EntityManager $em */
     $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager');
     /** @var Utilisateur $utilisateur */
     $utilisateur = $em->getRepository('Application\\Entity\\Utilisateur')->find($id);
     if (is_null($utilisateur)) {
         $this->flashMessenger()->addErrorMessage('L\'utilisateur n\'existe pas.');
         return $this->redirect()->toRoute('accueil');
     }
     $form = new UtilisateurForm($em);
     $form->bind($utilisateur);
     /** @var Request $request */
     $request = $this->getRequest();
     if ($request->isPost()) {
         $post = $request->getPost();
         $unchanged = false;
         if ($post['password'] == '' && $post['passwordConfirmation'] == '') {
             $unchanged = true;
         }
         $form->setData($post);
         if ($form->isValid()) {
             if (!$unchanged) {
                 $utilisateur->setEncryptedPassword(Hash::compute('sha256', $utilisateur->getPassword()));
             }
             $em->flush();
             $this->flashMessenger()->addSuccessMessage('L\'utilisateur a bien été modifié.');
             $subject = 'Votre compte a été mis à jour';
             $viewMessage = new ViewModel();
             $viewMessage->setTemplate('mail/utilisateur-maj')->setVariables(array('user' => $utilisateur))->setTerminal(true);
             $viewRender = $this->getServiceLocator()->get('ViewRenderer');
             $message = $viewRender->render($viewMessage);
             $to = $utilisateur->getEmail();
             $mailer = new Mailer($this->getServiceLocator());
             $mailer->sendMail($subject, $message, $to);
             return $this->redirect()->toRoute('utilisateur', array('action' => 'detail', 'id' => $id));
         }
     }
     $view = new ViewModel();
     return $view->setVariables(array('utilisateur' => $utilisateur, 'id' => $routeId, 'form' => $form));
 }