Fix: API ignores destination_uuid when creating applications

The create_application method validates that destination_uuid is
provided when a server has multiple destinations, but then ignores
it and always uses $destinations->first().

This change looks up the destination by UUID when destination_uuid
is provided, and returns a 404 if the UUID doesn't match. When
destination_uuid is not provided, the existing behavior is preserved.
This commit is contained in:
Lucas Soeth 2026-03-01 16:01:02 +01:00
parent 9a4b4280be
commit 16938aac9e

View file

@ -1094,7 +1094,14 @@ class ApplicationsController extends Controller
if ($destinations->count() > 1 && ! $request->has('destination_uuid')) {
return response()->json(['message' => 'Server has multiple destinations and you do not set destination_uuid.'], 400);
}
$destination = $destinations->first();
if ($request->has('destination_uuid')) {
$destination = $destinations->where('uuid', $request->destination_uuid)->first();
if (! $destination) {
return response()->json(['message' => 'Destination not found.'], 404);
}
} else {
$destination = $destinations->first();
}
if ($type === 'public') {
$validationRules = [
'git_repository' => ['string', 'required', new ValidGitRepositoryUrl],