1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2026-03-22 07:54:04 +00:00

Instead of setting the 'tenancy_impersonating' session variable, store auth guard in 'tenancy_impersonation_guard'

Also make `stopImpersonating()` able to keep the user logged in.
This commit is contained in:
lukinovec 2026-03-03 12:27:30 +01:00
parent 37b2a91aa9
commit 4341fc5d08
2 changed files with 14 additions and 10 deletions

View file

@ -61,9 +61,9 @@ class UserImpersonation implements Feature
Auth::guard($token->auth_guard)->loginUsingId($token->user_id, $token->remember);
$token->delete();
session()->put('tenancy_impersonation_guard', $token->auth_guard);
session()->put('tenancy_impersonating', true);
$token->delete();
return redirect($token->redirect_url);
}
@ -76,16 +76,20 @@ class UserImpersonation implements Feature
public static function isImpersonating(): bool
{
return session()->has('tenancy_impersonating');
return session()->has('tenancy_impersonation_guard');
}
/**
* Logout from the current domain and forget impersonation session.
*/
public static function stopImpersonating(): void
public static function stopImpersonating(bool $logout = true): void
{
auth()->logout();
if ($logout) {
$guard = session()->get('tenancy_impersonation_guard');
session()->forget('tenancy_impersonating');
auth($guard)->logout();
}
session()->forget('tenancy_impersonation_guard');
}
}