<?php
namespace App\Controller;
use App\Form\ReceivePasswordForm;
use App\Repository\UserRepository;
use App\Service\UserService;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class AccountPasswordResetController extends AbstractController
{
#[Route(path: '/remind/', name: 'receive_password')]
public function receivePassword(UserService $userService, Request $request, UserRepository $userRepository): Response
{
$user = $userRepository->findOneBy(['email' => $request->request->get("email")]);
if ($user) {
$userService->saveReceiveCode($user);
return $this->render('security/receive_password_sent.twig');
}
return $this->render('security/receive_password.twig', [
'email' => $request->request->get("email")
]);
}
#[Route(path: '/account/remind/{id}/{code}/', name: 'receive_password_confirmation', methods: ['GET', 'POST'])]
public function receiveConfirmation(
Request $request,
UserService $userService,
string $id,
string $code
): Response {
$user = $userService->findUserByIdAndConfirmationCode((int)$id, $code);
if (!$user) {
return $this->redirectToRoute('login');
}
$form = $this->createForm(ReceivePasswordForm::class, $user);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$user = $form->getData();
$userService->receivePassword($user);
return $this->render('security/receive_password_success.twig');
}
return $this->render('security/receive_password_edit.twig', ['form' => $form->createView()]);
}
}