Inštalácia
Pridajte balík. Service provider aj alias fasády Permissions sa načítajú automaticky — bez manuálnej registrácie:
composer require roundly-consulting/permissions-for-laravelAko prvú publikujte konfiguráciu. Typ kľúča držiteľov je súčasťou schémy, preto sa medzi kľúčmi bigint, UUID a ULID rozhodnite hneď (pozri Databázová schéma a typy kľúčov):
php artisan vendor:publish --tag="permissions-config"Potom publikujte a spustite migrácie:
php artisan vendor:publish --tag="permissions-migrations"
php artisan migrateMigrácie sa iba publikujú
Balík svoje migrácie nikdy nenačítava sám, takže php artisan migrate nevytvorí nič, kým ich nepublikujete do database/migrations vašej aplikácie. Osem migrácií dostane časovú pečiatku a správne poradie závislostí — permissions, roles, permission_role, model_roles, model_permissions a potom tri z verzie 2.1: add_owner_to_roles_table, create_role_assignments_table a create_permission_assignments_table. Opätovné publikovanie ich prepíše na mieste, nevznikne druhá kópia.
Balík poskytuje iba dva publish tagy: permissions-config a permissions-migrations.
Prechod z verzie 2.0
Kým funkciu nezapnete, nič sa nemení: pri vypnutom permissions.assignments.enabled posiela 2.1 presne tie isté dopyty ako 2.0 a nové tabuľky ani stĺpce nikdy nečíta, takže balík môžete aktualizovať ešte pred migráciou. Ak chcete priradenia v rozsahu a s časovým oknom alebo roly s vlastníkom:
- Ak vaše modely rozsahov — projekty, tímy, tenanti — používajú iný typ kľúča ako držitelia, najprv nastavte permissions.assignments.scope_key_type.
- Migrácie publikujte znova a spustite ich: tri nové súbory pribudnú, päť existujúcich sa prepíše na mieste. add_owner_to_roles_table po vytvorení nového indexu zruší index na názve roly podľa názvu, ktorý mu dal Laravel (<tabuľka rolí>_name_unique) — ak ste tento index ručne premenovali, publikovanú migráciu upravte.
- Nastavte PERMISSIONS_ASSIGNMENTS=true. Žiadna migrácia dát nie je potrebná: priradenia z 2.0 fungujú ďalej ako trvalé priradenia bez rozsahu.
- Voliteľne volajte Permissions::forgetScope() z hookov deleting vašich modelov rozsahov a naplánujte permissions:prune-expired — pozrite Priradenia v rozsahu a s časovým oknom.
Ďalšie kroky
- Pridajte trait HasRoles do modelu používateľa.
- Vytvorte roly a oprávnenia — ideálne v idempotentnom seederi.
- Chráňte routy natívnym middlewarom can:.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.