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'); }); });