laravel-websockets/tests/Mocks/SignedMessage.php

33 lines
861 B
PHP
Raw Normal View History

<?php
2025-01-16 07:54:02 +00:00
namespace BlaxSoftware\LaravelWebSockets\Test\Mocks;
use Ratchet\ConnectionInterface;
class SignedMessage extends Message
{
/**
* Create a new signed message instance.
*
* @param array $payload
* @param ConnectionInterface $connection
* @param string $channelName
* @param string|null $encodedUser
* @return void
*/
public function __construct(array $payload, ConnectionInterface $connection, string $channelName, string $encodedUser = null)
{
parent::__construct($payload);
$signature = "{$connection->socketId}:{$channelName}";
if ($encodedUser) {
$signature .= ":{$encodedUser}";
}
$hash = hash_hmac('sha256', $signature, $connection->app->secret);
$this->payload['data']['auth'] = "{$connection->app->key}:{$hash}";
}
}