|
|
@@ -203,10 +203,29 @@ class RbacSeeder extends Seeder
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- $role->permissions()->sync($sync);
|
|
|
+ if ($this->rolePermissionsChanged($role, $sync)) {
|
|
|
+ $role->permissions()->sync($sync);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private function rolePermissionsChanged(Role $role, array $sync): bool
|
|
|
+ {
|
|
|
+ $current = $role->permissions()
|
|
|
+ ->pluck('role_permissions.effect', 'permissions.id')
|
|
|
+ ->all();
|
|
|
+
|
|
|
+ $expected = array_map(
|
|
|
+ fn (array $attributes): string => $attributes['effect'],
|
|
|
+ $sync
|
|
|
+ );
|
|
|
+
|
|
|
+ ksort($current);
|
|
|
+ ksort($expected);
|
|
|
+
|
|
|
+ return $current !== $expected;
|
|
|
+ }
|
|
|
+
|
|
|
private function fieldPermissions(string $module, array $actions, array $permissions): array
|
|
|
{
|
|
|
return array_values(array_filter(
|