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

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 03 грудня, 2025
Ви коли-небудь замислювалися, як адміністраторам зручно вирішувати проблеми користувачів у вашому 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

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

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

composer require franbarbalopez/mirror

php artisan vendor:publish --tag=mirror

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