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