Імітація користувача в Laravel за допомогою пакету Mirror

Перекладено ШІ 2 Laravel News 02 червня, 2026

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

Mirror — це елегантний пакет для імперсоналізації користувачів у Laravel, який дозволяє адміністраторам входити під обліковими записами інших користувачів для вирішення проблем, надання підтримки та тестування користувацького досвіду. Забезпечення безпечної імперсоналізації є критично важливим для виробничих додатків, і Mirror пропонує криптографічну перевірку, що запобігає підробці сесій.

Пакет працює шляхом додавання Impersonatable трейту до вашої User моделі та реалізації двох методів, які визначають, які ролі можуть імперсоналізувати інші ролі, а також які ролі дозволено імперсоналізувати особам із відповідними правами:

use Illuminate\Foundation\Auth\User as Authenticatable;
use Mirror\Concerns\Impersonatable;

class User extends Authenticatable
{
    use Impersonatable;

    public function canImpersonate(): bool
    {
        return $this->hasRole('admin');
    }

    public function canBeImpersonated(): bool
    {
        return ! $this->hasRole('super-admin');
    }
}

Після цього ви можете почати та зупинити імперсоналізацію, використовуючи фасад Mirror:

use Mirror\Facades\Mirror;

// Почати імперсоналізацію користувача
Mirror::start($user);
redirect()->route('dashboard');

// Зупинити імперсоналізацію
Mirror::stop();
redirect()->route('admin.users.index');

Цей пакет також включає методи для перевірки стану імперсоналізації, події, директиви Blade та багато іншого:

@impersonating
    <div class="alert">
        Ви входите як {{ auth()->user()->name }}.
        <a href="{{ route('impersonation.leave') }}">Вийти</a>
    </div>
@endimpersonating

{{-- Перевірка певного захисту --}}
@impersonating('admin')
    <div>Імперсоналізація через адмінський захист</div>
@endimpersonating

# Основні можливості

  • Цілісність сесії HMAC-SHA256 для запобігання підробкам
  • Налаштовуване TTL закінчення дії
  • Посередник для контролю доступу та виконання TTL
  • Підтримка кількох захистів
  • Гнучка переадресація URL
  • Події життєвого циклу для журналювання аудиту

Щоб почати використовувати цей пакет у вашому проекті Laravel, ви можете встановити його через Composer та опублікувати конфігураційні параметри пакета:

composer require franbarbalopez/mirror

php artisan vendor:publish --tag=mirror

🧑‍💻 Ви можете знайти вихідний код та документацію на GitHub: franbarbalopez/mirror

Популярні

Інше, що варто прочитати

53 Оновлено 01 червня, 2026

Усе, що нам відомо про Livewire 4

Нова версія Livewire 4, представленої Келебом Порзіо на Laracon US 2025, обіцяє значні покращення у швидкості та організації компонентів. Які з інноваційних функцій підкорять ваше серце? Читайте далі, щоб дізнатися більше про те, як Livewire 4 полегшить вашу роботу

15 Оновлено 01 червня, 2026

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

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

11 Оновлено 01 червня, 2026

Локальні моделі та їх скоупи в Laravel за допомогою атрибута Scope

В Laravel 12 ми отримали можливість використовувати новий підхід для визначення локальних скоупів у моделях Eloquent. Дізнайтеся, як новий атрибут #[Scope] спрощує цей процес і зберігає ваші назви методів незмінними