Rozdíl mezi `hasPermissionTto` a` hasanypermissionto "v souvislosti s balíčkem povolení Spatie Laravel spočívá v tom, jak kontrolují uživatelská oprávnění:
- HasPermissionTO zkontroluje, zda má uživatel konkrétní jediné povolení. Vrátí `True`, pokud má uživatel toto přesné povolení, buď přímo přiřazeno nebo zděděno prostřednictvím rolí, a` false` jinak. Pro tuto metodu můžete předat název oprávnění, ID nebo oprávnění. Je to užitečné, pokud chcete ověřit jedno konkrétní oprávnění pro uživatele.
- HasanyPermissionTO zkontroluje, zda má uživatel * některá z více oprávnění předána jako pole nebo seznam. Vrátí `true`, pokud má uživatel alespoň jedno ze zadaných oprávnění a„ false “, pokud není přiřazena žádná z nich. Tato metoda je vhodná, pokud chcete povolit přístup, pokud má uživatel alespoň jedno povolení ze sady možných oprávnění.
Další důležité poznámky:
- Obě metody kontrolují oprávnění přiřazená přímo uživateli i oprávnění zděděná z rolí.
- Tyto metody nepovažují Laravelovu bránu „před“ zpětné volání nebo funkčnost super-admin bypassu. Za tímto účelem byste měli místo toho použít Laravel's `Can`,` Canany` nebo `canall`, které se integrují s bránami a politikami a podporují logiku super admin.
- „HasPermissionTO“ je pro jednu kontrolu oprávnění, zatímco „HasanyPermissionTto“ je pro kontrolu více oprávnění, kde někdo stačí.
Stručně řečeno, při ověřování jednoho oprávnění použijte `hasPermissionTO` a použijte` hasanypermission to`, když chcete zkontrolovat, zda má uživatel alespoň jedno povolení ze seznamu. Pro super-admin nebo složitější scénáře autorizace upřednostňujte místo toho Laravel vestavěné metody „Can“ [1] [2] [5].
Citace:
[1] https://spatie.be/docs/laravel-permission/V6/Basic-USAGE/Direct-permissions
[2] https://stackoverflow.com/questions/58093970/spatie-laravel-permissions-ate-and-haspermissionto-are-not-working
[3] https://github.com/spatie/laravel-permission/issues/79
[4] https://discuss.flarum.org/d/4817-difference-between-user-can-and-user-Haspermission
[5] https://spatie.be/docs/laravel-permission/V6/Basic-USAGE/Role-permissions
[6] https://dev.to/nicolasmontielf/Add-permissions-and-doy-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/