Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Spatie rol hiyerarşisi ve mirasla nasıl başa çıkıyor


Spatie rol hiyerarşisi ve mirasla nasıl başa çıkıyor


Spatie'nin Laravel izin paketi, rol hiyerarşisini veya mirasını kutudan çıkarmaz. Bu, bir ebeveyn rolünün çocuk rollerinin tüm izinlerini otomatik olarak devraldığı roller arasındaki ebeveyn-çocuk ilişkilerini tanımlamak için yerleşik işlevselliğe sahip olmadığı anlamına gelir.

Spatie rolleri ve izinleri nasıl ele alıyor

- Roller ve izinler veritabanında ayrı varlıklar olarak saklanır.
- İzinler doğrudan rollere atanır.
- Kullanıcılara rol verilir ve bu roller aracılığıyla ilişkili izinleri kazanırlar.
- İzinleri doğrudan kullanıcılara da atayabilirsiniz.
- İzinleri kontrol ederken, paket doğrudan kullanıcıya atanan tüm izinlere ve roller aracılığıyla devralınanlara bakar.

rol hiyerarşi ve miras

- Paket rolleri hiyerarşi olmadan düz varlıklar olarak ele alır.
- Bir diğerine bir rol atamak veya "çocuk rolleri" nin tüm izinlerini otomatik olarak devralan bir "ana rol" olmak için yerleşik bir mekanizma yoktur [1] [4].
- Kullanıcılar, hiyerarşik kalıtıma güvenmek yerine farklı rollerden izinlerin birleştirilmesinde esnekliğe izin veren birden fazla rolü atanabilir [2].

Spatie ile rol hiyerarşisini uygulamak için ortak yaklaşımlar

Spatie rol mirasını desteklemediğinden, geliştiriciler genellikle şu şekildeler uygulayarak uygular:

-Tüm izinleri açıkça daha üst düzey rollere atamak: Çocuk rollerinden gelen izinleri devralmak yerine, düşük rollerin tüm izinlerine sahip "süper admin" gibi daha üst düzey roller de dahil olmak üzere tüm ilgili tüm izinleri her rolüne manuel olarak atarsınız [2] [5].

- Tamsayı değerleri ile sıralama rolleri: Bazı geliştiriciler rollere bir sıralama veya seviye atarlar (örneğin, kullanıcı için 1, yönetici için 3) ve daha sonra kullanıcının rol sıralamasına dayalı izinler verme, hiyerarşiyi etkili bir şekilde simüle etme uygulamalarında mantık uygulurlar [2].

- Kullanıcı başına birden fazla rol: Hiyerarşik rollere ihtiyaçtan kaçınarak farklı rollerden kombine izinlere ihtiyaç duyan kullanıcılara birden fazla rol atayın [2].

Özet

- Spatie'nin paketi, rolleri ve izinleri ayrı, düz varlıklar olarak yönetmeye odaklanır.
-Rol-role mirası olmayan rollere ve kullanıcılara doğrudan izin verilmesini teşvik eder.
- Rol hiyerarşisi ve kalıtım, gerektiğinde, tipik olarak izinleri açıkça atayarak veya özel sıralama mantığı kullanılarak manuel olarak uygulanmalıdır.
- Bu tasarım, bir ebeveyn rolünün izinlerinin güvenlik veya yönetim karmaşıklıklarına neden olabilecek çocuk rollerine bağlı olduğu potansiyel sorunları önler [1] [2] [4].

Dolayısıyla, Spatie sağlam ve esnek bir izin sistemi sağlarken, dahili olarak rol hiyerarşisi ve mirasla başa çıkmaz; Geliştiriciler, gerekirse bu tür davranışı simüle etmek için kendi stratejilerini tasarlamalıdır.

Alıntılar:
[1] https://github.com/spatie/laravel-upmission/issues/685
[2] https://www.reddit.com/r/laravel/comments/jrhkc9/struggling_to_create_hierarchy_of_permissions_in/
[3] https://spatie.be/docs/laravel-upmission/v6/introduction
[4] https://stackoverflow.com/questions/67520321/how-to-to-plement-hierarchical-rbac-in-laravel
[5] https://www.interserver.net/tips/kb/how-to-plement-role-cesces-control-in-laravel/
[6] https://www.reddit.com/r/laravel/comments/1e78vct/strategy_for_permission_and_authorisation_design/
[7] https://www.youtube.com/watch?v=3hsbjcvwh78
[8] https://spatie.be/docs/laravel-upmission/v6/basic-usage/role-upmissions
[9] https://stackoverflow.com/questions/78213905/hierarchical-rolees-for-a-a-ser-with-hild-oles-different-portmissions-on
[10] https://stackoverflow.com/questions/75772209/spatie-role-plugin-for-lavavel-seed-users-with-doesnt-assignrole
[11] https://dev.to/varzoeaa/spatie-upmissions-vs-lavavel-policies ve kalıp