packstub/filament-account-switcher
| Install | |
|---|---|
composer require packstub/filament-account-switcher |
|
| Latest Version: | v4.2.1 |
| PHP: | ^8.2 |
| Laravel: | 12 · 13 |
| Older releases: | 9 · 10 · 11 |
| License: | MIT |
| Last Updated: | Oct 22, 2026 |
| Links: | GitHub · Packagist |
Filament Account Switcher

Switch between accounts in a Filament panel without signing out — safely, in production.
Features
- Linked accounts: work from a low-privilege account and switch up to admin only when you need it.
- Impersonation: an action for your users table, a banner with Switch back, rules on your model.
- Developer logins: one-click sign-in buttons for your seeded accounts, on the login page and in the "Switch to" menu (searchable, tagged, or any account in the database), only in the environments you allow.
- Audit trail: every switch logged with who, why, from where and any context you attach, plus events and a
log()call for switches made elsewhere. - Configurable per panel: turn each feature on or off, add your own rules, move the banner.
- Dark mode and translations: built from Filament components, every string in a language file.
Formerly xlite-dev/filament-impersonate — see the upgrade guide.
Compatibility
| Plugin | Filament | Laravel | PHP |
|---|---|---|---|
| 4.x | 4.x, 5.x | 12.x, 13.x | 8.2+ |
3.x (xlite-dev/filament-impersonate) |
4.x, 5.x | 9.x – 12.x | 8.1+ |
Installation
composer require packstub/filament-account-switcher
php artisan packstub-account-switcher:install
Add the trait to your user model and the plugin to your panel:
use Packstub\AccountSwitcher\Concerns\HasLinkedAccounts;
class User extends Authenticatable implements FilamentUser
{
use HasLinkedAccounts;
public function canImpersonate(User $target): bool
{
return $this->hasRole('super-admin');
}
}
use Packstub\AccountSwitcher\AccountSwitcherPlugin;
$panel->plugin(
AccountSwitcherPlugin::make()
->developerLogins(['admin@example.com', 'user@example.com']),
);
Full walkthrough: Installation.
Linked accounts
Link the accounts one person owns. A Switch to menu next to the user menu lists them with their label and e-mail.

Switching down to a lower-privilege account is one click. Switching up asks for the target account's password, so a compromised daily session can never reach the admin account on its own.

The Linked accounts page (in the user menu) links an existing account, creates a sub-account, renames links and sets the per-link password rule.

// Or link programmatically — one click down, password up
$admin->linkAccount($daily, label: 'Daily', requiresPassword: false);
Read more: Linked accounts · Security model.
Impersonation
Drop ImpersonateAction into your users table or a page header. It is hidden for records the current user may not impersonate, based on canImpersonate() / canBeImpersonated() on your model.
use Packstub\AccountSwitcher\Filament\Actions\ImpersonateAction;
->recordActions([
ImpersonateAction::make(),
])

While impersonating, a banner stays visible on every page with a Switch back button.

Read more: Impersonation.
Developer logins
One-click sign-in for the accounts you seed, shown under the login form. They only render in the environments listed in the config (local by default), whatever the panel says.
AccountSwitcherPlugin::make()
->developerLogins(['admin@example.com', 'user@example.com'])

Read more: Developer logins.
Configuration
AccountSwitcherPlugin::make()
->impersonation() // on by default
->linkedAccounts() // on by default
->developerLogins(['admin@example.com']) // off by default
->canImpersonateUsing(fn (User $by, User $target) => $by->can('impersonate', $target))
->canSwitchUsing(fn (User $from, User $to) => ! $to->is_locked)
->banner(position: 'top', style: 'light')
->redirectTo('/admin')
Read more: Configuration — the config file, events, the switch log and the AccountSwitcher facade.
Documentation
The same pages live in the docs/ directory of this repository.
Testing
composer test
Changelog
See the changelog.
Security vulnerabilities
Please e-mail support@packstub.dev rather than opening a public issue.
Credits
License
MIT. See the license file.
Related Packages
Form builder for Filament panels: build forms in the admin, render them with Bla...
Star ratings for Filament v4 and v5: a form field, table column, infolist entry...
Filament v5 plugin for institutional announcements on the admin dashboard
Visual workflow automations for Filament panels: triggers, conditions and action...
Manage your Filament users with integration of filament-shield, filament-authent...
Version History
| Version | Released | PHP | Laravel | License |
|---|---|---|---|---|
| v4.2.1 | ^8.2 | ^12.0 || | MIT | |
| v4.2.0 | ^8.2 | ^12.0 || | MIT | |
| v4.1.0 | ^8.2 | ^12.0 || | MIT | |
| v4.0.4 | ^8.2 | ^12.0 || | MIT | |
| v4.0.3 | ^8.2 | ^12.0 || | MIT | |
| v4.0.2 | ^8.2 | ^12.0 || | MIT | |
| v4.0.1 | ^8.2 | ^12.0 || | MIT | |
| v4.0.0 | ^8.2 | ^12.0 || | MIT | |
| 3.0.1 | ^8.1 | ^12.0| | MIT | |
| 3.0.0 | ^8.1 | ^12.0| | MIT | |
| 2.0.2 | ^8.1 | ^12.0| | MIT | |
| 2.0.1 | ^8.1 | ^11.0| | MIT | |
| 2.0.0 | ^8.1 | ^10.0| | MIT | |
| 1.1.4 | ^8.0 | ^9.0| | MIT | |
| 1.1.3 | ^8.0 | ^9.0| | MIT | |
| 1.1.2 | ^8.0 | ^9.0 | MIT | |
| 1.1.1 | ^8.0 | ^9.0 | MIT | |
| 1.1.0 | ^8.0 | ^9.0 | MIT | |
| 1.0.3 | ^8.0 | ^9.0 | MIT | |
| 1.0.2 | ^8.0 | ^9.0 | MIT | |
| 1.0.1 | ^8.0 | ^9.0 | MIT | |
| 1.0 | ^8.0 | ^9.0 | MIT |
Pre-releases (2)
| Version | Released | PHP | Laravel | License |
|---|---|---|---|---|
| 2.0.0-beta2 | ^8.0 | ^9.0| | MIT | |
| 2.0.0-beta1 | ^8.0 | ^9.0| | MIT |