mirror of
https://github.com/filamentphp/filament.git
synced 2026-09-24 15:42:09 +08:00
Optimize panel URL generation
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user