diff --git a/app/Filament/Tenant/Resources/WorkOrderResource/Pages/CreateWorkOrder.php b/app/Filament/Tenant/Resources/WorkOrderResource/Pages/CreateWorkOrder.php index d0fe166..3d1eff6 100644 --- a/app/Filament/Tenant/Resources/WorkOrderResource/Pages/CreateWorkOrder.php +++ b/app/Filament/Tenant/Resources/WorkOrderResource/Pages/CreateWorkOrder.php @@ -14,7 +14,8 @@ class CreateWorkOrder extends CreateRecord protected function mutateFormDataBeforeCreate(array $data): array { $companyId = app(TenantManager::class)->currentId(); - $data['number'] = WorkOrder::generateNumber($companyId); + $data['number'] = WorkOrder::generateNumber($companyId); + $data['company_id'] = $companyId; // explicit — prevents Octane singleton race condition return $data; } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index e2ba0a9..60d8a23 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -10,7 +10,10 @@ class AppServiceProvider extends ServiceProvider { public function register(): void { - $this->app->singleton(TenantManager::class); + // scoped() instead of singleton() so Octane/FrankenPHP flushes the + // TenantManager between requests, preventing cross-request contamination + // where a concurrent request's tenant overwrites another request's context. + $this->app->scoped(TenantManager::class); } public function boot(): void