better impersonate

This commit is contained in:
Andras Bacsai
2024-12-16 12:48:09 +01:00
parent a3e53fc3aa
commit a0ad4bc90e
3 changed files with 37 additions and 17 deletions

View File

@@ -21,16 +21,28 @@ class Index extends Component
public function mount() public function mount()
{ {
if (! isCloud()) { if (! isCloud() && ! isDev()) {
return redirect()->route('dashboard'); return redirect()->route('dashboard');
} }
if (Auth::id() !== 0 && ! session('impersonating')) {
if (Auth::id() !== 0) {
return redirect()->route('dashboard'); return redirect()->route('dashboard');
} }
$this->getSubscribers(); $this->getSubscribers();
} }
public function back()
{
if (session('impersonating')) {
session()->forget('impersonating');
$user = User::find(0);
$team_to_switch_to = $user->teams->first();
Auth::login($user);
refreshSession($team_to_switch_to);
return redirect(request()->header('Referer'));
}
}
public function submitSearch() public function submitSearch()
{ {
if ($this->search !== '') { if ($this->search !== '') {
@@ -52,9 +64,10 @@ class Index extends Component
if (Auth::id() !== 0) { if (Auth::id() !== 0) {
return redirect()->route('dashboard'); return redirect()->route('dashboard');
} }
session(['impersonating' => true]);
$user = User::find($user_id); $user = User::find($user_id);
$team_to_switch_to = $user->teams->first(); $team_to_switch_to = $user->teams->first();
Cache::forget("team:{$user->id}"); // Cache::forget("team:{$user->id}");
Auth::login($user); Auth::login($user);
refreshSession($team_to_switch_to); refreshSession($team_to_switch_to);

View File

@@ -340,7 +340,8 @@
</li> </li>
@endif @endif
@if (isCloud() && isInstanceAdmin()) @if (isCloud() || isDev())
@if (isInstanceAdmin() || session('impersonating'))
<li> <li>
<a title="Admin" class="menu-item" href="/admin"> <a title="Admin" class="menu-item" href="/admin">
<svg class="text-pink-600 icon" viewBox="0 0 256 256" <svg class="text-pink-600 icon" viewBox="0 0 256 256"
@@ -352,6 +353,7 @@
</a> </a>
</li> </li>
@endif @endif
@endif
<div class="flex-1"></div> <div class="flex-1"></div>
@if (isInstanceAdmin() && !isCloud()) @if (isInstanceAdmin() && !isCloud())
@persist('upgrade') @persist('upgrade')

View File

@@ -1,7 +1,12 @@
<div> <div>
<h1>Admin Dashboard</h1> <h1>Admin Dashboard</h1>
<h3 class="pt-4">Who am I now?</h3> <div class="flex gap-2 pt-4">
<div class="pb-4">{{ auth()->user()->name }}</div> <h3>Who am I now?</h3>
@if (session('impersonating'))
<x-forms.button wire:click="back">Go back to root</x-forms.button>
@endif
</div>
<div class="pb-4">{{ auth()->user()->name }} ({{ auth()->user()->email }})</div>
<form wire:submit="submitSearch" class="flex flex-col gap-2 lg:flex-row"> <form wire:submit="submitSearch" class="flex flex-col gap-2 lg:flex-row">
<x-forms.input wire:model="search" placeholder="Search for a user" /> <x-forms.input wire:model="search" placeholder="Search for a user" />
<x-forms.button type="submit">Search</x-forms.button> <x-forms.button type="submit">Search</x-forms.button>