mirror of
https://github.com/bitinflow/expose.git
synced 2026-03-13 13:35:54 +00:00
Added the ability to retrieve welcome messags from APIs
This commit is contained in:
@@ -12,6 +12,7 @@ use App\Server\Exceptions\NoFreePortAvailable;
|
|||||||
use Illuminate\Support\Arr;
|
use Illuminate\Support\Arr;
|
||||||
use Ratchet\ConnectionInterface;
|
use Ratchet\ConnectionInterface;
|
||||||
use Ratchet\WebSocket\MessageComponentInterface;
|
use Ratchet\WebSocket\MessageComponentInterface;
|
||||||
|
use React\EventLoop\LoopInterface;
|
||||||
use React\Promise\Deferred;
|
use React\Promise\Deferred;
|
||||||
use React\Promise\PromiseInterface;
|
use React\Promise\PromiseInterface;
|
||||||
use function React\Promise\reject;
|
use function React\Promise\reject;
|
||||||
@@ -150,6 +151,24 @@ class ControlMessageController implements MessageComponentInterface
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function resolveConnectionMessage($connectionInfo, $user) {
|
||||||
|
$deferred = new Deferred();
|
||||||
|
|
||||||
|
$connectionMessageResolver = config('expose.admin.messages.resolve_connection_message')($connectionInfo, $user);
|
||||||
|
|
||||||
|
if ($connectionMessageResolver instanceof PromiseInterface) {
|
||||||
|
$connectionMessageResolver->then(function ($connectionMessage) use ($connectionInfo, $deferred) {
|
||||||
|
$connectionInfo->message = $connectionMessage;
|
||||||
|
$deferred->resolve($connectionInfo);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$connectionInfo->message = $connectionMessageResolver;
|
||||||
|
return \React\Promise\resolve($connectionInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $deferred->promise();
|
||||||
|
}
|
||||||
|
|
||||||
protected function handleHttpConnection(ConnectionInterface $connection, $data, $user = null)
|
protected function handleHttpConnection(ConnectionInterface $connection, $data, $user = null)
|
||||||
{
|
{
|
||||||
$this->hasValidDomain($connection, $data->server_host, $user)
|
$this->hasValidDomain($connection, $data->server_host, $user)
|
||||||
@@ -167,10 +186,13 @@ class ControlMessageController implements MessageComponentInterface
|
|||||||
|
|
||||||
$this->connectionManager->limitConnectionLength($connectionInfo, config('expose.admin.maximum_connection_length'));
|
$this->connectionManager->limitConnectionLength($connectionInfo, config('expose.admin.maximum_connection_length'));
|
||||||
|
|
||||||
|
return $this->resolveConnectionMessage($connectionInfo, $user);
|
||||||
|
})
|
||||||
|
->then(function ($connectionInfo) use ($data, $connection, $user) {
|
||||||
$connection->send(json_encode([
|
$connection->send(json_encode([
|
||||||
'event' => 'authenticated',
|
'event' => 'authenticated',
|
||||||
'data' => [
|
'data' => [
|
||||||
'message' => config('expose.admin.messages.resolve_connection_message')($connectionInfo, $user),
|
'message' => $connectionInfo->message,
|
||||||
'subdomain' => $connectionInfo->subdomain,
|
'subdomain' => $connectionInfo->subdomain,
|
||||||
'server_host' => $connectionInfo->serverHost,
|
'server_host' => $connectionInfo->serverHost,
|
||||||
'user' => $user,
|
'user' => $user,
|
||||||
|
|||||||
38
app/Server/Support/RetrieveWelcomeMessageFromApi.php
Normal file
38
app/Server/Support/RetrieveWelcomeMessageFromApi.php
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Server\Support;
|
||||||
|
|
||||||
|
use Exception;
|
||||||
|
use Psr\Http\Message\ResponseInterface;
|
||||||
|
use Clue\React\Buzz\Browser;
|
||||||
|
|
||||||
|
class RetrieveWelcomeMessageFromApi
|
||||||
|
{
|
||||||
|
/** @var Browser */
|
||||||
|
protected $browser;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
protected $url;
|
||||||
|
|
||||||
|
public function __construct(Browser $browser)
|
||||||
|
{
|
||||||
|
$this->browser = $browser;
|
||||||
|
|
||||||
|
$this->url = config('expose.admin.welcome_message_api_url');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function forUser($user)
|
||||||
|
{
|
||||||
|
return $this->browser
|
||||||
|
->get($this->url . '?' . http_build_query($user), [
|
||||||
|
'Accept' => 'application/json',
|
||||||
|
])
|
||||||
|
->then(function (ResponseInterface $response) {
|
||||||
|
$result = json_decode($response->getBody());
|
||||||
|
|
||||||
|
return $result->message ?? '';
|
||||||
|
}, function (Exception $e) {
|
||||||
|
return '';
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user