@ornate totem @hexed sphinx
I have a setup like this, and use below code.
Don't think it is the best code solution, but it works for me till i see a better method for doing this.
Helper Function
public static function getPanelDashboardUrlFromUser()
{
if (Filament::auth()->check()) {
$user = Filament::auth()->user();
$panelAdmin = Filament::getPanel('admin');
$panelOther = Filament::getPanel('other');
if ($user->canAccessPanel($panelAdmin)) {
return route('filament.admin.pages.dashboard');
} elseif ($user->canAccessPanel($panelOther)) {
return route('filament.other.pages.dashboard');
} else {
return null;
}
}
return null;
}
Default Panel (also login panel)
return $panel
->id('main')
->path('app')
->login()
Other Panel.
return $panel
->id('other')
->path('other')
->login(fn () => redirect(Filament::getPanel('main')->login()->getUrl()))
Admin Panel.
return $panel
->id('admin')
->path('admin')
->login(fn () => redirect(Filament::getPanel('main')->login()->getUrl()))
Class LoginResponse
class LoginResponse implements Responsable
{
public function toResponse($request): RedirectResponse|Redirector
{
$panelRedirct = Helpers::getPanelDashboardUrlFromUser();
if ($panelRedirct != null) {
return redirect()->to($panelRedirct);
}
return redirect()->intended(Filament::getUrl());
}
}
Main Route
Route::get('/', function () {
if (Filament::auth()->check()) {
$panelRedirct = Helpers::getPanelDashboardUrlFromUser();
if ($panelRedirct != null) {
return redirect()->to($panelRedirct);
}
}
return redirect('app');
});