eaa05d68c1
- Filament v5 multiFactorAuthentication enabled on both panels (App + Email) - HasAppAuthentication + HasEmailAuthentication on User and SuperAdmin - Migration: app_authentication_secret + recovery_codes + email_authentication_at - Sanctum REST API: /api/v1/login, /me, clients, vehicles, work-orders - EnsureTokenMatchesTenant middleware blocks cross-tenant token usage - CsvImportExport service: clients + vehicles bulk via plain CSV - Import/Export buttons on Client + Vehicle list pages - ApiTokens page in tenant panel (generate/revoke + last-used) - BackupAllTenantsCommand + scheduler (daily 03:00, retain 14 days) - Background scheduler in entrypoint.sh
21 lines
689 B
PHP
21 lines
689 B
PHP
<?php
|
|
|
|
use Illuminate\Console\Scheduling\Schedule;
|
|
use Illuminate\Foundation\Inspiring;
|
|
use Illuminate\Support\Facades\Artisan;
|
|
use Illuminate\Support\Facades\Schedule as ScheduleFacade;
|
|
|
|
Artisan::command('inspire', function () {
|
|
$this->comment(Inspiring::quote());
|
|
})->purpose('Display an inspiring quote');
|
|
|
|
// Daily tenant backups at 03:00 — auto-rotates after 14 days.
|
|
ScheduleFacade::command('backup:tenants --keep=14')
|
|
->dailyAt('03:00')
|
|
->withoutOverlapping()
|
|
->onOneServer();
|
|
|
|
// AI chat cleanup — keep tokens spend in check.
|
|
ScheduleFacade::command('queue:prune-batches --hours=48')->daily();
|
|
ScheduleFacade::command('queue:prune-failed --hours=72')->daily();
|