netgescon-master/_BACKUP_OLD_netgescon-laravel_INACTIVE/database/seeders/TestRoleSeeder.php

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;
}
}