From aa3056e1d1508b96e5e0a15003e83ea5a0519188 Mon Sep 17 00:00:00 2001 From: kusowl Date: Wed, 28 Jan 2026 10:09:15 +0530 Subject: [PATCH] feature(admin-panel): admin can stop impersonating - add a alert which shows which user admin is impersonating - add a logout icon, which stops impersonating and restore admin dashboard --- app/Http/Controllers/Auth/ImpersonatedUserController.php | 2 ++ resources/views/components/impersonate-alert.blade.php | 8 ++++++++ resources/views/components/layout.blade.php | 3 +++ resources/views/components/ui/button.blade.php | 4 +++- routes/web/auth.php | 8 +++++--- 5 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 resources/views/components/impersonate-alert.blade.php diff --git a/app/Http/Controllers/Auth/ImpersonatedUserController.php b/app/Http/Controllers/Auth/ImpersonatedUserController.php index aa20423..8e0d59b 100644 --- a/app/Http/Controllers/Auth/ImpersonatedUserController.php +++ b/app/Http/Controllers/Auth/ImpersonatedUserController.php @@ -11,6 +11,7 @@ class ImpersonatedUserController extends Controller public function store(User $user) { Session()->put('impersonate', Auth::id()); + Session()->put('impersonate_name', $user->name); Auth::login($user); @@ -24,6 +25,7 @@ public function destroy() Auth::loginUsingId($adminId); Session()->forget('impersonate'); + Session()->forget('impersonate_name'); return to_route('admin.dashboard'); } diff --git a/resources/views/components/impersonate-alert.blade.php b/resources/views/components/impersonate-alert.blade.php new file mode 100644 index 0000000..ce260e6 --- /dev/null +++ b/resources/views/components/impersonate-alert.blade.php @@ -0,0 +1,8 @@ +
+ +
+ You are impersonating as {{session()->get('impersonate_name', 'a User')}} + +
+
+
diff --git a/resources/views/components/layout.blade.php b/resources/views/components/layout.blade.php index 7bb929b..7364cfd 100644 --- a/resources/views/components/layout.blade.php +++ b/resources/views/components/layout.blade.php @@ -26,6 +26,9 @@ diff --git a/resources/views/components/ui/button.blade.php b/resources/views/components/ui/button.blade.php index cdfdddf..a39b000 100644 --- a/resources/views/components/ui/button.blade.php +++ b/resources/views/components/ui/button.blade.php @@ -23,7 +23,9 @@ @if($icon !=='') @svg("heroicon-o-$icon", 'w-5 h-5') @endif -

{{$slot}}

+ @if(isset($slot)) +

{{$slot}}

+ @endif @else diff --git a/routes/web/auth.php b/routes/web/auth.php index 6e4fc26..6b5f63f 100644 --- a/routes/web/auth.php +++ b/routes/web/auth.php @@ -17,7 +17,9 @@ ->middleware('auth') ->name('logout'); -Route::middleware([HasRole::class.':'.UserTypes::Admin->value, 'auth'])->group(function () { - Route::get('/impersonate/{user}', [ImpersonatedUserController::class, 'store'])->name('impersonate'); - Route::delete('/impersonate', [ImpersonatedUserController::class, 'destroy'])->name('impersonate.destroy'); +Route::middleware('auth')->group(function () { + Route::get('/impersonate/{user}', [ImpersonatedUserController::class, 'store']) + ->middleware(HasRole::class.':'.UserTypes::Admin->value) + ->name('impersonate'); + Route::get('/impersonate', [ImpersonatedUserController::class, 'destroy'])->name('impersonate.destroy'); });