evo-mark/laravel-impersonate
Impersonate Laravel users in one click. Add a trait to your User model to start/stop impersonation, with authorization hooks, middleware, events, Blade helpers, and configurable strategies. Supports Laravel 10–11 and PHP 8.2+.
canImpersonate(), canBeImpersonated()), middleware, events, and multi-guard configurations, making it adaptable to complex workflows.@canImpersonate, @canBeImpersonated, @impersonating) for UI-level impersonation controls, reducing boilerplate.TakeImpersonation and LeaveImpersonation events, enabling observability and side-effect management (e.g., logging, analytics toggling).User model.Route::impersonate()).lab404/laravel-impersonate (rename namespaces, update dependencies).web, admin) out of the box, critical for SaaS or multi-tenant apps.canImpersonate()/canBeImpersonated() be implemented? Will it use role-based access (e.g., is_admin) or attribute-based (e.g., is_support_staff)?return $this->role->name === 'support';web + api) needed? If so, how will impersonation routes be scoped (e.g., /admin/impersonate vs. /support/impersonate)?TakeImpersonation/LeaveImpersonation events sufficient for compliance, or will custom logging (e.g., to a database) be required?findUserById() queries be optimized (e.g., caching impersonatable users)?canImpersonate() logic.loginAs() methods).composer require evo-mark/laravel-impersonate
ImpersonateServiceProvider to config/app.php.php artisan vendor:publish --tag=impersonate
use EvoMark\Impersonate\Models\Impersonate; to User model.canImpersonate()/canBeImpersonated().RouteServiceProvider:
Route::middleware('web')->group(fn(Router $router) => $router->impersonate());
Route::get('/impersonate/{id}', [ImpersonateController::class, 'impersonate']);
@canImpersonate
<a href="{{ route('impersonate', $user->id) }}">Impersonate</a>
@endcanImpersonate
vendor/bin/phpunit
laravel/framework:^10.0.canImpersonate() logic.canImpersonate()/canBeImpersonated() may require model updates.ImpersonateManager requires deep Laravel auth knowledge.canImpersonate() logic. Fix: Verify method implementation and test edge cases (e.g., super admin vs. regular admin).leaveImpersonation() is called or session is cleared.impersonate route macro. Fix: VerifyHow can I help you explore Laravel packages today?