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