Skip to content

Commit

Permalink
[Live] Fix checksum calculation for deeply nested data
Browse files Browse the repository at this point in the history
  • Loading branch information
1ed committed Apr 16, 2023
1 parent 2e2b82d commit 5b0b862
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion src/LiveComponent/src/LiveComponentHydrator.php
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ private static function coerceStringValue(string $value, string $type, bool $all
private function calculateChecksum(array $dehydratedPropsData): ?string
{
// sort so it is always consistent (frontend could have re-ordered data)
ksort($dehydratedPropsData);
$this->recursiveKeySort($dehydratedPropsData);

return base64_encode(hash_hmac('sha256', json_encode($dehydratedPropsData), $this->secret, true));
}
Expand Down Expand Up @@ -550,4 +550,14 @@ private function combineAndValidateProps(array $props, array $updatedPropsFromPa

return $dehydratedOriginalProps;
}

private function recursiveKeySort(array &$data): void
{
foreach ($data as &$value) {
if (\is_array($value)) {
$this->recursiveKeySort($value);
}
}
ksort($data);
}
}

0 comments on commit 5b0b862

Please sign in to comment.