diff --git a/cp/app/Controllers/HomeController.php b/cp/app/Controllers/HomeController.php index a35cb4a..dbbd9a1 100644 --- a/cp/app/Controllers/HomeController.php +++ b/cp/app/Controllers/HomeController.php @@ -9,10 +9,10 @@ use Psr\Container\ContainerInterface; class HomeController extends Controller { - public function index(Request $request, Response $response) - { + public function index(Request $request, Response $response) + { return view($response,'index.twig'); - } + } public function dashboard(Request $request, Response $response) { @@ -20,21 +20,21 @@ class HomeController extends Controller $users = $userModel->getAllUsers(); return view($response,'admin/dashboard/index.twig', compact('users')); } - + public function mode(Request $request, Response $response) { - if ($_SESSION['_screen_mode'] == 'dark') { - $_SESSION['_screen_mode'] = 'light'; - } else { - $_SESSION['_screen_mode'] = 'dark'; - } + if ($_SESSION['_screen_mode'] == 'dark') { + $_SESSION['_screen_mode'] = 'light'; + } else { + $_SESSION['_screen_mode'] = 'dark'; + } $referer = $request->getHeaderLine('Referer'); if (!empty($referer)) { return $response->withHeader('Location', $referer)->withStatus(302); } return $response->withHeader('Location', '/dashboard')->withStatus(302); } - + public function avatar(Request $request, Response $response) { $avatar = new \LasseRafn\InitialAvatarGenerator\InitialAvatar(); @@ -44,4 +44,19 @@ class HomeController extends Controller return $psrResponse; } + + public function lang(Request $request, Response $response) + { + $data = $request->getQueryParams(); + if (!empty($data)) { + $_SESSION['_lang'] = array_key_first($data); + } else { + unset($_SESSION['_lang']); + } + $referer = $request->getHeaderLine('Referer'); + if (!empty($referer)) { + return $response->withHeader('Location', $referer)->withStatus(302); + } + return $response->withHeader('Location', '/dashboard')->withStatus(302); + } } diff --git a/cp/bootstrap/app.php b/cp/bootstrap/app.php index cba80f2..71ec939 100644 --- a/cp/bootstrap/app.php +++ b/cp/bootstrap/app.php @@ -44,11 +44,18 @@ $routeParser = $app->getRouteCollector()->getRouteParser(); require_once __DIR__ . '/database.php'; -$desiredLanguage = 'en_US'; // Default language +// Known set of languages +$allowedLanguages = ['en_US', 'uk_UA', 'es_ES']; // Add more as needed -// Check for a URL parameter -if (isset($_GET['lang'])) { - $desiredLanguage = $_GET['lang']; +if (isset($_SESSION['_lang']) && in_array($_SESSION['_lang'], $allowedLanguages)) { + // Use regex to validate the format: two letters, underscore, two letters + if (preg_match('/^[a-z]{2}_[A-Z]{2}$/', $_SESSION['_lang'])) { + $desiredLanguage = $_SESSION['_lang']; + } else { + $desiredLanguage = 'en_US'; + } +} else { + $desiredLanguage = 'en_US'; } $languageFile = '../lang/' . $desiredLanguage . '/messages.po'; diff --git a/cp/resources/views/layouts/app.twig b/cp/resources/views/layouts/app.twig index e11ca0f..544fd79 100644 --- a/cp/resources/views/layouts/app.twig +++ b/cp/resources/views/layouts/app.twig @@ -30,10 +30,13 @@