Команда make:reset-password
Команда make:reset-password создаёт классы и шаблоны
для реализации сброса пароля. Она генерирует контроллер
с маршрутами для запроса сброса и установки нового пароля,
форму, шаблоны писем и добавляет необходимые настройки
в конфигурацию безопасности. Команда не принимает
обязательных аргументов.
Синтаксис
php bin/console make:reset-password
Пример
Давайте выполним команду в корне проекта:
php bin/console make:reset-password
После запуска команда задаст несколько вопросов о том, какой класс пользователя использовать и как настроить отправку писем.
Which user class should be used for password reset? [App\Entity\User]:
> App\Entity\User
Do you want to send the reset link via email? (yes/no) [yes]:
> yes
Success!
Next:
1. Check the new controller at src/Controller/ResetPasswordController.php
2. Add the ResetPasswordRequest entity to your schema
3. Configure the mailer to send emails
Пример
После генерации в проекте появится контроллер с маршрутами для сброса пароля:
<?php
namespace App\Controller;
use App\Entity\User;
use App\Form\ChangePasswordFormType;
use App\Form\ResetPasswordRequestFormType;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Address;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Contracts\Translation\TranslatorInterface;
use SymfonyCasts\Bundle\ResetPassword\Controller\ResetPasswordControllerTrait;
use SymfonyCasts\Bundle\ResetPassword\Exception\ResetPasswordExceptionInterface;
use SymfonyCasts\Bundle\ResetPassword\ResetPasswordHelperInterface;
#[Route('/reset-password')]
class ResetPasswordController extends AbstractController
{
use ResetPasswordControllerTrait;
public function __construct(
private ResetPasswordHelperInterface $resetPasswordHelper,
private EntityManagerInterface $entityManager,
) {
}
#[Route('', name: 'app_forgot_password_request')]
public function request(Request $request, MailerInterface $mailer, TranslatorInterface $translator): Response
{
$form = $this->createForm(ResetPasswordRequestFormType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
return $this->processSendingPasswordResetEmail(
$form->get('email')->getData(),
$mailer,
$translator
);
}
return $this->render('reset_password/request.html.twig', [
'requestForm' => $form,
]);
}
}
?>
Результат выполнения кода для адреса /reset-password:
<form method="post">
<label for="email">Email</label>
<input type="email" id="email" name="email" required>
<button type="submit">Send reset link</button>
</form>
Пример
Команда также создаёт сущность для хранения запросов на сброс пароля:
<?php
namespace App\Entity;
use App\Repository\ResetPasswordRequestRepository;
use Doctrine\ORM\Mapping as ORM;
use SymfonyCasts\Bundle\ResetPassword\Model\ResetPasswordRequestInterface;
use SymfonyCasts\Bundle\ResetPassword\Model\ResetPasswordRequestTrait;
#[ORM\Entity(repositoryClass: ResetPasswordRequestRepository::class)]
class ResetPasswordRequest implements ResetPasswordRequestInterface
{
use ResetPasswordRequestTrait;
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
#[ORM\ManyToOne]
#[ORM\JoinColumn(nullable: false)]
private ?User $user = null;
public function __construct(User $user, \DateTimeInterface $expiresAt, string $selector, string $hashedToken)
{
$this->user = $user;
$this->initialize($expiresAt, $selector, $hashedToken);
}
public function getId(): ?int
{
return $this->id;
}
public function getUser(): User
{
return $this->user;
}
}
?>
Смотрите также
-
команда
make:user,
которая создаёт класс пользователя -
команда
make:auth,
которая генерирует систему аутентификации -
команда
make:registration-form,
которая создаёт форму регистрации -
команда
make:migration,
которая создаёт миграцию для сущностей