public function passwordAction()
 {
     $request = $this->getRequest();
     // If user has submit form => send new password by mail...
     if ($request->getMethod() == 'POST') {
         $mailAddress = $request->request->get('mail');
         if (!ValidateUtil::checkMail($mailAddress)) {
             $request->getSession()->getFlashBag()->add('popup-message', 'Le mail indiqué n\'est pas valide');
             return $this->render('jcUserBundle:FO:password.html.twig');
         }
         $entityManager = $this->getDoctrine()->getManager();
         $userList = $entityManager->getRepository('jcUserBundle:User')->findBy(array('mail' => $mailAddress));
         if (count($userList) == 0) {
             $request->getSession()->getFlashBag()->add('popup-message', 'Le mail indiqué est introuvable');
             return $this->render('jcUserBundle:FO:password.html.twig');
         }
         // Update password for user found + send mail
         $user = $userList[0];
         $mailService = $this->get('jc_mail.mail_service');
         if ($mailService->sendNewAccountInformation($user->getId(), false)) {
             $request->getSession()->getFlashBag()->add('popup-message', 'Un mail contenant votre nouveau mot de passe vous a été envoyé');
         } else {
             $request->getSession()->getFlashBag()->add('popup-message', 'Erreur lors de l\'envoi du mail');
         }
     }
     return $this->render('jcUserBundle:FO:password.html.twig');
 }
Example #2
0
 /**
  * @Route("/admin/user/edit/{id}", defaults={"id" = 0}, name="jc_user_bo_edit")
  */
 public function editAction(Request $request, $id)
 {
     $entityManager = $this->getDoctrine()->getManager();
     $user = $id > 0 ? $entityManager->getRepository('jcUserBundle:User')->find($id) : new User();
     // If user has submit form => save user
     if ($request->getMethod() == 'POST') {
         try {
             // Keep initial password for further use...
             $initialPassword = $user->getPassword();
             $form = $this->createForm(new UserType(), $user);
             $form->handleRequest($request);
             $generatePassword = $request->request->get('generate-password');
             if ($generatePassword) {
                 $user->setPassword(PasswordUtil::generatePassword(6, true, true, true, false));
             } else {
                 // For new user or if password changed => check password security + password confirmation
                 if (!$user->getId() || strlen($user->getPassword()) > 0) {
                     if (!ValidateUtil::checkPassword($user->getPassword(), 1)) {
                         $form->get('password')->addError(new FormError("Le mot de passe n'est pas assez fort"));
                     } else {
                         if (strcmp($user->getPassword(), $user->getConfirmPassword()) != 0) {
                             $form->get('confirmPassword')->addError(new FormError("La confirmation du mot de passe n'est pas correcte"));
                         }
                     }
                 }
             }
             if ($form->isValid()) {
                 // For generated password, new user or new password => Encode password using SHA
                 if ($generatePassword || !$user->getId() || strlen($user->getPassword()) > 0) {
                     $user->setPassword(PasswordUtil::encodePassword($user->getPassword()));
                 } else {
                     $user->setPassword($initialPassword);
                 }
                 $entityManager->persist($user);
                 $entityManager->flush();
                 $request->getSession()->getFlashBag()->add('bo-log-message', 'Sauvegarde OK');
                 // If account must be sent to user => update password + send mail
                 if ($request->request->get('generate-password')) {
                     $accountMailService = $this->get('jc_user.account_mail');
                     if ($accountMailService->sendNewAccountInformation($user->getId(), true)) {
                         $request->getSession()->getFlashBag()->add('bo-log-message', 'Envoi du mail à l\'utilisateur OK');
                     } else {
                         $request->getSession()->getFlashBag()->add('bo-error-message', 'Erreur lors de l\'envoi du mail');
                     }
                 }
                 return $this->redirect($this->generateUrl('jc_user_bo_list'));
             } else {
                 $request->getSession()->getFlashBag()->add('bo-warning-message', 'Certains champs ne sont pas remplis correctement');
             }
         } catch (Exception $e) {
             $request->getSession()->getFlashBag()->add('bo-error-message', 'Erreur lors de la sauvegarde');
         }
     } else {
         // Erase password information
         $user->setPassword('');
         $form = $this->createForm(new UserType(), $user);
     }
     // Get role list to select user's role
     $roleList = $this->getDoctrine()->getManager()->getRepository('jcUserBundle:Role')->findAll();
     return $this->render('jcUserBundle:BO:edit.html.twig', array('userToEdit' => $form->createView(), 'roleList' => $roleList));
 }