linkedModelId($descriptor); $tenantId = $descriptor->tenantId; if ($backupSetId === null || $tenantId === null || $tenantId <= 0) { return $this->unresolved($descriptor); } $backupSet = BackupSet::query() ->with('tenant') ->whereKey($backupSetId) ->where('tenant_id', $tenantId) ->first(); if (! $backupSet instanceof BackupSet) { return $this->missing($descriptor); } if (! $this->canOpenTenantRecord($backupSet->tenant, Capabilities::TENANT_VIEW)) { return $this->inaccessible($descriptor); } return $this->resolved( descriptor: $descriptor, primaryLabel: (string) $backupSet->name, secondaryLabel: 'Backup set #'.$backupSet->getKey(), linkTarget: new ReferenceLinkTarget( targetKind: ReferenceClass::BackupSet->value, url: BackupSetResource::getUrl('view', ['record' => $backupSet], tenant: $backupSet->tenant), actionLabel: 'View backup set', contextBadge: 'Tenant', ), ); } private function canOpenTenantRecord(?Tenant $tenant, string $capability): bool { $user = auth()->user(); return $tenant instanceof Tenant && $user instanceof User && $this->capabilityResolver->isMember($user, $tenant) && $this->capabilityResolver->can($user, $tenant, $capability); } }