Легкий менеджер контролю доступу для 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

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

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

Logomark Logotype

4 поширені помилки Vite у Laravel

Використання Vite для створення фронтенд-ресурсів у вашому додатку Laravel може бути захоплюючим, але іноді ви можете стикнутися з певними помилками. У цій статті ми розглянемо чотири поширені помилки, з якими ви можете зіткнутися, а також підкажемо способи їх усунення, щоб ви могли знову зосередитися на розробці вашого додатку