Proje dosyaları eklendi

This commit is contained in:
2026-08-29 15:53:53 +03:00
commit d3313400ca
440 changed files with 24827 additions and 0 deletions
+14
View File
@@ -0,0 +1,14 @@
<?php
namespace App\Filament\Pages\Auth;
use Filament\Auth\Pages\Login;
use Illuminate\Validation\ValidationException;
class AdminLogin extends Login
{
protected function throwFailureValidationException(): never
{
throw ValidationException::withMessages(['data.email' => __('auth.portal_denied')]);
}
}
+60
View File
@@ -0,0 +1,60 @@
<?php
namespace App\Filament\Pages;
use App\Serp\Operations\KillSwitch;
use App\Serp\Operations\SerpOperationsMetrics;
use BackedEnum;
use Filament\Notifications\Notification;
use Filament\Pages\Page;
use Filament\Support\Icons\Heroicon;
class SerpOperations extends Page
{
protected string $view = 'filament.pages.serp-operations';
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedShieldCheck;
public static function getNavigationLabel(): string
{
return __('ui.serp_operations');
}
public function getTitle(): string
{
return __('ui.serp_operations');
}
public array $summary = [];
public static function canAccess(): bool
{
return auth()->user()?->hasPermission('serp_operations.view') ?? false;
}
public function mount(SerpOperationsMetrics $metrics): void
{
$this->summary = $metrics->summary();
}
public function emergencyStop(KillSwitch $kill): void
{
$this->authorizeManage();
$kill->activate('manual_emergency_stop', auth()->user());
$this->summary = app(SerpOperationsMetrics::class)->summary();
Notification::make()->title(__('operations.stopped'))->warning()->send();
}
public function clearEmergencyStop(KillSwitch $kill): void
{
$this->authorizeManage();
$kill->clear(auth()->user(), 'manual_clear');
$this->summary = app(SerpOperationsMetrics::class)->summary();
Notification::make()->title(__('operations.resumed'))->success()->send();
}
private function authorizeManage(): void
{
abort_unless(auth()->user()?->hasRole('super_admin') && auth()->user()?->hasPermission('serp_operations.emergency_stop'), 403);
}
}