142 lines
4.3 KiB
PHP
142 lines
4.3 KiB
PHP
<?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 RolePermissionSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Run the database seeds.
|
|
*/
|
|
public function run(): void
|
|
{
|
|
// Reset cached roles and permissions
|
|
app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();
|
|
|
|
// Create permissions
|
|
$permissions = [
|
|
// Device permissions
|
|
'view devices',
|
|
'create devices',
|
|
'edit devices',
|
|
'delete devices',
|
|
|
|
// Tracking permissions
|
|
'view tracking',
|
|
'live tracking',
|
|
|
|
// Geofence permissions
|
|
'view geofences',
|
|
'create geofences',
|
|
'edit geofences',
|
|
'delete geofences',
|
|
|
|
// Event permissions
|
|
'view events',
|
|
'acknowledge events',
|
|
'delete events',
|
|
|
|
// Report permissions
|
|
'view reports',
|
|
'export reports',
|
|
|
|
// Command permissions
|
|
'send commands',
|
|
'view commands',
|
|
|
|
// User management
|
|
'view users',
|
|
'create users',
|
|
'edit users',
|
|
'delete users',
|
|
|
|
// Group management
|
|
'view groups',
|
|
'create groups',
|
|
'edit groups',
|
|
'delete groups',
|
|
|
|
// Driver management
|
|
'view drivers',
|
|
'create drivers',
|
|
'edit drivers',
|
|
'delete drivers',
|
|
|
|
// System administration
|
|
'admin panel',
|
|
'system settings',
|
|
'api management',
|
|
];
|
|
|
|
foreach ($permissions as $permission) {
|
|
Permission::create(['name' => $permission]);
|
|
}
|
|
|
|
// Create roles and assign permissions
|
|
|
|
// Super Admin Role
|
|
$superAdmin = Role::create(['name' => 'super-admin']);
|
|
$superAdmin->givePermissionTo(Permission::all());
|
|
|
|
// Admin Role
|
|
$admin = Role::create(['name' => 'admin']);
|
|
$admin->givePermissionTo([
|
|
'view devices', 'create devices', 'edit devices', 'delete devices',
|
|
'view tracking', 'live tracking',
|
|
'view geofences', 'create geofences', 'edit geofences', 'delete geofences',
|
|
'view events', 'acknowledge events',
|
|
'view reports', 'export reports',
|
|
'send commands', 'view commands',
|
|
'view users', 'create users', 'edit users',
|
|
'view groups', 'create groups', 'edit groups', 'delete groups',
|
|
'view drivers', 'create drivers', 'edit drivers', 'delete drivers',
|
|
]);
|
|
|
|
// Fleet Manager Role
|
|
$fleetManager = Role::create(['name' => 'fleet-manager']);
|
|
$fleetManager->givePermissionTo([
|
|
'view devices', 'edit devices',
|
|
'view tracking', 'live tracking',
|
|
'view geofences', 'create geofences', 'edit geofences',
|
|
'view events', 'acknowledge events',
|
|
'view reports', 'export reports',
|
|
'send commands', 'view commands',
|
|
'view drivers', 'create drivers', 'edit drivers',
|
|
'view groups',
|
|
]);
|
|
|
|
// Operator Role
|
|
$operator = Role::create(['name' => 'operator']);
|
|
$operator->givePermissionTo([
|
|
'view devices',
|
|
'view tracking', 'live tracking',
|
|
'view geofences',
|
|
'view events', 'acknowledge events',
|
|
'view reports',
|
|
'view commands',
|
|
'view drivers',
|
|
]);
|
|
|
|
// User Role (basic user with limited permissions)
|
|
$user = Role::create(['name' => 'user']);
|
|
$user->givePermissionTo([
|
|
'view devices',
|
|
'view tracking',
|
|
'view events',
|
|
'view reports',
|
|
]);
|
|
|
|
// Driver Role (for drivers who only need to see their assigned vehicle)
|
|
$driver = Role::create(['name' => 'driver']);
|
|
$driver->givePermissionTo([
|
|
'view devices',
|
|
'view tracking',
|
|
'view events',
|
|
]);
|
|
}
|
|
}
|