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'); }
/** * @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)); }