Impersonate a Laravel user
Authenticate as another user while maintaining previous authentication., (*1)
This works by using Laravels Auth::onceUsingId() feature where you can authenticate
as a user for that request only. A middleware will check if you're impersonating via a session variable
and activate Auth::onceUsingId() for every request until you stop impersonating., (*2)
Installation
1. Composer
Execute the following command to get the latest version of the package:, (*3)
composer require bizhub/impersonate
2. Laravel
Add CheckIfImpersonating middleware to app\Http\Kernel.php, (*4)
protected $middlewareGroups = [
'web' => [
// ...
\Bizhub\Impersonate\Middleware\CheckIfImpersonating::class,
]
];
Add CanImpersonate trait to your User model, (*5)
namespace App;
use Bizhub\Impersonate\Traits\CanImpersonate;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use CanImpersonate;
// ...
}
Usage
// Retrieve your user model
$user = User::find(1);
// Start impersonating
$user->impersonate();
// Redirect/reload the page
// ...
// Stop impersonating
Auth::user()->stopImpersonating();