Rework admin panel and other

This commit is contained in:
F4ilji
2025-04-02 18:37:20 +05:00
parent 49072e50c7
commit 5cd6ff11b5
198 changed files with 9715 additions and 6664 deletions
@@ -0,0 +1,47 @@
<?php
namespace App\Http\Middleware;
use App\Models\CustomForm;
use Carbon\Carbon;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class FormTimePeriodMiddleware
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
$form = CustomForm::select('settings')->find($request->route('id'));
if (!$form) {
abort(Response::HTTP_NOT_FOUND, 'Form not found');
}
if (!isset($form->settings['period'])) {
abort(Response::HTTP_BAD_REQUEST, 'Invalid form settings');
}
$period = $form->settings['period'];
try {
$start_time = Carbon::parse($period['start_time']);
$end_time = Carbon::parse($period['end_time']);
} catch (\Exception $e) {
abort(Response::HTTP_BAD_REQUEST, 'Invalid time format');
}
$now = Carbon::now();
if ($now >= $start_time && $now <= $end_time) {
return $next($request);
}
abort(Response::HTTP_FORBIDDEN, 'Form is not available at this time');
}
}
+11 -19
View File
@@ -4,6 +4,7 @@ namespace App\Http\Middleware;
use App\Http\Resources\ClientNavigationResource;
use App\Models\MainSection;
use App\Services\App\Breadcrumb\BreadcrumbService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Inertia\Middleware;
@@ -11,28 +12,16 @@ use Tightenco\Ziggy\Ziggy;
class HandleInertiaRequests extends Middleware
{
/**
* The root template that is loaded on the first page visit.
*
* @var string
*/
protected $rootView = 'app';
/**
* Determine the current asset version.
*/
public function version(Request $request): string|null
public function version(Request $request): ?string
{
return parent::version($request);
}
/**
* Define the props that are shared by default.
*
* @return array<string, mixed>
*/
public function share(Request $request): array
{
// Навигация (кешированная)
$navigation = Cache::remember('navigation', now()->addHours(1), function () {
return ClientNavigationResource::collection(
MainSection::with('subSections.pages.section')
@@ -41,6 +30,9 @@ class HandleInertiaRequests extends Middleware
);
});
// Хлебные крошки (автоматически по текущему URL)
$breadcrumbs = app(BreadcrumbService::class)->generateBreadcrumbs();
return [
...parent::share($request),
'auth' => [
@@ -51,13 +43,13 @@ class HandleInertiaRequests extends Middleware
'location' => $request->url(),
],
'navigation' => $navigation,
'urlPrev' => function() {
if (url()->previous() !== '' && url()->previous() !== url()->current()) {
'breadcrumbs' => $breadcrumbs, // Добавляем хлебные крошки
'urlPrev' => function () {
if (url()->previous() !== url()->current()) {
return url()->previous();
} else {
return 'empty';
}
return 'empty';
},
];
}
}
}