Repository URL to install this package:
|
Version:
6.2.10 ▾
|
<?php
namespace DigitalAscetic\BaseUserBundle\Controller;
use DigitalAscetic\BaseUserBundle\Entity\AbstractBaseUser;
use DigitalAscetic\BaseUserBundle\Form\ResetPasswordRequestType;
use DigitalAscetic\BaseUserBundle\Form\ResetPasswordType;
use DigitalAscetic\BaseUserBundle\Service\ResetPasswordService;
use DigitalAscetic\BaseUserBundle\Service\UserManagerInterface;
use Symfony\Component\Form\Extension\HttpFoundation\HttpFoundationExtension;
use Symfony\Component\Form\Forms;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\RouterInterface;
use Twig\Environment;
class ResetController
{
public function __construct(
private Environment $twig,
private UserManagerInterface $userManager,
private ResetPasswordService $resetPasswordService,
private RouterInterface $router
)
{
}
public function resetPasswordRequest(Request $request)
{
$formFactory = Forms::createFormFactoryBuilder()
->addExtension(new HttpFoundationExtension())
->getFormFactory();
$form = $formFactory->create(ResetPasswordRequestType::class, [], []);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$email = $form->get('email')->getData();
$user = $this->userManager->findUserBy(['email' => $email]);
if ($user instanceof AbstractBaseUser) {
$this->resetPasswordService->requestResetPassword($user);
}
}
return new Response($this->twig->render('@DigitalAsceticBaseUser/reset/reset_password.html.twig', ['form' => $form->createView()]));
}
public function resetPasswordConfirm(Request $request, string $token)
{
/** @var AbstractBaseUser|bool $user */
$user = $this->resetPasswordService->validateResetPasswordToken($token);
$error = null;
if (!$user) {
$error = 'USER_NOT_FOUND';
}
$formFactory = Forms::createFormFactoryBuilder()
->addExtension(new HttpFoundationExtension())
->getFormFactory();
$form = $formFactory->create(ResetPasswordType::class, [], []);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$plainPassword = $form->get('password')->getData();
if ($user) {
$this->resetPasswordService->doResetUserPassword($user, $plainPassword);
return new RedirectResponse($this->router->generate('digital_ascetic_base_user_security_login'));
}
}
return new Response($this->twig->render(
'@DigitalAsceticBaseUser/reset/reset_password.html.twig',
[
'form' => $form->createView(),
'error' => $error,
]
));
}
}