Symfony 3 Сброс пароля по имени пользователя / электронной почте - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь создать форму для сброса пароля, основанную на значении электронной почты, но если я ввожу свой адрес электронной почты и нажимаю кнопку отправить, моя страница обновляется только вместо отправки электронного письма на адрес, указанный в поле формы, так что Пользователь получает ссылку для смены пароля. Я хотел бы, чтобы по указанному адресу было отправлено электронное письмо со ссылкой, позволяющей пользователю изменить свой пароль.

Контроллер

 public function requestPassAction(Request $request)
{

       $tmpUser = new User();

        $em = $this->getDoctrine()->getManager();
   $form = $this->createForm('Doctix\UserBundle\Form\ForgottenUserType', $tmpUser);
    $form->handleRequest($request);


    if ($form->isSubmitted() && $form->isValid()) { 



        $user = $em->getRepository('DoctixUserBundle:User')->findOneBy(['username'=>$tmpUser->getUsername()]);
    if($user)
        {
          if ($user->getToken() === null  ) {
                /** @var $tokenGenerator TokenGeneratorInterface */
                $token = md5(uniqid($user->getUsername(), true)); //some unique token (you can create a nicer token generator in standalone class with a service)
                $user->setToken($token);
                $user->setPasswordRequestedAt(new \DateTime());
                $em->persist($user);
                $em->flush();

                $this->addFlash('Info', 'Si l utilisateur est trouvé, vous allez recevoir un mail avec des instructions.');
    $mailer = $this->get('mailer');
                $message = (new \Swift_Message('Renouvellement du mot de passe'))
                        ->setFrom("medmamtest@gmail.com")
                        ->setTo($user->getUsername())
                        ->setBody(
                                $this->renderView(
                // app/Resources/views/Emails/registration.html.twig
                                    'Resetting/request.html.twig',
                                    array('user' => $user)
            ),
            'text/html'
        );

                $mailer->send($message);
                $request->getSession()->getFlashBag()->add('success', "Un mail va vous être envoyé afin que vous puissiez renouveller votre mot de passe. Le lien que vous recevrez sera valide 24h.");

                return $this->redirectToRoute("login");
           } 
       }

       else {
              return $this->redirectToRoute("request_resetting") ;
       } 
    }
    return $this->render('Resetting/request.html.twig', array(
        'form' => $form->createView()
    ));

}

View

   {% extends "DoctixFrontBundle::layout.html.twig" %}
  {% block body %}

<div class="bg_color_2">
    <div class="container margin_60_35">

            <div class="row">

            <div id="login">


  <h1>Mot de passe oublié ?</h1>
  <p>Réinitialiser votre mot de passe en renseignant votre mail.</p>

{{form_start(form)}}
 {{form_widget(form.username)}}
 {{ form_errors(form.username) }}
{{form_end(form)}}


        </div>
        </div>

 </div>
 </div>

 {% endblock %}

Конфигурация Swiftmailer

  # Swiftmailer Configuration
swiftmailer:
   transport: "%mailer_transport%"
   auth_mode: "%mailer_auth_mode%"
   host:      "%mailer_host%"
  encryption: "%mailer_encryption%"
  port:      "%mailer_port%"
  username:  "%mailer_user%"
password:  "%mailer_password%"
spool:     { type: memory }

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...