netgescon-day0/database/seeders/RoleSeeder.php

153 lines
4.5 KiB
PHP
Executable File

<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
class RoleSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
// Crea i ruoli base
$roles = [
'super-admin',
'admin',
'amministratore',
'collaboratore',
'impiegato',
'fornitore',
'condomino',
'inquilino',
'proprietario'
];
foreach ($roles as $roleName) {
Role::firstOrCreate(['name' => $roleName, 'guard_name' => 'web']);
}
// Crea permissions di base + permessi granulari (menu/aree)
$permissions = [
'view-dashboard',
'manage-stabili',
'manage-condomini',
'manage-users',
'view-reports',
'manage-tickets',
'manage-accounting',
// Contabilità (granulare)
'contabilita.gestioni',
'contabilita.prima-nota',
'contabilita.regole-prima-nota',
'contabilita.casse-banche',
'contabilita.fatture-elettroniche',
'contabilita.fatture-fornitori',
'contabilita.voci-spesa',
'contabilita.preventivi',
'contabilita.registro-ra',
// Deleghe specifiche (fuori gruppo)
'contabilita.bonifici.autorizza',
];
foreach ($permissions as $permissionName) {
Permission::firstOrCreate(['name' => $permissionName, 'guard_name' => 'web']);
}
// Assegna permissions ai ruoli
$superAdmin = Role::findByName('super-admin');
$superAdmin->givePermissionTo(Permission::all());
$admin = Role::findByName('admin');
$admin->givePermissionTo([
'view-dashboard',
'manage-stabili',
'manage-condomini',
'manage-users',
'view-reports',
'manage-tickets',
'manage-accounting',
// Contabilità (granulare)
'contabilita.gestioni',
'contabilita.prima-nota',
'contabilita.regole-prima-nota',
'contabilita.casse-banche',
'contabilita.fatture-elettroniche',
'contabilita.fatture-fornitori',
'contabilita.voci-spesa',
'contabilita.preventivi',
'contabilita.registro-ra',
]);
$amministratore = Role::findByName('amministratore');
$amministratore->givePermissionTo([
'view-dashboard',
'manage-stabili',
'manage-condomini',
'manage-users',
'view-reports',
'manage-tickets',
'manage-accounting',
// Contabilità (granulare)
'contabilita.gestioni',
'contabilita.prima-nota',
'contabilita.regole-prima-nota',
'contabilita.casse-banche',
'contabilita.fatture-elettroniche',
'contabilita.fatture-fornitori',
'contabilita.voci-spesa',
'contabilita.preventivi',
'contabilita.registro-ra',
// Deleghe specifiche
'contabilita.bonifici.autorizza',
]);
$collaboratore = Role::findByName('collaboratore');
$collaboratore->givePermissionTo([
'view-dashboard',
'manage-condomini',
'view-reports',
'manage-tickets',
'manage-accounting',
// Contabilità (granulare)
'contabilita.gestioni',
'contabilita.prima-nota',
'contabilita.regole-prima-nota',
'contabilita.casse-banche',
'contabilita.fatture-elettroniche',
'contabilita.fatture-fornitori',
'contabilita.voci-spesa',
'contabilita.preventivi',
'contabilita.registro-ra',
'contabilita.bonifici.autorizza',
]);
$impiegato = Role::findByName('impiegato');
$impiegato->givePermissionTo([
'view-dashboard',
'view-reports',
]);
$fornitore = Role::findByName('fornitore');
$fornitore->givePermissionTo([
'view-dashboard',
]);
$condomino = Role::findByName('condomino');
$condomino->givePermissionTo([
'view-dashboard',
'view-reports'
]);
}
}