Impersonate Users Backpack Laravel

maurohmartinez/impersonate-users-backpack-laravel image

Impersonate Users Backpack Laravel stats

Downloads
2.7K
Stars
10
Open Issues
1
Forks
4

View on GitHub →

A simple package that adds the impersonate operation for admins

Impersonate users with Backpack for Laravel

This is a simple package to allow admins impersonate users.

Install

In your terminal:

# install the package
composer require maurohmartinez/impersonate-users-backpack-laravel

In case you want/need to publish files to further customize this package:

php artisan vendor:publish --provider="MHMartinez\ImpersonateUser\app\Providers\ImpersonateUserServiceProvider"

Usage

1- Add in your UserCrudController.

use \MHMartinez\ImpersonateUser\app\Http\Controllers\Operations\ImpersonateUserOperation;

This will add a button for List and Show Operations to impersonate users.

2- Next step is to handle the logic to indicate which admins have permission to impersonate others, or can be impersonated. You just need to modify a bit your User Model to implement the interface ImpersonateInterface like this:

class User extends Authenticatable implements ImpersonateInterface

And then add the following two methods in your User Model:

/**
* If you use Laravel-Backpack/PermissionManager you can do like this.
* But you can also add any logic you need.
*/
public function canImpersonateOthers(): bool
{
return $this->can('permission_to_impersonate'); // or replace "permission_to_impersonate" with the right permission
}
/**
* Following the same example, you can deny admins from impersonating super admins.
*/
public function canBeImpersonated(): bool
{
return !$this->hasRole('superadmin'); // or replace "superadmin" with the right permission
}

3- Now, you just need to add the button to exit impersonating (no worries, it will only show up when needed). For example, you can add the button in topbar_right_content.blade.php like this:

@include('impersonate_user::exit_impersonated')

4- Important — If you want to impersonate non-admin users you will need to skip the backpack middleware that determines if the user is admin. This is because this operation will need to allow your impersonated non-admin user to use a backpack route to log you back. How to do it?

  • Publish the config file if you haven't done so (described here, above step one).
php artisan vendor:publish --provider="MHMartinez\ImpersonateUser\app\Providers\ImpersonateUserServiceProvider" --tag=config
  • Add the middleware classname like it follows, and you will be good to go:
return [
'session_key' => 'impersonating_user',
'base_guard' => 'backpack',
'admin_middleware' => Path\To\Middleware\IsAdmin::class,
];

This will allow this operation to skip that middleware when logging out impersonated non-admin users.

Credits

maurohmartinez photo

Full Stack developer. From Buenos Aires, Living in Latvia.

Cube

Laravel Newsletter

Join 40k+ other developers and never miss out on new tips, tutorials, and more.


Maurohmartinez Impersonate Users Backpack Laravel Related Articles

Take the Annual State of Laravel 2024 Survey image

Take the Annual State of Laravel 2024 Survey

Read article
Build Custom Admin Panels With Backpack for Laravel image

Build Custom Admin Panels With Backpack for Laravel

Read article
Shift logo

Shift

Running an old Laravel version? Instant, automated Laravel upgrades and code modernization to keep your applications fresh.

Shift
Acquaint Softtech logo

Acquaint Softtech

Acquaint Softtech offers AI-ready Laravel developers who onboard in 48 hours at $3000/Month with no lengthy sales process and a 100 percent money-back guarantee.

Acquaint Softtech
No Compromises logo

No Compromises

Joel and Aaron, the two seasoned devs from the No Compromises podcast, are now available to hire for your Laravel project. ⬧ Flat rate of $9500/mo. ⬧ No lengthy sales process. ⬧ No contracts. ⬧ 100% money back guarantee.

No Compromises
Kirschbaum logo

Kirschbaum

Providing innovation and stability to ensure your web application succeeds.

Kirschbaum
Tinkerwell logo

Tinkerwell

The must-have code runner for Laravel developers. Tinker with AI, autocompletion and instant feedback on local and production environments.

Tinkerwell
Laravel Cloud logo

Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Laravel Cloud