rater/src/Controller/AccountController.php
2026-06-02 22:26:03 +00:00

68 lines
2.1 KiB
PHP

<?php
namespace App\Controller;
use App\Entity\User;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
class AccountController extends AbstractController
{
#[Route('/account/login')]
public function login(AuthenticationUtils $authUtils): Response
{
$error = $authUtils->getLastAuthenticationError();
$lastUsername = $authUtils->getLastUsername();
return $this->render('account/login.html.twig', [
'last_username' => $lastUsername,
'error' => $error,
]);
}
#[Route('/account/register')]
public function register(
Request $request,
UserPasswordHasherInterface $passwordHasher,
EntityManagerInterface $em,
): Response {
$user = new User();
$form = $this->createFormBuilder($user)
->add('email', EmailType::class)
->add('password', PasswordType::class)
->add('password_again', PasswordType::class, [
'mapped' => false,
])
->add('register', SubmitType::class)
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$plaintextPassword = $form->get('password')->getData();
$hashedPassword = $passwordHasher->hashPassword(
$user,
$plaintextPassword
);
$user->setPassword($hashedPassword);
$em->persist($user);
$em->flush();
return $this->redirectToRoute('app_account_login');
}
return $this->render('account/register.html.twig', [
'form' => $form,
]);
}
}