Files
ludikevent_crm/src/Security/AccessDeniedHandler.php
Serreau Jovann 662bb0bcc6 ```
[+] 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.
```
2025-12-11 17:22:26 +01:00

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);
}
}