false, ]; } public function mount(Workspace $workspace): void { $this->workspace = $workspace; } /** * @return Collection */ public function getTenants(): Collection { $user = auth()->user(); if (! $user instanceof User) { return Tenant::query()->whereRaw('1 = 0')->get(); } $tenantIds = $user->tenantMemberships() ->pluck('tenant_id'); return Tenant::query() ->withTrashed() ->whereIn('id', $tenantIds) ->where('workspace_id', $this->workspace->getKey()) ->orderBy('name') ->get() ->filter(fn (Tenant $tenant): bool => app(TenantOperabilityService::class)->canViewTenantSurface($tenant)) ->values(); } public function goToChooseTenant(): void { $this->redirect(ChooseTenant::getUrl()); } public function openTenant(int $tenantId): void { $user = auth()->user(); if (! $user instanceof User) { abort(403); } $tenant = Tenant::query() ->withTrashed() ->where('workspace_id', $this->workspace->getKey()) ->whereKey($tenantId) ->first(); if (! $tenant instanceof Tenant) { abort(404); } if (! $user->canAccessTenant($tenant)) { abort(404); } $this->redirect(TenantResource::getUrl('view', ['record' => $tenant])); } }