Package

Kabbouchi Nova Impersonate

A Laravel Nova field allows you to authenticate as your users.

Package

kabbouchi/nova-impersonate

View on GitHub →

Nova Impersonate Field

This field allows you to authenticate as your users.

Behind the scenes 404labfr/laravel-impersonate is used.

Installation

You can install the package in to a Laravel app that uses Nova via composer:

composer require kabbouchi/nova-impersonate

Usage

Add Impersonate::make($this) field in App\Nova\User.php

<?php
 
namespace App\Nova;
 
use KABBOUCHI\NovaImpersonate\Impersonate;
 
...
 
class User extends Resource
{
...
 
public function fields(Request $request)
{
return [
ID::make()->sortable(),
 
Gravatar::make(),
 
Text::make('Name')
->sortable()
->rules('required', 'max:255'),
 
Text::make('Email')
->sortable()
->rules('required', 'email', 'max:255')
->creationRules('unique:users,email')
->updateRules('unique:users,email,{{resourceId}}'),
 
Password::make('Password')
->onlyOnForms()
->creationRules('required', 'string', 'min:6')
->updateRules('nullable', 'string', 'min:6'),
 
 
Impersonate::make($this), // <---
 
// or
 
Impersonate::make($this->resource), // works in lenses
 
// or
 
Impersonate::make($this)->withMeta([
'hideText' => false,
]),
 
// or
 
Impersonate::make($this)->withMeta([
'redirect_to' => '/custom-redirect-url'
]),
 
];
}
 
...
}

Advanced Usage

By default all users can impersonate an user.
You need to add the method canImpersonate() to your user model:

/**
* @return bool
*/
public function canImpersonate($impersonated = null)
{
// For example
return $this->is_admin == 1;
}

By default all users can be impersonated.
You need to add the method canBeImpersonated() to your user model to extend this behavior: Please make sure to pass instance Model or Nova Resource Impersonate::make($this) Impersonate::make($this->resource)

/**
* @return bool
*/
public function canBeImpersonated(?\Illuminate\Contracts\Auth\Authenticatable $impersonator = null)
{
// For example
return $this->can_be_impersonated == 1;
}

By default name field is used for when displaying what user is impersonated at a moment. You need to add the method impersonateName() to your user model to extend this behavior: Please make sure to pass instance Model or Nova Resource Impersonate::make($this) Impersonate::make($this->resource)

/**
* @return string
*/
public function impersonateName()
{
// For example
return $this->email;
}

Events

You can hook onto the underlying package events

May be userful for things like setting session data

  • Lab404\Impersonate\Events\TakeImpersonation
  • Lab404\Impersonate\Events\LeaveImpersonation

You can optionally publish the config file with:

php artisan vendor:publish --tag=nova-impersonate-config

This is the default content of the config file published at config/nova-impersonate.php:

<?php
 
return [
'enable_middleware' => true, // To inject the 'nova-impersonate::reverse' view in every route when impersonating
'redirect_back' => true, // false (nova path), true or <url>
'redirect_to' => '/',
'key_down' => 'i', // Press `i` to impersonate user in details page
'middleware' => [
'base' => 'web', // Middleware used for nova-impersonate routes
'leave' => 'auth', // Extra middleware used for leave route
],
];

You can publish and customize the nova-impersonate::reverse view

php artisan vendor:publish --tag=nova-impersonate-views

Credits

The MIT License (MIT). Please see License File for more information.

Kabbouchi Nova Impersonate Related Articles

Learn how to impersonate users in your Laravel app image

Learn how to impersonate users in your Laravel app

Read article
Pushsilver logo

Pushsilver

Pushsilver is simple invoicing for freelancers and small studios — send polished invoices, automate reminders, and get paid on time without the bloat.

Pushsilver
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
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
Harpoon: Next generation time tracking and invoicing logo

Harpoon: Next generation time tracking and invoicing

The next generation time-tracking and billing software that helps your agency plan and forecast a profitable future.

Harpoon: Next generation time tracking and invoicing
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