Files
my-projects-website/app/application/app/Http/Middleware/ProjectAndLanguage.php
Leonid Nikitin 224240708d The cache was not cleared when saving
Clearing the cache using tags did not work correctly. Had to abandon them.
2025-08-22 16:14:22 +05:00

49 lines
1.5 KiB
PHP

<?php declare(strict_types=1);
namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Symfony\Component\HttpFoundation\Response;
use Closure;
final class ProjectAndLanguage extends ProjectLanguage
{
public function handle(Request $request, Closure $next): Response
{
$projectCode = $request->route()?->parameter('project');
if ($projectCode === null) {
abort(Response::HTTP_NOT_FOUND);
}
$seconds = 3600;
$project = Cache::remember(self::class . $projectCode, $seconds, function () use ($projectCode) {
return $this->projectRepository->getProjectByCode($projectCode) ?? false;
});
if ($project === false) {
abort(Response::HTTP_NOT_FOUND);
}
if (
$project->http_host !== null
&& $project->http_host !== $request->getSchemeAndHttpHost()
) {
return redirect($project->http_host, 302);
}
$languageCode = $request->route()?->parameter('language');
$websiteTranslations = $this->getWebsiteTranslations($project, $languageCode);
if (\is_null($websiteTranslations)) {
abort(Response::HTTP_NOT_FOUND);
}
unset($request->route()->parameters['project']);
unset($request->route()->parameters['language']);
$request->attributes->set('project', $project);
$request->attributes->set('websiteTranslations', $websiteTranslations);
return $next($request);
}
}