diff --git a/config/nova-impersonate.php b/config/nova-impersonate.php index a0229e1..9aafdae 100644 --- a/config/nova-impersonate.php +++ b/config/nova-impersonate.php @@ -35,4 +35,8 @@ */ 'leave' => 'auth', ], + /** + * Leave impersonate before impersonating a user + */ + 'leave_before_impersonate' => false, ]; diff --git a/src/Http/Controllers/ImpersonateController.php b/src/Http/Controllers/ImpersonateController.php index a7de81b..d038e99 100644 --- a/src/Http/Controllers/ImpersonateController.php +++ b/src/Http/Controllers/ImpersonateController.php @@ -39,6 +39,14 @@ public function take(Request $request, $id) $this->recordAction($request->user()->getKey(), $user_to_impersonate, 'Impersonate'); } + if (config('nova-impersonate.leave_before_impersonate') && $this->manager->isImpersonating()) { + if (config('nova-impersonate.actionable')) { + $this->recordAction($this->manager->getImpersonatorId(), auth()->user(), 'Leave Impersonation'); + } + + $this->manager->leave(); + } + $this->manager->take($request->user(), $user_to_impersonate); $redirectBack = config('nova-impersonate.redirect_back');