This commit is contained in:
freek 2018-11-26 09:03:04 +01:00
parent eb82682e87
commit ea44025e88
3 changed files with 19 additions and 11 deletions

View File

@ -10,7 +10,7 @@ class ShowDashboard
public function __invoke(Request $request, ClientProvider $clients)
{
return view('websockets::dashboard', [
'clients' => $clients->all()
'clients' => $clients->all(),
]);
}
}

View File

@ -40,8 +40,9 @@ abstract class EchoController implements HttpServerInterface
$laravelRequest = Request::createFromBase((new HttpFoundationFactory)->createRequest($serverRequest));
$this->verifyAppId($laravelRequest->appId);
$this->verifySignature($laravelRequest);
$this
->ensureValidAppId($laravelRequest->appId)
->ensureValidSignature($laravelRequest);
$response = $this($laravelRequest);
@ -66,21 +67,21 @@ abstract class EchoController implements HttpServerInterface
'error' => $exception->getMessage()
]));
$connection->send(gPsr\str($response));
$connection->send(Psr\str($response));
$connection->close();
}
}
public function verifyAppId(string $appId)
public function ensureValidAppId(string $appId)
{
if ($client = Client::findByAppId($appId)) {
return;
if (! $client = Client::findByAppId($appId)) {
throw new HttpException(401, "Unknown app id `{$appId}` provided.");
}
throw new HttpException(401, "Unknown app id `{$appId}` provided.");
return true;
}
protected function verifySignature(Request $request)
protected function ensureValidSignature(Request $request)
{
$bodyMd5 = md5($request->getContent());
@ -96,6 +97,8 @@ abstract class EchoController implements HttpServerInterface
if ($authSignature !== $request->get('auth_signature')) {
throw new HttpException(401, 'Invalid auth signature provided.');
}
return $this;
}
abstract public function __invoke(Request $request);

View File

@ -9,10 +9,15 @@ class TriggerEvent extends EchoController
{
public function __invoke(Request $request)
{
$this->verifySignature($request);
$this->ensureValidSignature($request);
foreach ($request->json()->get('channels', []) as $channelId) {
Dashboard::apiMessage($request->appId, $channelId, $request->json()->get('name'), $request->json()->get('data'));
Dashboard::apiMessage(
$request->appId,
$channelId,
$request->json()->get('name'),
$request->json()->get('data')
);
$channel = $this->channelManager->find($request->appId, $channelId);