SuperSeller3000/src/Infrastructure/Http/Controller/Admin/LocaleSwitchController.php

32 lines
968 B
PHP
Raw Normal View History

<?php
declare(strict_types=1);
namespace App\Infrastructure\Http\Controller\Admin;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Security\Http\Attribute\IsGranted;
#[IsGranted('ROLE_USER')]
final class LocaleSwitchController extends AbstractController
{
private const array SUPPORTED = ['en', 'de'];
#[Route('/admin/locale/{locale}', name: 'admin_locale_switch', requirements: ['locale' => 'en|de'])]
public function switch(string $locale, Request $request): Response
{
if (!\in_array($locale, self::SUPPORTED, true)) {
$locale = 'en';
}
$request->getSession()->set('_locale', $locale);
$referer = $request->headers->get('referer');
return $this->redirect($referer ?: $this->generateUrl('easyadmin'));
}
}