Larallow — це пакет для управління правами доступу з підтримкою скоупів

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 18 червня, 2025
Вам цікаво дізнатися, як ефективно управляти ролями та правами доступу в Laravel? У нашій статті ми розглянемо потужний пакет Larallow, який не лише спрощує створення та призначення прав, але й забезпечує гнучкі можливості для групування й перевірки доступу. Читайте далі, щоб розкрити всі його переваги

Larallow для Laravel — це пакет, що здійснює управління ролями та дозволами з розширеними функціями, такими як прив'язані ролі, поліморфні відносини, підтримка перекладів та інше. Цей пакет допомагає вам управляти задачами з надання доступу, такими як створення дозволів, призначення їх користувачам та перевірка цих можливостей у вашій програмі

За допомогою цього пакета ви можете прямо надавати користувачам дозволи, використовуючи метод allow(). Ви також можете призначити дозволи користувачам через роль, як очікується у пакеті управління правами:

use App\Models\User;
use App\Enums\Permissions\UserPermission;

$user = User::find(1);

// Використання enum
$user->allow(UserPermission::ViewClients);

// Або використання рядка
$user->allow('edit_post');

// Призначення ролі користувачу
$role = Role::find($roleId);
$user->assignRole($role);

Крім можливості призначення дозволів користувачам, пакет також надає можливість створювати дозволи та групувати їх:

use EduLazaro\Larallow\Permission;

// Просте створення дозволу
Permission::create('manage_offices')->label('Управління офісами');

// Створення дозволу для кількох типів
Permission::create('manage_offices')
    ->for([User::class, Client::class])
    ->label('Управління офісами');

// Прив'язка дозволу
Permission::create('manage_clients')
    ->for(User::class)
    ->on(Office::class)
    ->label('Управління клієнтами');

// Переклад дозволу
Permission::create([
    UserPermission::ManageOffices->value => __('Управління офісами'),
])->for(User::class)
  ->on(Group::class);
  
Permission::create([
    UserPermission::ManageClients->value => 'Управління клієнтами',
    UserPermission::ManageProperties->value => 'Управління майном',
    UserPermission::ManageDevelopments->value => 'Управління проектами',
    UserPermission::ManageAppointments->value => 'Управління зустрічами',
    UserPermission::ManageUsers->value => 'Управління користувачами',
])->for(User::class)
  ->on([
      Office::class,
      Group::class,
  ]);

Пакет також пропонує різні способи перевірки прав доступу для акторів та ролей:

// Перевірка ролі
$user->hasRole('admin');

// Прив'язана роль
$user->hasRole('admin', $scopedModel);

// Перевірка наявності принаймні однієї з ролей
$hasRole = Roles::query()
    ->roles($roleOrRoleIds)
    ->for($actor)
    ->on($scopeModel)  // Опціональна область
    ->check();

// Перевірка наявності всіх зазначених ролей
$hasRole = Roles::query()
    ->roles($roleOrRoleIds)
    ->for($actor)
    ->on($scopeModel)  // Опціональна область
    ->checkAll();

Ви можете перевіряти ролі у Blade-шаблонах, використовуючи директиву @roles для визначення можливостей у ваших виглядах:

@roles(['admin', 'editor'])
    

У вас є підвищений доступ до ролей.

@endroles

# Основні можливості

Детальніше про цей пакет, інструкції зі встановлення та перегляд джерел коду на GitHub

# Досліджуйте більше

Важливо зазначити, що цей пакет новий на ринку управління дозволами Laravel і ще не випустив версію v1.0.0. Дозволи є критично важливими для забезпечення безпеки вашого додатку, тому обов’язково вивчіть питання вибору пакета управління правами

Історично у Laravel є кілька відомих пакетів для управління користувачами, які вважаються стабільними і існують уже досить давно. Ми порівняли два найкращі пакети Laravel для управління ролями/дозволами на Laravel News. Проте ми ділимося різними пакетами, наданими спільнотою, і залишаємо рішення за вами, що найкраще підходить для ваших додатків