Optimize panel URL generation

This commit is contained in:
Dan Harrin
2025-06-21 15:32:23 +01:00
parent 766f72f98a
commit af45e43661
2 changed files with 28 additions and 1 deletions
@@ -11,7 +11,7 @@ class RedirectToHomeController
{
$panel = Filament::getCurrentOrDefaultPanel();
$url = $panel->getUrl(Filament::getTenant());
$url = $panel->getRedirectUrl(Filament::getTenant());
if (blank($url)) {
abort(404);
@@ -7,6 +7,7 @@ use Filament\Facades\Filament;
use Filament\Navigation\NavigationManager;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Route;
use Laravel\SerializableClosure\Serializers\Native;
trait HasRoutes
@@ -166,6 +167,32 @@ trait HasRoutes
}
public function getUrl(?Model $tenant = null): ?string
{
$hasTenancy = $this->hasTenancy();
if ((! $tenant) && $hasTenancy && $this->auth()->hasUser()) {
$tenant = Filament::getUserDefaultTenant($this->auth()->user());
}
if (Route::has($homeRouteName = $this->generateRouteName('home'))) {
return route($homeRouteName, $tenant ? ['tenant' => $tenant] : []);
}
if ($tenant) {
$tenantSlugAttribute = $this->getTenantSlugAttribute();
$tenantRoutePrefix = $this->getTenantRoutePrefix() ?? '';
if (filled($tenantRoutePrefix)) {
$tenantRoutePrefix .= '/';
}
return url($this->getPath() . '/' . $tenantRoutePrefix . (filled($tenantSlugAttribute) ? $tenant->getAttributeValue($tenantSlugAttribute) : $tenant->getRouteKey()));
}
return url($this->getPath());
}
public function getRedirectUrl(?Model $tenant = null): ?string
{
if ((! $this->auth()->check()) && $this->hasLogin()) {
return $this->getLoginUrl();