echo75 Böyle kısır olur, pivot çalışmanız lazım. Tablolar şöyle olabilir:
roles:
id, name
+----+-------+
| id | name |
+----+-------+
| 1 | Admin |
+----+-------+
permissions:
id, name
+----+-------------+
| id | name |
+----+-------------+
| 1 | create-page |
| 2 | edit-page |
| 3 | delete-page |
+----+-------------+
role_permission: (Hangi rol hangi yetkiye sahip)
role_id, permission_id
+---------+---------------+
| role_id | permission_id |
+---------+---------------+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
+---------+---------------+
roleables: (Hangi model hangi role sahip, burada MorphToMany kullanacaksınız)
role_id, roleable_type, roleable_id
+---------+--------------------+-------------+
| role_id | roleable_type | roleable_id |
+---------+--------------------+-------------+
| 1 | App\Models\User | 5 |
| 1 | App\Models\User | 6 |
| 1 | App\Models\Company | 14 |
+---------+--------------------+-------------+
Bu tabloya göre User:5, User:6 ve Company:14 Admin rolüne, dolayısıyla create-page, edit-page ve delete-page yetkilerine sahip. Bu şekilde User dışında başka modellere de rol yetki ataması yapmak isterseniz bu şekilde yapılabilir.
Anladığım kadarıyla Page var ve kullanıcının hangi sayfa üzerinde ne yapabileceğini kontrol etmek istiyorsunuz. Onun için öyle bir tablo tutulabilir:
ownerships (Hangi modeller hangi modellere sahip, burada MorphToMany kullanacaksınız)
owner_type, owner_id, entity_type, entity_id
+--------------------+----------+-----------------+-----------+
| owner_type | owner_id | entity_type | entity_id |
+--------------------+----------+-----------------+-----------+
| App\Models\User | 5 | App\Models\Page | 6 |
| App\Models\User | 5 | App\Models\Page | 11 |
| App\Models\Company | 1 | App\Models\Page | 6 |
+--------------------+----------+-----------------+-----------+
Bu tabloya göre User:5, Page:6 ve Page:11 üzerinde işlem yapmaya yetkili; Company:6 ise sadece Page:6 üzerinde yetkisi var. Bu durumda User:5 Admin olduğu için Page:6 ve Page:11 üzerinde create-page, edit-page ve delete-page yetkilerine sahip. Yine aynı şekilde polimorfik many-to-many olduğu için modeller sadece Page değil diğer modelleri de sahiplenebilir.
Bu yapıyı kurduktan sonra middleware ve policy kullanarak yetkilendirme altyapısını hazırlayabilirsiniz. Her ihtiyacınızı karşılar mı bilmem ama yol göstereceğini düşünüyorum.