Account Switcher plugin screenshot
Dark mode ready
Multilingual support
Supports v5.x

Account Switcher by Packstub

Community

Switch between accounts without signing out: linked sub-accounts with password-confirmed escalation, impersonation with a switch-back banner, and one-click developer logins.

Tags: Panel Authentication Panels Action Developer Tool
Supported versions:
5.x 4.x
Packstub avatar Author: Packstub

Package health

Automated checks of this plugin's Composer package

100 / 100
Security 100
Maintenance 100
Ecosystem 100
15 checks
  • Passed: GitHub Actions pinned to SHA
  • Skipped: GitLab CI includes pinned to SHA
  • Passed: Open security advisories
  • Passed: Dependabot PR responsiveness — No open Dependabot PRs.
  • Skipped: Renovate MR responsiveness
  • Passed: Dependabot or Renovate configured
  • Passed: Dependency update cooldown configured
  • Passed: Provides a security policy
  • Passed: Abandoned or archived — No consulted source marks the package abandoned (packagist, github).
  • Passed: Commit and release recency — Active: last commit 9 days ago; last release 24 days ago.
  • Passed: composer.lock not committed by library — composer.lock is absent from the released dist archive.
  • Passed: Dist archive is lean
  • Passed: Current Laravel version supported — Package dependencies resolve together with current Laravel 13.0.
  • Passed: Current PHP version supported — Constraint ^8.2 supports current PHP 8.5.
  • Skipped: Current Symfony version supported
Third-party plugin. This is built by the community, not the Filament team. Filament does not review, endorse, or vet the security of plugins outside the filament/ namespace. Review the source and install at your own risk. Found malware or an unresolved security issue the author won't address? Report it .
Powered by Plumb Last scanned 2 weeks ago

Documentation

Filament Account Switcher — switch accounts, never sign out

Latest Version on Packagist Tests Total Downloads License Listed on filamentphp.com Sponsor

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, only in the environments you allow.
  • Audit trail: every switch logged with who, why and from where, plus events.
  • 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.

The Switch to menu listing the linked accounts

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.

Switching up to the admin account asks for its password

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.

The Linked accounts page

// 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(),
])

The Impersonate action on each row of the users table

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

The impersonation banner 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'])

Developer login buttons under the login form

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.

The author

Packstub avatar Author: Packstub

Packstub builds plugins for Filament and Laravel, from open-source utilities to paid infrastructure for multi-tenant SaaS. It is the author of Packstub Tenancy, which brings stancl/tenancy's database-per-tenant model to Filament panels, and Filament Account Switcher, which adds linked accounts, impersonation, and developer logins with an audit trail. Packstub is run by XLITE, a web development studio based in Moldova.

Plugins
5
Stars
16

From the same author