linkedModelId($descriptor); $workspaceId = $descriptor->workspaceId; if ($snapshotId === null || $workspaceId === null || $workspaceId <= 0) { return $this->unresolved($descriptor); } $snapshot = BaselineSnapshot::query() ->with('baselineProfile') ->whereKey($snapshotId) ->where('workspace_id', $workspaceId) ->first(); if (! $snapshot instanceof BaselineSnapshot) { return $this->missing($descriptor); } if (! $this->canOpenWorkspaceBaselines((int) $snapshot->workspace_id)) { return $this->inaccessible($descriptor); } $profileName = $snapshot->baselineProfile?->name; return $this->resolved( descriptor: $descriptor, primaryLabel: is_string($profileName) && trim($profileName) !== '' ? $profileName : 'Baseline snapshot', secondaryLabel: 'Baseline snapshot #'.$snapshot->getKey(), linkTarget: new ReferenceLinkTarget( targetKind: ReferenceClass::BaselineSnapshot->value, url: BaselineSnapshotResource::getUrl('view', ['record' => $snapshot], panel: 'admin'), actionLabel: 'View snapshot', contextBadge: 'Workspace', ), ); } private function canOpenWorkspaceBaselines(int $workspaceId): bool { $user = auth()->user(); if (! $user instanceof User) { return false; } $workspace = Workspace::query()->whereKey($workspaceId)->first(); if (! $workspace instanceof Workspace) { return false; } return $this->workspaceCapabilityResolver->isMember($user, $workspace) && $this->workspaceCapabilityResolver->can($user, $workspace, Capabilities::WORKSPACE_BASELINES_VIEW); } }