2020-09-15 17:46:19 +00:00
|
|
|
<?php
|
|
|
|
|
|
2025-01-16 07:54:02 +00:00
|
|
|
namespace BlaxSoftware\LaravelWebSockets\Test\Mocks;
|
2020-09-15 17:46:19 +00:00
|
|
|
|
|
|
|
|
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}";
|
|
|
|
|
}
|
|
|
|
|
}
|