<?php
namespace App\Controller\Client;
use App\Entity\Customer\Customer;
use App\Events;
use App\Repository\Customer\CustomerRepository;
use EWZ\SymfonyAdminBundle\Event\ObjectEvent;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/client/resetting")
*/
class ResettingController extends AbstractController
{
/**
* Request reset user password: show form.
*
* @Route("/", name="client_resetting_request")
*
* @return Response
*/
public function index(): Response
{
return $this->render('client/resetting/request.html.twig');
}
/**
* Request reset customer password: submit form and send email.
*
* @Route("/send-email", name="client_resetting_send_email", methods="POST")
*
* @param Request $request
* @param EventDispatcherInterface $eventDispatcher
* @param CustomerRepository $customerRepository
*
* @return Response
*/
public function sendEmail(Request $request, EventDispatcherInterface $eventDispatcher, CustomerRepository $customerRepository): Response
{
$email = $request->request->get('email');
/** @var Customer $customer */
if ($customer = $customerRepository->findOneBy(['email' => $email])) {
if (!$customer->getPassword()) {
return $this->redirectToRoute('client_resetting_request');
}
$event = new ObjectEvent($customer);
$eventDispatcher->dispatch($event, Events::EMAIL_CLIENT_LOGIN_CREDENTIAL);
$this->addFlash('success', 'resetting.password_reset_sent');
return $this->redirectToRoute('client_security_login');
}
$this->addFlash('error', 'resetting.wrong_email');
return $this->redirectToRoute('client_resetting_request');
}
}