netgescon-master/database/seeders/TestRoleSeeder.php
Pikappa2 1b884feda5 v0.7 - UI Universale e Sistema Database Modernizzato
 Completato:
- Database modernizzato con chiavi id standard Laravel
- Relazioni corrette Amministratore→Stabili→Movimenti
- UI universale responsive con sidebar permission-based
- Codici alfanumerici 8 caratteri implementati
- Seeders con dati di test funzionanti
- Documentazione tecnica completa (INSTALL_LINUX, TECHNICAL_SPECS, UPDATE_SYSTEM)

🔧 Miglioramenti:
- Helper userSetting() funzionante
- Sistema multi-database preparato
- .gitignore aggiornato per sicurezza
- Migration cleanup e ottimizzazione

📚 Documentazione:
- Guida installazione Linux completa
- Specifiche tecniche dettagliate
- Sistema aggiornamenti progettato
- Progress log aggiornato
2025-07-07 17:24:30 +02:00

75 lines
2.5 KiB
PHP

<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
use App\Models\User;
use App\Models\Amministratore;
use Spatie\Permission\Models\Role;
class TestRoleSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
// Crea i ruoli se non esistono
$superAdminRole = Role::firstOrCreate(['name' => '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;
}
}