This commit is contained in:
Marcel Pociot
2021-06-10 10:15:53 +02:00
parent 4131b6abb7
commit fb05f23124
4 changed files with 59 additions and 4 deletions

View File

@@ -15,6 +15,7 @@ class AppServiceProvider extends ServiceProvider
{ {
public function boot() public function boot()
{ {
UriFactory::registerScheme('capacitor', Uri::class);
UriFactory::registerScheme('chrome-extension', Uri::class); UriFactory::registerScheme('chrome-extension', Uri::class);
} }

View File

@@ -0,0 +1,54 @@
<?php
namespace App\Server\Http\Controllers\Admin;
use App\Contracts\UserRepository;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Str;
use Ratchet\ConnectionInterface;
class StoreUsersController extends AdminController
{
protected $keepConnectionOpen = true;
/** @var UserRepository */
protected $userRepository;
public function __construct(UserRepository $userRepository)
{
$this->userRepository = $userRepository;
}
public function handle(Request $request, ConnectionInterface $httpConnection)
{
$validator = Validator::make($request->all(), [
'name' => 'required',
], [
'required' => 'The :attribute field is required.',
]);
if ($validator->fails()) {
$httpConnection->send(respond_json(['errors' => $validator->getMessageBag()], 401));
$httpConnection->close();
return;
}
$insertData = [
'name' => $request->get('name'),
'auth_token' => $request->get('token', (string) Str::uuid()),
'can_specify_subdomains' => (int) $request->get('can_specify_subdomains'),
'can_specify_domains' => (int) $request->get('can_specify_domains'),
'can_share_tcp_ports' => (int) $request->get('can_share_tcp_ports'),
'max_connections' => (int) $request->get('max_connections'),
];
$this->userRepository
->storeUser($insertData)
->then(function ($user) use ($httpConnection) {
$httpConnection->send(respond_json(['user' => $user], 200));
$httpConnection->close();
});
}
}

View File

@@ -70,14 +70,14 @@ class TunnelMessageController extends Controller
protected function detectSubdomain(Request $request): ?string protected function detectSubdomain(Request $request): ?string
{ {
$subdomain = Str::before($request->getHost(), '.'); $subdomain = Str::before($request->header('Host'), '.');
return $subdomain === $request->getHost() ? null : $subdomain; return $subdomain === $request->header('Host') ? null : $subdomain;
} }
protected function detectServerHost(Request $request): ?string protected function detectServerHost(Request $request): ?string
{ {
return Str::after($request->getHost(), '.'); return Str::after($request->header('Host'), '.');
} }
protected function sendRequestToClient(Request $request, ControlConnection $controlConnection, ConnectionInterface $httpConnection) protected function sendRequestToClient(Request $request, ControlConnection $controlConnection, ConnectionInterface $httpConnection)

View File

@@ -168,7 +168,7 @@ class DatabaseUserRepository implements UserRepository
{ {
$deferred = new Deferred(); $deferred = new Deferred();
$this->database->query('DELETE FROM users WHERE id = :id', ['id' => $id]) $this->database->query('DELETE FROM users WHERE id = :id OR auth_token = :id', ['id' => $id])
->then(function (Result $result) use ($deferred) { ->then(function (Result $result) use ($deferred) {
$deferred->resolve($result); $deferred->resolve($result);
}); });