Deprecated : Constant E_STRICT is deprecated in /home/pastorz/old-espace-client/vendor/symfony/error-handler/ErrorHandler.php on line 58
Deprecated : Constant E_STRICT is deprecated in /home/pastorz/old-espace-client/vendor/symfony/error-handler/ErrorHandler.php on line 76
Symfony Profiler
<?php
namespace App\Controller ;
use App\Entity\User ;
use App\Form\LoginFormType ;
use App\Form\RegisterFormType ;
use App\Service\NotificationService ;
use App\Service\SessionService ;
use Doctrine\ORM\EntityManagerInterface ;
use Locale ;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController ;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface ;
use Symfony\Component\EventDispatcher\EventDispatcherInterface ;
use Symfony\Component\HttpFoundation\Request ;
use Symfony\Component\HttpFoundation\Response ;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface ;
use Symfony\Component\Routing\Annotation\Route ;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface ;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken ;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils ;
use Symfony\Component\Security\Http\SecurityEvents ;
use Symfony\Component\Security\Http\Util\TargetPathTrait ;
use Symfony\Contracts\Translation\TranslatorInterface ;
class LoginController extends AbstractController
{
use TargetPathTrait ;
private EntityManagerInterface $em ;
public function __construct ( EntityManagerInterface $em , private ParameterBagInterface $parameterBag , private TranslatorInterface $translator )
{
$this -> em = $em ;
}
#[Route ( '/{_locale<%app.supported_locales%>}/connexion' , name : 'app_login' )]
public function index ( Request $request , AuthenticationUtils $authenticationUtils ): Response
{
if ($this -> getUser ()) {
if ($this -> getUser ()-> isCustomer ()) {
return $this -> redirectToRoute ( 'app_account' , [ '_locale' => $this -> getUser ()-> getPreferredLocale () ?? $this -> parameterBag -> get ( 'app.default_locale' )]);
} else {
return $this -> redirectToRoute ( 'admin_dashboard' );
}
}
$redirectRoute = $this -> getTargetPath ( $request -> getSession (), 'user_secured_area' );
$error = $authenticationUtils -> getLastAuthenticationError ();
$loginForm = $this -> createForm ( LoginFormType ::class, null , array(
'lastUsername' => $authenticationUtils -> getLastUsername ()
));
return $this -> render ( 'login/index.html.twig' , [
'error' => $error ,
'form' => $loginForm -> createView (),
'redirectRoute' => $redirectRoute
]);
}
#[Route ( '/{_locale<%app.supported_locales%>}/logout' , name : 'app_logout' )]
public function logout (): void
{
throw new \LogicException ( 'This method can be blank - it will be intercepted by the logout key on your firewall.' );
}
#[Route ( '/{_locale<%app.supported_locales%>}/inscription/{userToken}' , name : 'app_register' , defaults : [ 'userToken' => null ])]
public function register ( Request $request , SessionService $sessionService , UserPasswordHasherInterface $hasher , TokenStorageInterface $tokenStorage , EventDispatcherInterface $eventDispatcher , NotificationService $notificationService , string $userToken = null ): Response
{
if ($this -> getUser ()) {
return $this -> redirectToRoute ( 'app_account' );
}
if ($userToken ) {
$sessionService -> setData ( 'register_user_token' , $userToken );
return $this -> redirectToRoute ( 'app_register' );
}
$userToken = $sessionService -> getData ( 'register_user_token' );
if ($userToken === null ) {
throw $this -> createNotFoundException ();
}
$user = null ;
if ($userToken ) {
$user = $this -> em -> getRepository ( User ::class)-> findOneByRegisterToken ( $userToken );
}
if (!$user && $userToken ) {
$this -> addFlash ( 'danger' , $this -> translator -> trans ( 'app.error.login.expiredToken' ));
$user = new User ();
}
$registerForm = $this -> createForm ( RegisterFormType ::class, $user );
$registerForm -> handleRequest ( $request );
if ($registerForm -> isSubmitted () && $registerForm -> isValid ()) {
/** @var User $user */
$user = $registerForm -> getData ();
$user -> setPassword ( $hasher -> hashPassword (
$user ,
$user -> getPassword ()
));
if ($user -> getPhone ()[ 0 ] != '+' ) {
$user -> setPhone ( '+33' . substr ( $user -> getPhone (), 1 ));
}
$user -> setRoles (array( User :: ROLE_USER ));
$user -> getBillingAddress ()-> setUser ( $user );
$user -> setDeliveryAddress ( $user -> getBillingAddress ());
$user -> setRegisterToken ( null );
$this -> em -> persist ( $user );
$this -> em -> flush ();
$notificationService -> sendNewUserEmail ( $user );
$token = new UsernamePasswordToken ( $user , null , 'main' , $user -> getRoles ());
$tokenStorage -> setToken ( $token );
$event = new SecurityEvents ();
$eventDispatcher -> dispatch ( $event , SecurityEvents :: INTERACTIVE_LOGIN );
return $this -> redirectToRoute ( 'app_account' );
}
return $this -> render ( 'login/register.html.twig' , array(
'form' => $registerForm -> createView ()
));
}
}