Пример #1
0
 /**
  * genNewPassword Action
  *
  * @param guid $id
  * @param string $code
  *
  * @return RedirectResponse|Response
  */
 public function genNewPasswordAction($id, $code)
 {
     if ($this->hasRole('IS_AUTHENTICATED_FULLY')) {
         return $this->redirect($this->generateUrl('_security_profile'));
     }
     $em = $this->getEntityManager();
     try {
         $user = null;
         $user = $em->getRepository('AcfDataBundle:User')->find($id);
         if (null != $user) {
             $now = new \DateTime('now');
             if (null == $user->getRecoveryExpiration() || $user->getRecoveryExpiration() < $now) {
                 $this->flashMsgSession('error', $this->translate('_security.genNewPassword.errorparams2'));
             } elseif ($user->getRecoveryCode() != $code) {
                 $this->flashMsgSession('error', $this->translate('_security.genNewPassword.errorparams3'));
             } else {
                 $user->setSalt(md5(uniqid(null, true)));
                 $user->setClearPassword(User::generateRandomChar(8, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'));
                 $user->setRecoveryExpiration(null);
                 $user->setRecoveryCode(null);
                 $em->persist($user);
                 $em->flush();
                 $mvars = array();
                 $mvars['user'] = $user;
                 $from = $this->getParameter('mail_from');
                 $fromName = $this->getParameter('mail_from_name');
                 $subject = $this->translate('_mail.genNewPassword.subject', array(), 'messages');
                 $message = \Swift_Message::newInstance();
                 $message->setFrom($from, $fromName);
                 $message->setTo($user->getEmail(), $user->getFullname());
                 $message->setSubject($subject);
                 $mvars['logo'] = $message->embed(\Swift_Image::fromPath($this->getParameter('kernel.root_dir') . '/../web/bundles/acfres/images/logo_acf.jpg'));
                 $message->setBody($this->renderView('AcfSecurityBundle:Mail:genNewPassword.html.twig', $mvars), 'text/html');
                 $this->sendmail($message);
                 $this->flashMsgSession('success', $this->translate('_security.genNewPassword.ok'));
             }
         } else {
             $this->flashMsgSession('error', $this->translate('_security.genNewPassword.errorparams1'));
         }
     } catch (\Exception $e) {
         $logger = $this->getLogger();
         $logger->error($e->getMessage());
         $this->flashMsgSession('error', $this->translate('_security.genNewPassword.errorparams4'));
     }
     return $this->redirect($this->generateUrl('_security_login'));
 }