diff --git a/src/Http/Requests/Concerns/InteractWithRepositories.php b/src/Http/Requests/Concerns/InteractWithRepositories.php index 5aab1ab7a..100357ac9 100644 --- a/src/Http/Requests/Concerns/InteractWithRepositories.php +++ b/src/Http/Requests/Concerns/InteractWithRepositories.php @@ -96,12 +96,12 @@ public function modelQuery(?string $repositoryId = null, ?string $uriKey = null) ); } - public function findModelOrFail($id = null): Model + public function findModelOrFail($id = null, ?string $uriKey = null): Model { return $id - ? $this->modelQuery($id)->firstOrFail() - : once(function () { - return $this->modelQuery()->firstOrFail(); + ? $this->modelQuery($id, $uriKey)->firstOrFail() + : once(function () use ($uriKey) { + return $this->modelQuery(uriKey: $uriKey)->firstOrFail(); }); } diff --git a/src/MCP/Concerns/McpActionTool.php b/src/MCP/Concerns/McpActionTool.php index 752a7a4b9..ae0b7579e 100644 --- a/src/MCP/Concerns/McpActionTool.php +++ b/src/MCP/Concerns/McpActionTool.php @@ -14,7 +14,7 @@ trait McpActionTool public function actionTool(Action $action, McpActionRequest $actionRequest): array { if ($id = $actionRequest->input('id')) { - if (! $action->authorizedToRun($actionRequest, $actionRequest->findModelOrFail($id))) { + if (! $action->authorizedToRun($actionRequest, $actionRequest->findModelOrFail($id, static::uriKey()))) { return [ 'error' => 'Not authorized to run this action', 'getter' => $action->uriKey(), diff --git a/src/MCP/Concerns/McpGetterTool.php b/src/MCP/Concerns/McpGetterTool.php index 2edd7586b..43f6873fb 100644 --- a/src/MCP/Concerns/McpGetterTool.php +++ b/src/MCP/Concerns/McpGetterTool.php @@ -15,7 +15,7 @@ trait McpGetterTool public function getterTool(Getter $getter, McpGetterRequest $getterRequest): array { if ($id = $getterRequest->input('id')) { - if (! $getter->authorizedToRun($getterRequest, $getterRequest->findModelOrFail($id))) { + if (! $getter->authorizedToRun($getterRequest, $getterRequest->findModelOrFail($id, static::uriKey()))) { return [ 'error' => 'Not authorized to run this getter', 'getter' => $getter->uriKey(), diff --git a/src/Repositories/ResolvesActions.php b/src/Repositories/ResolvesActions.php index 8acdf8917..c96495900 100644 --- a/src/Repositories/ResolvesActions.php +++ b/src/Repositories/ResolvesActions.php @@ -44,7 +44,7 @@ public function resolveShowActions(ActionRequest $request): Collection ->filter(fn ($action) => $action->isShownOnShow( $request, $request->repositoryWith( - $request->findModelOrFail() + $request->findModelOrFail(uriKey: static::uriKey()) ) ))->values(); } diff --git a/src/Repositories/ResolvesGetters.php b/src/Repositories/ResolvesGetters.php index f339ccea1..49ce3dfe4 100644 --- a/src/Repositories/ResolvesGetters.php +++ b/src/Repositories/ResolvesGetters.php @@ -44,7 +44,7 @@ public function resolveShowGetters(GetterRequest $request): Collection ->filter(fn ($getter) => $getter->isShownOnShow( $request, $request->repositoryWith( - $request->findModelOrFail() + $request->findModelOrFail(uriKey: static::uriKey()) ) ))->values(); }