github stechstudio/filament-impersonate v5.0.0

8 hours ago

What's New

This is a major release that removes the lab404/laravel-impersonate dependency entirely, replacing it with a lean, native implementation purpose-built for Filament — with full Octane compatibility.

Native impersonation engine

All impersonation logic is now handled internally by ImpersonateManager — a stateless, Octane-safe service registered as a scoped binding. No more pulling in a general-purpose impersonation package.

Octane support

Impersonation works correctly under Laravel Octane (Swoole and FrankenPHP). The package uses direct session manipulation with Laravel's stock SessionGuard, avoiding any custom guard registration that could break under Octane's request sandboxing.

Impersonation facade

A new Impersonation facade provides a clean static API:

use STS\FilamentImpersonate\Facades\Impersonation;

Impersonation::isImpersonating();
Impersonation::getImpersonator();
Impersonation::getImpersonatorId();
Impersonation::enter($from, $to, $guardName);
Impersonation::leave();

Events

New package-owned events replace the lab404 events:

  • STS\FilamentImpersonate\Events\EnterImpersonation
  • STS\FilamentImpersonate\Events\LeaveImpersonation

Both carry $impersonator and $impersonated public properties.

Failure feedback

When impersonation fails (e.g. incompatible guard), a Filament danger notification is now shown instead of silently doing nothing. Diagnostic Log::warning() messages are also emitted for debugging.


Upgrading from v4

Removed: lab404/laravel-impersonate dependency

The package no longer requires or uses lab404/laravel-impersonate. It will be removed from your composer.lock automatically on update.

Removed: Impersonate trait (STS\FilamentImpersonate\Models\Impersonate)

The trait that was added to User models has been removed. If your User model uses this trait, remove it:

- use STS\FilamentImpersonate\Models\Impersonate;
-
  class User extends Authenticatable
  {
-     use Impersonate;
  }

If you had canImpersonate() or canBeImpersonated() methods on your model via the trait, just keep them as regular methods — the action checks for them with method_exists().

Removed: guard config key

The filament-impersonate.guard config option has been removed. The guard is now determined by the Filament panel's auth guard. For per-action override, use ->guard('custom') on the action.

If you published the config file, you can remove the guard key.

Changed: Event classes

If you listen for impersonation events, update your imports:

- use Lab404\Impersonate\Events\TakeImpersonation;
- use Lab404\Impersonate\Events\LeaveImpersonation;
+ use STS\FilamentImpersonate\Events\EnterImpersonation;
+ use STS\FilamentImpersonate\Events\LeaveImpersonation;

Changed: ImpersonateManager namespace

If you referenced the manager directly (most users won't have), the namespace changed:

- use Lab404\Impersonate\Services\ImpersonateManager;
+ use STS\FilamentImpersonate\ImpersonateManager;

Prefer using the Impersonation facade instead.

Changed: impersonateRecord() signature

The unused second parameter $visible has been removed:

- ->impersonateRecord($record, $visible)
+ ->impersonateRecord($record)

Internal Improvements

  • 124 tests covering the manager, action, banner, route, facade, and configuration
  • Translations for all 16 supported languages
  • Updated README with current Filament v5 examples and fresh screenshots

Don't miss a new filament-impersonate release

NewReleases is sending notifications on new releases.