Razlika med `haspermissionTo` in` hasanypermissionTo` v okviru paketa dovoljenja Spatie Laravel je v tem, kako preverjajo uporabniška dovoljenja:
- HASPERSIMENTO Preveri, ali ima uporabnik določeno enotno dovoljenje. Vrne "True", če ima uporabnik natančno dovoljenje, bodisi neposredno dodeljen ali podedovan prek vlog, in "false" drugače. Na to metodo lahko prenesete ime dovoljenja, ID ali objekt dovoljenja. Koristno je, če želite preveriti eno posebno dovoljenje za uporabnika.
- HasanyPermissionTo preveri, ali ima uporabnik * katero koli * eno od več dovoljenj, ki je bila posredovana kot matrika ali seznam. Vrne "True", če ima uporabnik vsaj eno od določenih dovoljenj, in "false", če nobeden od njih ni dodeljen. Ta metoda je priročna, če želite omogočiti dostop, če ima uporabnik vsaj eno dovoljenje iz niza možnih dovoljenj.
Dodatne pomembne opombe:
- Obe metodi preverjata dovoljenja, dodeljena neposredno uporabniku, kot tudi tista, ki so podedovana iz vlog.
- Te metode ne upoštevajo Laravelovih vrat `pred povratnimi klici ali super-admin Bypass funkcionalnostjo. Za to bi morali uporabiti Laravelove metode "Can", "Canany" ali "kanall", ki se integrirajo z vrati in politikami in podpirajo super-admin logiko.
- `haspermissionTo` je za en sam preverjanje dovoljenja, medtem ko je` hasanypermissionTo` za preverjanje več dovoljenj, kjer kdo zadostuje.
Če povzamemo, pri preverjanju enega dovoljenja uporabite `haspermissionTo` in uporabite` hasanypermissionTo`, ko želite preveriti, ali ima uporabnik vsaj eno dovoljenje s seznama. Za super-admin ali bolj zapletene scenarije avtorizacije raje Laravelove vgrajene metode "Can" namesto [1] [2] [5].
Navedbe:
[1] https://spatie.be/docs/laravel-permission/v6/basic-usage/direct-permissions
[2] https://stackoverflow.com/questions/58093970/spatie-lavel-permissions-gate-and-haspermissionto-are-not-working
[3] https://github.com/Spatie/laravel-permission/isissue/79
[4] https://discuss.flarum.org/d/4817-difference-between-user-can-and-user-harspermis
[5] https://spatie.be/docs/laravel-permission/v6/basic-usage/role-permissions
[6] https://dev.to/nicolasmontielf/add-permissions-and-roles-to-your-laravel-project-2HHL
[7] https://www.reddit.com/r/laravel/comments/1e78vct/strategy_for_permission_and_authorisation_design/
[8] https://www.honeybadger.io/blog/laravel-permissions-roles/