підручник 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.

Авторе

Вам може бути цікаво…