<?php
declare(strict_types=1);
/**
* @author Mehrez Labidi
*/
namespace App\Security;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface;
use App\Helper\Utils;
class AuthenticationEntryPoint implements AuthenticationEntryPointInterface {
/**
*
* @var type
*/
private $urlGenerator;
/**
*
* @param UrlGeneratorInterface $urlGenerator
*/
public function __construct(UrlGeneratorInterface $urlGenerator) {
$this->urlGenerator = $urlGenerator;
}
/**
*
* @param Request $request
* @param AuthenticationException|null $authException
* @return RedirectResponse
*/
public function start(Request $request, ?AuthenticationException $authException = null): RedirectResponse {
$referer = $request->headers->get('referer'); // previous url
$routeName = $request->attributes->get('_route'); //current route
switch ($routeName) {
case "annuaires_experts_espace_admin_index":
$request->getSession()->getFlashBag()->add('access.pour.authentifie', "Vous devez vous identifier pour pouvoir vous référencer dans l’annuaire des experts. ");
if ($referer) {
return new RedirectResponse($referer);
} else {
$session = $request->getSession();
$codePays = $session->get('codePays');
if (!$codePays) {
$codePays = ($_COOKIE["codePays"]) ? strtolower($_COOKIE["codePays"]) : "fr";
}
return new RedirectResponse($this->urlGenerator->generate('index', ['codePays' => Utils::codePaysWithoutDash($codePays)]));
}
default:
$request->getSession()->getFlashBag()->add('access.pour.authentifie', "Merci de bien vouloir vous authentifier");
$session = $request->getSession();
$codePays = $session->get('codePays');
if (!$codePays) {
$codePays = ($_COOKIE["codePays"]) ? strtolower($_COOKIE["codePays"]) : "fr";
}
return new RedirectResponse($this->urlGenerator->generate('index', ['codePays' => Utils::codePaysWithoutDash($codePays)]));
}
}
}