initial commit
This commit is contained in:
47
app/Http/Controllers/Web/VmConsoleController.php
Normal file
47
app/Http/Controllers/Web/VmConsoleController.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<?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,
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user