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

1
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 грудня, 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

Популярні

Logomark Logotype

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

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

Logomark Logotype

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

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

Logomark Logotype

"SQLSTATE[HY000] [2002] Connection refused" у Laravel в GitHub Actions

Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!