getKey() : (int) $draft; $resolvedDraft = TenantOnboardingSession::query() ->with(['tenant', 'startedByUser', 'updatedByUser']) ->whereKey($draftId) ->first(); if (! $resolvedDraft instanceof TenantOnboardingSession) { throw new NotFoundHttpException; } if ((int) $resolvedDraft->workspace_id !== (int) $workspace->getKey()) { throw new NotFoundHttpException; } Gate::forUser($user)->authorize('view', $resolvedDraft); return $resolvedDraft; } /** * @return Collection */ public function resumableDraftsFor(User $user, Workspace $workspace): Collection { $drafts = TenantOnboardingSession::query() ->with(['tenant', 'startedByUser', 'updatedByUser']) ->where('workspace_id', (int) $workspace->getKey()) ->resumable() ->orderByDesc('updated_at') ->get(); return $drafts->filter(function (TenantOnboardingSession $draft) use ($user): bool { try { Gate::forUser($user)->authorize('view', $draft); } catch (AuthorizationException) { return false; } return true; })->values(); } }