'crm.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 and company_manager roles foreach (['admin', 'company_manager'] as $roleName) { $role = Role::where('name', $roleName)->where('guard_name', 'web')->first(); if ($role && ! $role->hasPermissionTo($permission)) { $role->givePermissionTo($permission); } } } } public function down() { $permissionNames = ['crm.settings']; Permission::whereIn('name', $permissionNames)->get() ->each(function ($permission) { Role::whereIn('name', ['admin', 'company_manager']) ->where('guard_name', 'web') ->get() ->each(function ($role) use ($permission) { if ($role->hasPermissionTo($permission)) { $role->revokePermissionTo($permission); } }); }); } }