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

0
Перекладено ШІ
Оригінал: 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. Проте ми ділимося різними пакетами, наданими спільнотою, і залишаємо рішення за вами, що найкраще підходить для ваших додатків

Популярні

Logomark Logotype

Інтеграція Laravel Socialite з бібліотекою Google Client PHP

Ви хочете навчитися, як інтегрувати Google OAuth у вашому проекті Laravel, використовуючи Socialite? Дізнайтеся, як налаштувати доступ до сервісів Google, таких як Календар, у нашій сьогоднішній статті

Logomark Logotype

Використання штучного інтелекту для управління перекладами в Laravel

Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!

Logomark Logotype

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом