Kaynağa Gözat

fix rbac seeder

Alexander Musikhin 1 gün önce
ebeveyn
işleme
b6d89edaeb

+ 1 - 0
database/seeders/DatabaseSeeder.php

@@ -28,5 +28,6 @@ class DatabaseSeeder extends Seeder
         $this->call(OrderStatusSeeder::class);
         $this->call(BrigadierSeeder::class);
         $this->call(ReclamationStatusSeeder::class);
+        $this->call(RbacSeeder::class);
     }
 }

+ 20 - 1
database/seeders/RbacSeeder.php

@@ -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(