'admin@demo.local', 'tenant_subdomain' => 'demo', // оставляем существующий тенант 'org_name' => null, // null = взять из существующего 'create_new_tenant' => false, ], [ 'email' => 'manager1@demo.local', 'tenant_subdomain' => 'ivan-demo', 'org_name' => 'Компания Ивана', 'create_new_tenant' => true, ], [ 'email' => 'manager2@demo.local', 'tenant_subdomain' => 'anna-demo', 'org_name' => 'Компания Анны', 'create_new_tenant' => true, ], [ 'email' => 'manager3@demo.local', 'tenant_subdomain' => 'petr-demo', 'org_name' => 'Компания Петра', 'create_new_tenant' => true, ], [ 'email' => 'manager4@demo.local', 'tenant_subdomain' => 'mariya-demo', 'org_name' => 'Компания Марии', 'create_new_tenant' => true, ], ]; // ------------------------------------------------------------------- // 3. Создаём тенанты и переназначаем пользователей // ------------------------------------------------------------------- foreach ($accounts as $a) { $user = User::query()->where('email', $a['email'])->firstOrFail(); if (! $a['create_new_tenant']) { // Demo Admin остаётся в tenant "demo" $tenant = Tenant::query()->where('subdomain', $a['tenant_subdomain'])->firstOrFail(); echo "SKIP {$user->email} → тенант «{$tenant->organization_name}» (id={$tenant->id}) — без изменений\n"; continue; } // Создаём новый тенант, если ещё не существует $tenant = Tenant::query()->firstOrCreate( ['subdomain' => $a['tenant_subdomain']], [ 'organization_name' => $a['org_name'], 'contact_email' => $user->email, 'timezone' => 'Europe/Moscow', 'locale' => 'ru', 'is_trial' => true, 'api_key_limit' => 5, ] ); // Переназначаем пользователя в новый тенант $user->tenant_id = $tenant->id; $user->save(); echo "OK {$user->email} → новый тенант «{$tenant->organization_name}» (id={$tenant->id}, subdomain={$tenant->subdomain})\n"; } // ------------------------------------------------------------------- // 4. Итоговый отчёт // ------------------------------------------------------------------- echo "\n=== ИТОГО: изоляция тенантов ===\n"; $tenants = Tenant::query() ->whereIn('subdomain', ['demo', 'ivan-demo', 'anna-demo', 'petr-demo', 'mariya-demo']) ->orderBy('id') ->get(); foreach ($tenants as $t) { $users = User::query()->where('tenant_id', $t->id)->pluck('email')->implode(', '); $projects = Project::query()->where('tenant_id', $t->id)->count(); echo sprintf( " Тенант %-12s (id=%-2d) — пользователи: %-40s | проектов: %d\n", $t->subdomain, $t->id, $users ?: '(нет)', $projects ); } echo "\nГотово. Каждый логин теперь в отдельной компании.\n"; echo "Пароль для всех: password\n";