gps_system/database/seeders/RolePermissionSeeder.php
sackey 6b878bb0a0
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
Initial commit
2025-09-12 16:19:56 +00:00

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',
]);
}
}