Перемикання між персонами в Laravel за допомогою пакета MultiPersona

1
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 грудня, 2025
Вам коли-небудь доводилося працювати з багатьма ролями або обліковими записами для одного користувача? У статті ми розглянемо пакет Laravel MultiPersona, який дозволяє зручно і динамічно перемикатися між різними контекстами без зайвих логінів. Читайте далі, щоб дізнатися, як цей інструмент може спростити управління доступом у ваших додатках!

Пакет Laravel MultiPersona є "легковаговою системою контекстного управління для користувачів Laravel". Він дозволяє одному користувачу динамічно змінювати різні ролі, акаунти або контексти без необхідності створювати кілька логінів чи сесій.

Цей пакет передбачає наявність моделі Persona, яка прив'язується до одного користувача. Сервіс персон, наданий пакетом, виконує операції на кшталт отримання поточної персоні, перемикання між ними, перевірки прав доступу тощо.

use Illuminate\Foundation\Auth\User as Authenticatable;
use Grazulex\LaravelMultiPersona\Traits\HasPersonas;

class User extends Authenticatable
{
    use HasPersonas;

    // ... решта вашої моделі
}

// Отримати активну персону
$currentPersona = persona();

// Список усіх персон користувача
$userPersonas = auth()->user()->personas;

// Створити нову персону
$persona = auth()->user()->createPersona([
    'name' => 'Компанійний адміністратор',
    'context' => [
        'role' => 'admin',
        'company_id' => 123,
        'permissions' => ['read', 'write', 'delete']
    ]
]);

// Перемикання на іншу персону
auth()->user()->switchToPersona($persona);

Цей пакет буде корисним для SaaS-додатків з багатьма орендарями, де користувачі можуть змінювати контексти компаній, управлінські ролі та більш складні налаштування доступу. Наведений нижче код є прикладом з документації пакету, що демонструє створення персон для різних компаній:

// Користувач перемикається між компаніями
$companyA = $user->createPersona([
    'name' => 'Адміністратор Acme Corp',
    'context' => [
        'company_id' => 1,
        'role' => 'admin',
        'permissions' => ['manage_users', 'view_reports']
    ]
]);

$companyB = $user->createPersona([
    'name' => 'Користувач TechStart',
    'context' => [
        'company_id' => 2,
        'role' => 'user',
        'permissions' => ['view_dashboard']
    ]
]);

# Варіанти використання пакету

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

💻 Вихідний код доступний на GitHub за посиланням Grazulex/laravel-multipersona.

Популярні

Logomark Logotype

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

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

Logomark Logotype

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення

Logomark Logotype

Простий пакет RabbitMQ для Laravel

Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!