166 lines
5.0 KiB
PHP
166 lines
5.0 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use Illuminate\Database\Seeder;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use App\Models\User;
|
|
use Spatie\Permission\Models\Role;
|
|
|
|
class CompleteUsersSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Run the database seeds.
|
|
*/
|
|
public function run(): void
|
|
{
|
|
$this->command->info('🚀 Inizializzazione utenti completi per NetGesCon Laravel...');
|
|
|
|
// Assicuriamoci che tutti i ruoli esistano
|
|
$this->createRoles();
|
|
|
|
// Crea utenti aggiuntivi per i test
|
|
$this->createAdditionalUsers();
|
|
|
|
$this->command->info('✅ Seeder utenti completo terminato con successo!');
|
|
}
|
|
|
|
/**
|
|
* Crea tutti i ruoli necessari
|
|
*/
|
|
private function createRoles(): void
|
|
{
|
|
$roles = [
|
|
'super-admin' => 'Super Amministratore',
|
|
'amministratore' => 'Amministratore Condominio',
|
|
'collaboratore' => 'Collaboratore Amministratore',
|
|
'condomino' => 'Condomino/Proprietario',
|
|
'fornitore' => 'Fornitore di Servizi',
|
|
'inquilino' => 'Inquilino',
|
|
'servizi' => 'Servizi Tecnici',
|
|
'ospite' => 'Ospite (Solo Lettura)',
|
|
];
|
|
|
|
foreach ($roles as $roleName => $description) {
|
|
Role::firstOrCreate(['name' => $roleName, 'guard_name' => 'web']);
|
|
$this->command->info("✓ Ruolo creato: {$roleName} ({$description})");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Crea utenti aggiuntivi per completare i test
|
|
*/
|
|
private function createAdditionalUsers(): void
|
|
{
|
|
$additionalUsers = [
|
|
// Collaboratori
|
|
[
|
|
'name' => 'Collaboratore Test',
|
|
'email' => 'collaboratore@example.com',
|
|
'password' => 'password',
|
|
'role' => 'collaboratore'
|
|
],
|
|
|
|
// Fornitori
|
|
[
|
|
'name' => 'Fornitore Test',
|
|
'email' => 'fornitore@example.com',
|
|
'password' => 'password',
|
|
'role' => 'fornitore'
|
|
],
|
|
[
|
|
'name' => 'Ditta Pulizie',
|
|
'email' => 'pulizie@example.com',
|
|
'password' => 'password',
|
|
'role' => 'fornitore'
|
|
],
|
|
[
|
|
'name' => 'Ditta Manutenzione',
|
|
'email' => 'manutenzione@example.com',
|
|
'password' => 'password',
|
|
'role' => 'fornitore'
|
|
],
|
|
[
|
|
'name' => 'Tecnici Impianti',
|
|
'email' => 'impianti@example.com',
|
|
'password' => 'password',
|
|
'role' => 'fornitore'
|
|
],
|
|
|
|
// Servizi
|
|
[
|
|
'name' => 'Servizio Tecnico',
|
|
'email' => 'servizi@example.com',
|
|
'password' => 'password',
|
|
'role' => 'servizi'
|
|
],
|
|
[
|
|
'name' => 'Portiere Test',
|
|
'email' => 'portiere@example.com',
|
|
'password' => 'password',
|
|
'role' => 'servizi'
|
|
],
|
|
|
|
// Ospiti
|
|
[
|
|
'name' => 'Ospite Test',
|
|
'email' => 'ospite@example.com',
|
|
'password' => 'password',
|
|
'role' => 'ospite'
|
|
],
|
|
|
|
// Utenti per test specifici
|
|
[
|
|
'name' => 'Test Base User',
|
|
'email' => 'test.base@example.com',
|
|
'password' => 'password',
|
|
'role' => 'amministratore'
|
|
],
|
|
[
|
|
'name' => 'Test Workflow User',
|
|
'email' => 'test.workflow@example.com',
|
|
'password' => 'password',
|
|
'role' => 'amministratore'
|
|
],
|
|
[
|
|
'name' => 'Test Permissions User',
|
|
'email' => 'test.permissions@example.com',
|
|
'password' => 'password',
|
|
'role' => 'collaboratore'
|
|
],
|
|
|
|
// API Users
|
|
[
|
|
'name' => 'API Developer',
|
|
'email' => 'api.dev@example.com',
|
|
'password' => 'password',
|
|
'role' => 'amministratore'
|
|
],
|
|
[
|
|
'name' => 'API Test User',
|
|
'email' => 'api.test@example.com',
|
|
'password' => 'password',
|
|
'role' => 'collaboratore'
|
|
],
|
|
];
|
|
|
|
foreach ($additionalUsers as $userData) {
|
|
$user = User::firstOrCreate(
|
|
['email' => $userData['email']],
|
|
[
|
|
'name' => $userData['name'],
|
|
'password' => Hash::make($userData['password']),
|
|
'email_verified_at' => now(),
|
|
]
|
|
);
|
|
|
|
// Assegna il ruolo
|
|
if (!$user->hasRole($userData['role'])) {
|
|
$user->assignRole($userData['role']);
|
|
}
|
|
|
|
$this->command->info("✓ Utente creato: {$user->name} ({$user->email}) - Ruolo: {$userData['role']}");
|
|
}
|
|
}
|
|
}
|