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
Curotec logo

Curotec

World class Laravel experts with GenAI dev skills. LATAM-based, embedded engineers that ship fast, communicate clearly, and elevate your product. No bloat, no BS.

Curotec
Honeybadger logo

Honeybadger

Simple developer-focused application monitoring for Laravel. Error tracking, log management, uptime monitoring, status pages, and more!

Honeybadger
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit: Laravel SaaS Starter Kit

SaaSykit is a Multi-tenant Laravel SaaS Starter Kit that comes with all features required to run a modern SaaS. Payments, Beautiful Checkout, Admin Panel, User dashboard, Auth, Ready Components, Stats, Blog, Docs and more.

SaaSykit: Laravel SaaS Starter Kit
Blastup logo

Blastup

Blastup provides social media enhancement services including buying Instagram likes, followers, and views, with features like instant delivery and a variety of packages to suit different needs.

Blastup
PhpStorm logo

PhpStorm

The go-to PHP IDE with extensive out-of-the-box support for Laravel and its ecosystem.

PhpStorm
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