laravel spatie: автентифікація та керування дозволами
Laravel Spatie — один із найпотужніших пакетів у Laravel для керування ролями та дозволами користувачів.
Дозвіл Laravel від Spatie робить реалізацію RBAC (контроль доступу на основі ролей) легшим, ніж будь-коли.
У цій статті ми побачимо, як правильно встановити та налаштувати плагін Shield, щоб швидко та легко використовувати керування дозволами.
Приблизний час читання: 4 хвилин
Дозвіл Laravel
Laravel Permission — це потужний пакет для визначення ролей, призначення дозволів і керування доступом користувачів у ваших програмах Laravel. Він має простий у використанні синтаксис і потужні функції.
У Filament є плагін, який можна використовувати для керування дозволами ресурсів, сторінок і віджетів на панелі Filament за допомогою дозволу spatie / Laravel.
Вимоги
Щоб краще зрозуміти зміст цієї статті, рекомендуємо вам спочатку прочитати статтю, де я пояснюю фундаментальні поняття нитки, і встановлення нитки. Також раджу глибше заглибитися в проект на репозиторії GitHub і завжди пояснюється встаття про Filament.
Філаментний щит
Філаментний щит створений Бежаном Саллехом, досвідченим повноцінним розробником. Використовуючи Filament Shield, ви можете легко керувати ролями та дозволами, які підтримують останні Laravel spatie/permission.
Перше, що нам потрібно зробити, якщо ми хочемо встановити Filament Shield для нашого проекту, це запустити таку команду:
composer require bezhansalleh/filament-shield
Тепер нам потрібно додати Trait HasRoles
нель model User
, тому use Spatie\Permission\Traits\HasRoles
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable implements FilamentUser
{
use HasFactory, Notifiable, HasRoles;
Таким чином ми прив’язуємо керування ролями та дозволами до моделі User
.
Потім ми публікуємо файл config
і ми встановлюємо нашу конфігурацію за допомогою такої команди:
php artisan vendor:publish --tag=filament-shield-config
І ми реєструємо плагін всерединіAdminPanelProvider
для бажаних панелей Filament, і ми робимо це, використовуючи цей синтаксис у файлі app\Providers\Filament\AdminPanelProvider.php
,
-> plugin ([
\BezhanSalleh\FilamentShield\FilamentShieldPlugin :: make ()
])
Встановлення
Давайте встановимо його зараз Щит di Нитка у нашому проекті ми виконуємо таку команду:
php artisan shield:install
Тепер у нас є нове меню «Ролі» з таблицею ролей, а роль за замовчуванням — суперадміністратор,
Коли ми створюємо роль, ми побачимо форму створення ролі, яка містить усі шаблони та ресурси, які ми створили, а також дозволи для всіх ролей і дії, які вони можуть і не можуть виконувати.
Всередині файлу config/filament-shield.php
існують різні параметри конфігурації для дозволів і ролей.
Laravel Spatie Shield керує дозволами для ресурсів Filament двома способами: за замовчуванням і спеціальним. У режимі за замовчуванням він керує дозволами за замовчуванням для ресурсів Filament, а префікси попередньо визначені у файлі config/filament-shield.php
.
Якщо вам потрібно додати один дозвіл (наприклад, блокування) і зробити його доступним для всіх ваших ресурсів, просто додайте його до ключа конфігурації, зазначеного вище.
Якщо вам потрібен окремий дозвіл лише для одного ресурсу, вам потрібно використовувати спеціальний метод. Якщо у вас є така потреба, ви можете дізнатися більше, натиснувши тутi.
Політики визначені для кожного ресурсу в каталозі app/Policies
.
Щоб ролі Filament Shield працювали належним чином, ви повинні надати доступ RoleResource
кошти RolePolicy
, і для цього вам слід увімкнути параметр register_role_policy
, у вашому AuthServiceProvider
:
Ви можете знайти цей приклад із повною конфігурацією в репозиторії, щоб побачити його натисніть це посилання, щоб отримати доступ до репозиторію на GitHub.