'super-admin']); $adminRole = Role::firstOrCreate(['name' => 'amministratore']); $condominoRole = Role::firstOrCreate(['name' => 'condomino']); echo "✅ Ruoli creati: super-admin, amministratore, condomino\n"; // Crea l'utente Super Admin $superAdminUser = User::updateOrCreate([ 'email' => 'superadmin@netgescon.local' ], [ 'name' => 'Super Administrator', 'email_verified_at' => now(), 'password' => Hash::make('SuperAdminNetGesCon2025!'), ]); // Assegna il ruolo $superAdminUser->assignRole('super-admin'); echo "✅ Super Admin User creato: {$superAdminUser->email}\n"; // Crea l'amministratore associato con codice non prevedibile $adminCode = $this->generateSecureAdminCode(); $amministratore = Amministratore::updateOrCreate([ 'user_id' => $superAdminUser->id ], [ 'codice_univoco' => $adminCode, 'nome' => 'Super', 'cognome' => 'Administrator', 'denominazione_studio' => 'NetGesCon System Administration', 'email_studio' => 'superadmin@netgescon.local', ]); echo "✅ Amministratore creato con codice: {$adminCode}\n"; echo "🎯 Accesso URL: http://127.0.0.1:8000/{$adminCode}\n"; } /** * Genera un codice amministratore sicuro e non prevedibile */ private function generateSecureAdminCode(): string { // Per produzione: genera codice random sicuro // Per sviluppo: usa un codice riconoscibile ma non ovvio if (app()->environment('production')) { do { $codice = strtoupper(substr(str_shuffle('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'), 0, 8)); } while (Amministratore::where('codice_univoco', $codice)->exists()); } else { // Codice per sviluppo: non inizia con A per evitare pattern prevedibili $codice = 'SA' . strtoupper(substr(str_shuffle('BCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'), 0, 6)); } return $codice; } }