'admin.settings', 'perm_group' => 'Settings'], ['name' => 'user.settings', 'perm_group' => 'Settings'], ]; foreach ($permissions as $permData) { // Create the permission if it does not exist $permission = Permission::firstOrCreate( ['name' => $permData['name'], 'guard_name' => 'web'], ['perm_group' => $permData['perm_group']] ); // Assign it to the Admin role if ($admin = Role::where('name', 'admin')->first()) { $admin->givePermissionTo($permission); } // Assign it to all Company Manager roles Role::where('name', 'company_manager')->get() ->each(fn ($role) => $role->givePermissionTo($permission)); } } public function down() { $permissionNames = ['admin.settings', 'user.settings']; Permission::whereIn('name', $permissionNames)->get() ->each(function ($permission) { Role::whereIn('name', ['admin', 'company_manager']) ->get() ->each(fn ($role) => $role->revokePermissionTo($permission)); }); } };