ldc-gen-game-web/app/Http/Middleware/CheckThemeVersion.php
2026-10-20 12:27:49 +02:00

46 lines
1.4 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Str;
use Symfony\Component\HttpFoundation\Response;
class CheckThemeVersion
{
/**
* Handle an incoming request.
*
* @param Closure(Request):Response $next
*
* @phpcs:disable Squiz.Commenting.FunctionComment.IncorrectTypeHint
*/
public function handle(Request $request, Closure $next): Response
{
// phpcs:enable
if (! app()->runningInConsole()) {
$appInfos = Cache::remember('composer', 84600, fn (): mixed => json_decode(File::get(\app_path('../composer.json'))));
// * Assert theme version does not diverge more than minor
$appVer = Str::of($appInfos->version)->explode('.');
$themeVer = Str::of(config('theme.version'))->explode('.');
if (
// * Major check
Arr::get($appVer, 0) !== Arr::get($themeVer, 0) || Arr::get($appVer, 1) !== Arr::get($themeVer, 1)
) {
Session::flash('warning', trans(
'Ce thème n\'a semble t-il pas été vérifié pour cette version du moteur'
));
}
}
return $next($request);
}
}