Spatiejev paket dovoljenj Laravel ne podpira hierarhije vlog ali dedovanja iz škatle. To pomeni, da nima vgrajene funkcionalnosti za določanje odnosov med starši in otrokom med vlogami, kjer matična vloga samodejno podeduje vsa dovoljenja svojih otroških vlog.
###, kako Spatie obravnava vloge in dovoljenja
- Vloge in dovoljenja so shranjene kot ločene subjekte v bazi podatkov.
- Dovoljenja so dodeljena neposredno vlogam.
- Uporabniki so dodeljene vloge in s temi vlogami pridobijo povezana dovoljenja.
- Dovoljenja lahko dodelite tudi neposredno uporabnikom.
- Pri preverjanju dovoljenj paket pregleda vsa dovoljenja, dodeljena neposredno uporabniku, in tista, ki so podedovana prek vlog.
Hierarhija in dedovanje vlog
- Paket obravnava vloge kot ravne entitete brez hierarhije.
- Ni vgrajenega mehanizma, ki bi dodelil eno vlogo drugemu ali imeti "matično vlogo", ki samodejno podeduje vsa dovoljenja "otroških vlog" [1] [4].
- Uporabniki imajo lahko dodeljene več vlog, kar omogoča prilagodljivost pri združevanju dovoljenj iz različnih vlog, namesto da se zanašajo na hierarhično dedovanje [2].
Skupni pristopi za izvajanje hierarhije vlog s Spatie
Ker Spatie ne podpira dedovanja vlog, razvijalci pogosto izvajajo rešitve, kot so:
-Če vsa dovoljenja izrecno dodelite vlogam na višji ravni: Namesto da bi podedovali dovoljenja iz otroških vlog, vsaki vlogi ročno dodelite vsa ustrezna dovoljenja, vključno z vlogami na višji ravni, kot so "super-admin", ki imajo vsa dovoljenja nižjih vlog [2] [5].
- Razvrščanje vlog z celostnimi vrednostmi: Nekateri razvijalci dodelijo vlogam ali ravni (npr. 1 za uporabnika, 2 za moderator, 3 za administratorja) in nato v svoji aplikaciji izvajajo logiko, da podelijo dovoljenja na podlagi uvrstitve uporabnika, učinkovito simulirajo hierarhijo [2].
- Več vlog na uporabnika: dodelite več vlog uporabnikom, ki potrebujejo kombinirana dovoljenja iz različnih vlog, pri čemer se izogibajo potrebam po hierarhičnih vlogah [2].
Povzetek
- Paket Spatie se osredotoča na upravljanje vlog in dovoljenj kot ločenih, ravnih entitet.
-Spodbuja dodelitev dovoljenj neposredno v vlogam in uporabnikom brez dedovanja vlog.
- Hierarhijo in dedovanje vlog je treba po potrebi izvajati ročno, običajno tako, da dovoljenja izrecno dodelite ali uporabite logiko razvrščanja po meri.
- Ta zasnova se izogne morebitnim vprašanjem, kjer so dovoljenja v vlogi staršev odvisna od otroških vlog, kar lahko povzroči kompleksnost varnosti ali upravljanja [1] [2] [4].
Medtem ko Spatie zagotavlja močan in prilagodljiv sistem dovoljenj, ne obravnava hierarhije vlog in dedovanja interno; Razvijalci morajo oblikovati svoje strategije, da po potrebi simulirajo takšno vedenje.
Navedbe:
[1] https://github.com/Spatie/laravel-permission/isissue/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-hierarhical-rbac-in-lavel
[5] https://www.inserver.net/tips/kb/how-to-implement-role-based-access-control-in-lavel/
[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-otrok-having-different-permissions-on
[10] https://stackoverflow.com/questions/75772209/spatie-role-plugin-for-lavel-seed-users--with-roles-doesnt-assignrole
[11] https://dev.to/varzoeaa/spatie-permissions-vs-lavel-policies-and-gates-handling-role-access-access-1bdn