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