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