Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kā spatie rīkojas ar lomu hierarhiju un mantojumu


Kā spatie rīkojas ar lomu hierarhiju un mantojumu


Spatie laravel atļauju pakete neatbalsta lomu hierarhiju vai mantojumu ārpus kastes. Tas nozīmē, ka tam nav iebūvētas funkcionalitātes, lai noteiktu vecāku un bērnu attiecības starp lomām, kur vecāku loma automātiski manto visas tās bērnu lomu atļaujas.

Kā Spatie rīkojas ar lomām un atļaujām

- Lomas un atļaujas tiek glabātas kā atsevišķas vienības datu bāzē.
- atļaujas tiek piešķirtas tieši lomām.
- Lietotājiem tiek piešķirtas lomas, un, izmantojot šīs lomas, viņi iegūst saistītās atļaujas.
- Varat arī piešķirt atļaujas tieši lietotājiem.
- Pārbaudot atļaujas, pakete aplūko visas atļaujas, kas piešķirtas tieši lietotājam, kā arī tās, kas mantotas, izmantojot lomas.

lomu hierarhija un mantojums

- Komplekts lomu uzskata par līdzenām vienībām bez jebkādas hierarhijas.
- Nav iebūvēta mehānisma, lai vienai lomai piešķirtu citam vai būtu "vecāku loma", kas automātiski pārmanto visas "bērnu lomu" atļaujas [1] [4].
- Lietotājiem var būt vairākas lomas, kas ļauj elastīgi apvienot dažādu lomu atļaujas, nevis paļaujoties uz hierarhisko mantojumu [2].

Kopīgas pieejas lomu hierarhijas ieviešanai ar spatiju

Tā kā Spatie neatbalsta mantojuma lomu, izstrādātāji bieži īsteno tādus risinājumus kā:

-Visu atļauju piešķiršana tieši augstāka līmeņa lomām: tā vietā, lai mantotu atļaujas no bērnu lomām, jūs manuāli piešķirat katrai lomai visas atbilstošās atļaujas, ieskaitot augstāka līmeņa lomas, piemēram, “super-admin”, kurām ir visas zemākas lomas atļaujas [2] [5].

- Lomas ar veseliem skaitļu vērtībām: daži izstrādātāji lomām piešķir rangu vai līmeni (piemēram, 1 lietotājam, 2 moderatoram, 3 administratoram) un pēc tam ievieš loģiku lietojumprogrammā, lai piešķirtu atļaujas, pamatojoties uz lietotāja lomu rangu, efektīvi imitējot hierarhiju [2].

- Vairākas lomas katram lietotājam: piešķiriet vairākas lomas lietotājiem, kuriem ir vajadzīgas dažādu lomu atļaujas, izvairoties no nepieciešamības pēc hierarhiskām lomām [2].

kopsavilkums

- Spatie pakete koncentrējas uz lomu un atļauju pārvaldību kā atsevišķām, plakanām vienībām.
-Tas mudina atļauju piešķiršanu tieši lomām un lietotājiem bez mantojuma ar lomu.
- Lomu hierarhija un mantojums, ja nepieciešams, jāīsteno manuāli, parasti, skaidri piešķirot atļaujas vai izmantojot pielāgotu ranžēšanas loģiku.
- Šis dizains izvairās no iespējamām problēmām, kurās vecāku lomas atļaujas ir atkarīgas no bērnu lomām, kas varētu izraisīt drošības vai pārvaldības sarežģītību [1] [2] [4].

Tādējādi, lai arī Spatie nodrošina stabilu un elastīgu atļauju sistēmu, tā iekšēji nerīkojas ar lomu hierarhiju un mantojumu; Izstrādātājiem ir jāizstrādā savas stratēģijas, lai ja vajadzības gadījumā modelētu šādu uzvedību.

Atsauces:
[1] https://github.com/spatie/laravel-perission/issues/685
[2] https://www.reddit.com/r/laravel/comments/jrhkc9/strugling_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-inavel
[5] https://www.interserver.net/tips/kb/how-to-implement-role base-access-control-in-inavel/
[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-roles-for-a-user-with-hild-roles- having-different-permissions-on
[10] https://stackoverflow.com/questions/75772209/spatie-role-plugin-for-laravel-seed-users-with-roles-doesnt-asignrole
[11] https://dev.to/varzoeaa/spatie-permissions-vs-laravel-policies-andwates-rokturi-roles-bāzēts-piekļuves-1bdn