404labfr / laravel-impersonate

Laravel Impersonate is a plugin that allows you to authenticate as your users.
https://marceau.casals.fr
1.95k stars 203 forks source link

When I leave the impersonation, it logs out #165

Open adantart opened 1 year ago

adantart commented 1 year ago

Laravel Framework 9.19.0

I have tried using the link generated by route('impersonate.leave') and also with my own controller method and using manually: Auth::user()->leaveImpersonation();

But both ways redirects me to the login page, since it loses the authentication of the original user.

I tried (reading some other issues) using Route::middleware(['auth:web',]) instead of auth:sanctum. And also add this

Event::listen(\Lab404\Impersonate\Events\TakeImpersonation::class,
            function(\Lab404\Impersonate\Events\TakeImpersonation $event) {
                session()->put('password_hash_sanctum', $event->impersonated->getAuthPassword());
            });
        Event::listen(\Lab404\Impersonate\Events\LeaveImpersonation::class,
            function(\Lab404\Impersonate\Events\LeaveImpersonation $event) {
                session()->put('password_hash_sanctum', $event->impersonator->getAuthPassword());
            });

But problem persists...

Any ideas ?

Arne1303 commented 1 year ago

This might be #162, there is a workaround I'm the comments over there which you could test

adantart commented 1 year ago

Unfortunately, it still logs out when I leave impersonation

henriquecm commented 1 year ago

I had this problem on this library, then I looked for another one, but unfortunately it had the same problem, but after a while I found a solution, so it might work on this one too.

$impersonate = Auth::user()?->impersonate();
$user = $impersonate->getImpersonator();
$impersonate->leave();

Auth::guard('sanctum')->setUser($user);