Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hogyan kezeli a Spatie a szerephierarchiát és az öröklést


Hogyan kezeli a Spatie a szerephierarchiát és az öröklést


A Spatie Laravel engedélycsomagja nem támogatja a szerep hierarchiáját vagy az öröklést a dobozból. Ez azt jelenti, hogy nem rendelkezik beépített funkcionalitással a szülő-gyermekek kapcsolatok meghatározására olyan szerepek között, ahol a szülői szerep automatikusan örököli a gyermekek összes engedélyét.

Hogyan kezeli a Spatie szerepeket és engedélyeket

- A szerepeket és az engedélyeket külön entitásként tárolják az adatbázisban.
- Az engedélyeket közvetlenül a szerepekhez rendelik.
- A felhasználóknak a szerepek vannak hozzárendelve, és ezen szerepek révén megkapják a kapcsolódó engedélyeket.
- Az engedélyeket közvetlenül a felhasználókhoz is hozzárendelheti.
- Az engedélyek ellenőrzésekor a csomag minden közvetlenül a felhasználóhoz rendelt engedélyt, valamint a szerepek által örökölt engedélyeket vizsgálja.

Szerephierarchia és öröklés

- A csomag hierarchia nélkül lapos entitásként kezeli a szerepeket.
- Nincs olyan beépített mechanizmus, amely az egyik szerepet a másikhoz rendelheti, vagy hogy olyan "szülői szerep legyen, amely automatikusan örököli a" gyermeki szerepek "összes engedélyét [1] [4].
- A felhasználók több szerepet is hozzárendelhetnek, ami lehetővé teszi a rugalmasságot a különböző szerepekből származó engedélyek kombinálásában, ahelyett, hogy a hierarchikus örökségre támaszkodna [2].

Általános megközelítések a szerephierarchiával a Spatie -vel való megvalósításhoz

Mivel a Spatie nem támogatja a szerep örökségét, a fejlesztők gyakran olyan megoldásokat hajtanak végre, mint például:

-Az összes engedély kiosztása kifejezetten a magasabb szintű szerepekhez: Ahelyett, hogy az engedélyeket a gyermekszerepekből örököli, az összes releváns engedélyt manuálisan hozzárendeli az egyes szerepekhez, ideértve a magasabb szintű szerepeket, például a "szuper-admin" -ot, amelynek minden engedélye alacsonyabb szerepet játszik [2] [5].

- A szerepek rangsorolása egész értékekkel: Egyes fejlesztők rangot vagy szintet rendelnek a szerepekhez (például 1 felhasználó számára, 2. moderátor, 3 adminisztrátor), majd alkalmazásaikban alkalmazzák a felhasználó szerepállományának alapján engedélyeket, amelyek hatékonyan szimulálják a hierarchiát [2].

- Több szerepe felhasználónként: Több szerepet rendeljen hozzá azoknak a felhasználóknak, akiknek különféle szerepekből kombinált engedélyekre van szükségük, elkerülve a hierarchikus szerepek szükségességét [2].

Összegzés

- A Spatie csomagja a szerepek és engedélyek különálló, lapos entitásként történő kezelésére összpontosít.
-Ösztönzi az engedélyek hozzárendelését közvetlenül a szerepekhez és a felhasználókhoz, a szerep-kötés öröklés nélkül.
- A szerephierarchiát és az öröklést szükség esetén manuálisan kell végrehajtani, általában az engedélyek kifejezett hozzárendelésével vagy az egyéni rangsorolási logika használatával.
- Ez a kialakítás elkerüli a lehetséges kérdéseket, amikor a szülői szerepek engedélyei a gyermekek szerepétől függnek, ami biztonságot vagy kezelési bonyolultságot okozhat [1] [2] [4].

Így, bár a Spatie robusztus és rugalmas engedélyrendszert biztosít, nem kezeli a szerep hierarchiáját és az öröklést belsőleg; A fejlesztőknek saját stratégiáikat kell megtervezniük az ilyen viselkedés szimulálására, ha szükséges.

Idézetek:
[1] https://github.com/spatie/laravel-permission/issues/685
[2] https://www.reddit.com/r/laravel/comments/jrhkc9/struggling_to_create_hierarchy_of_permissions_in/
[3] https://spatie.be/docs/laravel-permission/v6/introduction
[4] https://stackoverflow.com/questions/67520321/how-to-implement-hierarchical-rbac-in-laravel
[5] https://www.interserver.net/tips/kb/how-to-implement-role-al-access-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-permission/v6/basic-usage/role-permissions
[9] https://stackoverflow.com/questions/78213905/hierarchical-stoles-for-a-user-with-child-stoles-having-nifferent-permissions-
[10] https://stackoverflow.com/questions/75772209/spatie-role-plugin-for-laravel-seed-users-with-roles-doesnt-ssignrole
[11] https://dev.to/varzoeaa/spatie-permissions-vs-laravel-policies-and-ctling-dole-cess-1bdn