Files
HexaHost-Panel/routes/web.php
2026-05-17 13:26:14 +02:00

81 lines
4.5 KiB
PHP

<?php
use App\Http\Controllers\Auth\LoginController;
use App\Http\Controllers\Auth\TwoFactorController;
use App\Http\Controllers\Web\Admin\SystemHealthController;
use App\Http\Controllers\Web\Admin\VmTemplateController;
use App\Http\Controllers\Web\DashboardController;
use App\Http\Controllers\Web\IpPoolController;
use App\Http\Controllers\Web\IsoUploadController;
use App\Http\Controllers\Web\UserController;
use App\Http\Controllers\Web\VmBackupController;
use App\Http\Controllers\Web\VmConsoleController;
use App\Http\Controllers\Web\VmController;
use App\Http\Controllers\Web\VmFirewallController;
use App\Http\Controllers\Web\VmIsoController;
use App\Http\Controllers\Web\VmPowerController;
use App\Http\Controllers\Web\VmReinstallController;
use App\Http\Controllers\Web\VmSnapshotController;
use App\Http\Controllers\Web\VmStatusController;
use App\Models\Customer;
use Illuminate\Support\Facades\Route;
Route::bind('vm', fn (string $value) => Customer::query()->findOrFail($value));
Route::middleware('guest')->group(function () {
Route::get('login', [LoginController::class, 'create'])->name('login');
Route::post('login', [LoginController::class, 'store'])->middleware('throttle:login');
});
Route::middleware('auth')->group(function () {
Route::post('logout', [LoginController::class, 'destroy'])->name('logout');
Route::get('two-factor/setup', [TwoFactorController::class, 'setup'])->name('two-factor.setup');
Route::post('two-factor/enable', [TwoFactorController::class, 'enable'])->name('two-factor.enable');
Route::get('two-factor/challenge', [TwoFactorController::class, 'challenge'])->name('two-factor.challenge');
Route::post('two-factor/challenge', [TwoFactorController::class, 'verifyChallenge'])->name('two-factor.challenge.store');
Route::get('/', DashboardController::class)->name('dashboard');
Route::resource('vms', VmController::class)->except(['destroy']);
Route::delete('vms/{vm}', [VmController::class, 'destroy'])->name('vms.destroy');
Route::middleware('throttle:vm-power')->group(function () {
Route::post('vms/{vm}/power', VmPowerController::class)->name('vms.power');
});
Route::get('vms/{vm}/status', VmStatusController::class)->name('vms.status');
Route::get('vms/{vm}/console', [VmConsoleController::class, 'create'])->name('vms.console');
Route::get('console/{token}', [VmConsoleController::class, 'show'])->name('vms.console.session');
Route::post('vms/{vm}/iso', [VmIsoController::class, 'store'])->name('vms.iso.mount');
Route::delete('vms/{vm}/iso', [VmIsoController::class, 'destroy'])->name('vms.iso.unmount');
Route::get('api/isos', [VmIsoController::class, 'index'])->name('api.isos');
Route::post('vms/{vm}/snapshots', [VmSnapshotController::class, 'store'])->name('vms.snapshots.store');
Route::post('vms/{vm}/snapshots/{snapshot}/rollback', [VmSnapshotController::class, 'rollback'])->name('vms.snapshots.rollback');
Route::delete('vms/{vm}/snapshots/{snapshot}', [VmSnapshotController::class, 'destroy'])->name('vms.snapshots.destroy');
Route::post('vms/{vm}/backups', [VmBackupController::class, 'store'])->name('vms.backups.store');
Route::post('vms/{vm}/reinstall', VmReinstallController::class)->name('vms.reinstall');
Route::post('vms/{vm}/firewall', [VmFirewallController::class, 'store'])->name('vms.firewall.store');
Route::delete('vms/{vm}/firewall/{rule}', [VmFirewallController::class, 'destroy'])->name('vms.firewall.destroy');
Route::get('iso-uploads', [IsoUploadController::class, 'index'])->name('iso-uploads.index');
Route::post('iso-uploads', [IsoUploadController::class, 'store'])->name('iso-uploads.store');
Route::get('ip-pools', [IpPoolController::class, 'index'])->name('ip-pools.index');
Route::middleware('admin')->group(function () {
Route::get('ip-pools/create', [IpPoolController::class, 'create'])->name('ip-pools.create');
Route::post('ip-pools', [IpPoolController::class, 'store'])->name('ip-pools.store');
Route::get('ip-pools/{ipPool}/edit', [IpPoolController::class, 'edit'])->name('ip-pools.edit');
Route::put('ip-pools/{ipPool}', [IpPoolController::class, 'update'])->name('ip-pools.update');
Route::delete('ip-pools/{ipPool}', [IpPoolController::class, 'destroy'])->name('ip-pools.destroy');
Route::resource('users', UserController::class)->except(['show']);
Route::get('admin/system-health', SystemHealthController::class)->name('admin.health');
Route::resource('admin/templates', VmTemplateController::class)->names('admin.templates');
});
});