[+] chore(root): Initialise le projet avec une structure de base Crée la structure de base du projet Symfony, incluant les entités, services, formulaires, et templates nécessaires pour la gestion des comptes utilisateurs, la sécurité, et la gestion des mots de passe oubliés. Ajoute également la configuration pour la gestion des assets avec Vite, la gestion des fichiers avec Flysystem, et la génération de sitemaps. ```
36 lines
1.3 KiB
PHP
36 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Security;
|
|
|
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
|
use Symfony\Component\HttpFoundation\RedirectResponse;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
use Symfony\Component\HttpFoundation\Session\Session;
|
|
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
|
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
|
|
use Symfony\Component\Security\Http\Authorization\AccessDeniedHandlerInterface;
|
|
use Twig\Environment;
|
|
|
|
class AccessDeniedHandler implements AccessDeniedHandlerInterface
|
|
{
|
|
public function __construct(private readonly UrlGeneratorInterface $urlGenerator, private readonly Environment $twig)
|
|
{
|
|
}
|
|
|
|
public function handle(Request $request, AccessDeniedException $accessDeniedException): Response
|
|
{
|
|
$attributes = $accessDeniedException->getAttributes();
|
|
|
|
$pathInfo = $request->getPathInfo();
|
|
if (str_contains($pathInfo, "/admin")) {
|
|
return new RedirectResponse($this->urlGenerator->generate("app_home"));
|
|
}
|
|
if (in_array('application/json', $request->getAcceptableContentTypes())) {
|
|
return new JsonResponse(null, Response::HTTP_FORBIDDEN);
|
|
}
|
|
|
|
return new JsonResponse(null, Response::HTTP_FORBIDDEN);
|
|
}
|
|
}
|