Merge pull request #4918 from appwrite/fix-nested-graphql-escaping

Fix: nested escaping
This commit is contained in:
Eldad A. Fux
2022-12-27 22:51:08 +02:00
committed by GitHub
+22 -7
View File
@@ -291,13 +291,7 @@ class Resolvers
return;
}
foreach ($payload as $key => $value) {
if (\str_starts_with($key, '$')) {
$escapedKey = \str_replace('$', '_', $key);
$payload[$escapedKey] = $value;
unset($payload[$key]);
}
}
$payload = self::escapePayload($payload, 1);
if ($beforeResolve) {
$payload = $beforeResolve($payload);
@@ -305,4 +299,25 @@ class Resolvers
$resolve($payload);
}
private static function escapePayload(array $payload, int $depth)
{
if ($depth > App::getEnv('_APP_GRAPHQL_MAX_DEPTH', 3)) {
return;
}
foreach ($payload as $key => $value) {
if (\str_starts_with($key, '$')) {
$escapedKey = \str_replace('$', '_', $key);
$payload[$escapedKey] = $value;
unset($payload[$key]);
}
if (\is_array($value)) {
$payload[$key] = self::escapePayload($value, $depth + 1);
}
}
return $payload;
}
}