use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Symfony\Component\Security\Http\Authorization\AccessDeniedHandlerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Translation\TranslatorInterface;
use Twig\Environment;
//Config array
protected $config;
- //Translator instance
- protected $translator;
+ //Context array
+ protected $context;
//Environment instance
protected $environment;
+ //Translator instance
+ protected $translator;
+
/**
* {@inheritdoc}
*/
- public function __construct(ContainerInterface $container, TranslatorInterface $translator, Environment $environment) {
+ public function __construct(ContainerInterface $container, Environment $environment, RouterInterface $router, TranslatorInterface $translator, string $alias = 'rapsys_air') {
//Retrieve config
- $this->config = $container->getParameter($this->getAlias());
+ $this->config = $container->getParameter($alias);
//Set the translator
$this->translator = $translator;
//Set the environment
$this->environment = $environment;
+
+ //Set the context
+ $this->context = [
+ 'copy_long' => $translator->trans($this->config['copy']['long']),
+ 'copy_short' => $translator->trans($this->config['copy']['short']),
+ 'site_ico' => $this->config['site']['ico'],
+ 'site_logo' => $this->config['site']['logo'],
+ 'site_png' => $this->config['site']['png'],
+ 'site_svg' => $this->config['site']['svg'],
+ 'site_title' => $translator->trans($this->config['site']['title']),
+ 'site_url' => $router->generate($this->config['site']['url'])
+ ];
}
/**
* {@inheritdoc}
*/
-#use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
- #public function login(Request $request, AuthenticationUtils $authenticationUtils) {
- public function handle(Request $request, AccessDeniedException $accessDeniedException) {
+ public function handle(Request $request, AccessDeniedException $exception) {
//Set section
$section = $this->translator->trans('Access denied');
$title = $section.' - '.$this->translator->trans($this->config['site']['title']);
//Set message
- $message = $this->translator->trans($accessDeniedException->getMessage());
+ //XXX: we assume that it's already translated
+ $message = $exception->getMessage();
//Render template
return new Response(
$this->environment->render(
'@RapsysAir/security/denied.html.twig',
- ['title' => $title, 'section' => $section, 'message' => $message]
+ [
+ 'title' => $title,
+ 'section' => $section,
+ 'message' => $message
+ ]+$this->context
),
403
);
}
-
- /**
- * {@inheritdoc}
- */
- public function getAlias() {
- return 'rapsys_air';
- }
}