Projectslaravel-impersonation

Laravel Impersonation

Package

Session-based user impersonation for Laravel.

Upgrade Guide

Laravel Impersonation

Session-based user impersonation for Laravel, with optional recursive (nested) impersonation.

use BradieTilley\Impersonation\ImpersonationManager;

ImpersonationManager::configure(
    authorize: fn ($admin, $user) => $admin->isAdmin() && ! $user->isAdmin(),
);

ImpersonationManager::make()->impersonate($user);
ImpersonationManager::make()->isImpersonating(); // true
ImpersonationManager::make()->stopImpersonating();

Documentation

Requirements

  • PHP 8.3+
  • Laravel 13+

Quick start

composer require bradietilley/laravel-impersonation
use BradieTilley\Impersonation\Contracts\Impersonateable;
use BradieTilley\Impersonation\ImpersonationManager;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable implements Impersonateable
{
    //
}

// In a service provider boot method:
ImpersonationManager::configure(
    authorize: fn ($admin, $user) => $admin->isAdmin() && ! $user->isAdmin(),
);

See Installation and Usage for the full walkthrough.