48 lines
1.4 KiB
PHP
48 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Web;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Customer;
|
|
use App\Services\Hosting\Proxmox\VmManagementService;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\View\View;
|
|
|
|
class VmConsoleController extends Controller
|
|
{
|
|
public function create(Request $request, Customer $vm, VmManagementService $management): View
|
|
{
|
|
$this->authorize('manage', $vm);
|
|
|
|
try {
|
|
$session = $management->createConsoleSession($vm, $request->user());
|
|
} catch (\Throwable $e) {
|
|
return view('vms.console-error', [
|
|
'vm' => $vm,
|
|
'error' => $e->getMessage(),
|
|
]);
|
|
}
|
|
|
|
return view('vms.console', [
|
|
'vm' => $vm,
|
|
'token' => $session['token'],
|
|
'wsUrl' => $session['ws_url'],
|
|
'expiresAt' => $session['expires_at'],
|
|
]);
|
|
}
|
|
|
|
public function show(Request $request, string $token, VmManagementService $management): View
|
|
{
|
|
$session = $management->getConsoleSession($token, $request->user());
|
|
$vm = Customer::query()->findOrFail($session['customer_id']);
|
|
$this->authorize('view', $vm);
|
|
|
|
return view('vms.console', [
|
|
'vm' => $vm,
|
|
'token' => $token,
|
|
'wsUrl' => $session['ws_url'],
|
|
'expiresAt' => now()->addMinutes(5)->timestamp,
|
|
]);
|
|
}
|
|
}
|