fix(api): validate docker_compose_raw input in ApplicationsController
- Ensure docker_compose_raw is provided and base64 encoded before processing. - Return appropriate validation error messages for missing or incorrectly formatted input.
This commit is contained in:
		@@ -989,7 +989,34 @@ class ApplicationsController extends Controller
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            $dockerComposeDomainsJson = collect();
 | 
					            $dockerComposeDomainsJson = collect();
 | 
				
			||||||
            if ($request->has('docker_compose_domains')) {
 | 
					            if ($request->has('docker_compose_domains')) {
 | 
				
			||||||
                $yaml = Yaml::parse($application->docker_compose_raw);
 | 
					                if (! $request->has('docker_compose_raw')) {
 | 
				
			||||||
 | 
					                    return response()->json([
 | 
				
			||||||
 | 
					                        'message' => 'Validation failed.',
 | 
				
			||||||
 | 
					                        'errors' => [
 | 
				
			||||||
 | 
					                            'docker_compose_raw' => 'The base64 encoded docker_compose_raw is required.',
 | 
				
			||||||
 | 
					                        ],
 | 
				
			||||||
 | 
					                    ], 422);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (! isBase64Encoded($request->docker_compose_raw)) {
 | 
				
			||||||
 | 
					                    return response()->json([
 | 
				
			||||||
 | 
					                        'message' => 'Validation failed.',
 | 
				
			||||||
 | 
					                        'errors' => [
 | 
				
			||||||
 | 
					                            'docker_compose_raw' => 'The docker_compose_raw should be base64 encoded.',
 | 
				
			||||||
 | 
					                        ],
 | 
				
			||||||
 | 
					                    ], 422);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                $dockerComposeRaw = base64_decode($request->docker_compose_raw);
 | 
				
			||||||
 | 
					                if (mb_detect_encoding($dockerComposeRaw, 'ASCII', true) === false) {
 | 
				
			||||||
 | 
					                    return response()->json([
 | 
				
			||||||
 | 
					                        'message' => 'Validation failed.',
 | 
				
			||||||
 | 
					                        'errors' => [
 | 
				
			||||||
 | 
					                            'docker_compose_raw' => 'The docker_compose_raw should be base64 encoded.',
 | 
				
			||||||
 | 
					                        ],
 | 
				
			||||||
 | 
					                    ], 422);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                $dockerComposeRaw = base64_decode($request->docker_compose_raw);
 | 
				
			||||||
 | 
					                $yaml = Yaml::parse($dockerComposeRaw);
 | 
				
			||||||
                $services = data_get($yaml, 'services');
 | 
					                $services = data_get($yaml, 'services');
 | 
				
			||||||
                $dockerComposeDomains = collect($request->docker_compose_domains);
 | 
					                $dockerComposeDomains = collect($request->docker_compose_domains);
 | 
				
			||||||
                if ($dockerComposeDomains->count() > 0) {
 | 
					                if ($dockerComposeDomains->count() > 0) {
 | 
				
			||||||
@@ -1918,7 +1945,34 @@ class ApplicationsController extends Controller
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        $dockerComposeDomainsJson = collect();
 | 
					        $dockerComposeDomainsJson = collect();
 | 
				
			||||||
        if ($request->has('docker_compose_domains')) {
 | 
					        if ($request->has('docker_compose_domains')) {
 | 
				
			||||||
            $yaml = Yaml::parse($application->docker_compose_raw);
 | 
					            if (! $request->has('docker_compose_raw')) {
 | 
				
			||||||
 | 
					                return response()->json([
 | 
				
			||||||
 | 
					                    'message' => 'Validation failed.',
 | 
				
			||||||
 | 
					                    'errors' => [
 | 
				
			||||||
 | 
					                        'docker_compose_raw' => 'The base64 encoded docker_compose_raw is required.',
 | 
				
			||||||
 | 
					                    ],
 | 
				
			||||||
 | 
					                ], 422);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (! isBase64Encoded($request->docker_compose_raw)) {
 | 
				
			||||||
 | 
					                return response()->json([
 | 
				
			||||||
 | 
					                    'message' => 'Validation failed.',
 | 
				
			||||||
 | 
					                    'errors' => [
 | 
				
			||||||
 | 
					                        'docker_compose_raw' => 'The docker_compose_raw should be base64 encoded.',
 | 
				
			||||||
 | 
					                    ],
 | 
				
			||||||
 | 
					                ], 422);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            $dockerComposeRaw = base64_decode($request->docker_compose_raw);
 | 
				
			||||||
 | 
					            if (mb_detect_encoding($dockerComposeRaw, 'ASCII', true) === false) {
 | 
				
			||||||
 | 
					                return response()->json([
 | 
				
			||||||
 | 
					                    'message' => 'Validation failed.',
 | 
				
			||||||
 | 
					                    'errors' => [
 | 
				
			||||||
 | 
					                        'docker_compose_raw' => 'The docker_compose_raw should be base64 encoded.',
 | 
				
			||||||
 | 
					                    ],
 | 
				
			||||||
 | 
					                ], 422);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            $dockerComposeRaw = base64_decode($request->docker_compose_raw);
 | 
				
			||||||
 | 
					            $yaml = Yaml::parse($dockerComposeRaw);
 | 
				
			||||||
            $services = data_get($yaml, 'services');
 | 
					            $services = data_get($yaml, 'services');
 | 
				
			||||||
            $dockerComposeDomains = collect($request->docker_compose_domains);
 | 
					            $dockerComposeDomains = collect($request->docker_compose_domains);
 | 
				
			||||||
            if ($dockerComposeDomains->count() > 0) {
 | 
					            if ($dockerComposeDomains->count() > 0) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user