From 0272f077a8d34292c7da31d86f10473a8f51aad6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rapha=C3=ABl=20Gertz?= Date: Wed, 11 Dec 2019 04:49:24 +0100 Subject: [PATCH] Add required context for template Cleanup Avoid double translation --- Security/AccessDeniedHandler.php | 44 ++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/Security/AccessDeniedHandler.php b/Security/AccessDeniedHandler.php index 5494fb0..d637ee5 100644 --- a/Security/AccessDeniedHandler.php +++ b/Security/AccessDeniedHandler.php @@ -7,6 +7,7 @@ use Symfony\Component\HttpFoundation\Response; 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; @@ -14,32 +15,45 @@ class AccessDeniedHandler implements AccessDeniedHandlerInterface { //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'); @@ -47,22 +61,20 @@ class AccessDeniedHandler implements AccessDeniedHandlerInterface { $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'; - } } -- 2.41.1