Легкий менеджер контролю доступу для Laravel з Porter

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 09 вересня, 2025
Пориньте у світ Porter — легкого та швидкого пакета контролю доступу на основі ролей для Laravel, створеного Хассаном Ібрагімом. Чи готові ви спростити управління доступом у ваших проектах? У статті ми розглянемо переваги цього пакета та чудові можливості, які він пропонує

Porter — це легкий, надшвидкий пакет контролю доступу на основі ролей для Laravel, створений Хасаном Ібрагімом. Він розглядає ролі не лише як абстракції бази даних, а як бізнес-логіку. Хасан розробив цей пакет для розробників, які цінують простоту, продуктивність і чисту архітектуру.

Головна концепція Portera полягає в тому, що будь-яка модель може бути визнана Призначеною або Рольовою, а Ростер визначає відношення контролю доступу між ними.

# Особливості

# Примірник

use Hdaklue\Porter\Facades\Porter;
 
// Призначення ролі
Porter::assign($user, $project, 'admin');
 
// Перевірка ролі користувача
$isAdmin = $user->hasRoleOn($project, 'admin');
 
// Видалення ролі
Porter::remove($user, $project);
 
// Зміна ролі
Porter::changeRoleOn($user, $project, 'editor');

Porter також має інтерактивну команду Artisan, яка дозволяє створювати класи ролей.

php artisan porter:create

Приклад класу ролі може виглядати так:

use App\Porter\BaseRole; // Основний клас ролі вашого застосунку
 
final class AssistantRegionalManager extends BaseRole
{
    public function getName(): string
    {
        return 'assistant_regional_manager';
    }
 
    public function getLevel(): int
    {
        return 8;
    }
 
    public function getDescription(): string
    {
        return "Ми завжди потребували офісного супергероя, що любить буряк і займається карате.";
    }
}

Ви також можете інтегрувати це зі своїми моделями Laravel, використовуючи трейти CanBeAssignedToEntity та ReceivesRoleAssignments:

use Hdaklue\Porter\Concerns\{CanBeAssignedToEntity, ReceivesRoleAssignments};
 
class User extends Authenticatable
{
    use CanBeAssignedToEntity;
 
    // Ваш існуючий код моделі User...
}
 
class Project extends Model
{
    use ReceivesRoleAssignments;
 
    // Ваш існуючий код моделі Project...
}

На момент написання, Porter все ще є досить новим, і Хасан зацікавлений отримати відгуки та допомогу від спільноти у впровадженні нових функцій.

Щоб дізнатися більше про цей пакет, зробити свій внесок та переглянути вихідний код, ви можете знайти репозиторій на GitHub.

Популярні

Logomark Logotype

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

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

Logomark Logotype

Обробка геопросторових даних за допомогою Laravel Magellan

Ви готові відкрити нові горизонти у роботі з геопросторовими даними в Laravel? Дізнайтеся, як за допомогою PostGIS та пакету Laravel-Magellan можна легко зберігати, запитувати та маніпулювати інформацією про розташування, перетворюючи ваші проекти на вражаючі рішення у сфері картографії та геолокації!

Logomark Logotype

Nuxt 3 + Laravel Sanctum: Просте та надійне рішення для автентифікації вашого SPA та API

У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту