- IP pool: sheet import (xlsx/csv) matched by address, bulk allocate/revoke with notification email (ip_allocated/ip_revoked), ip_pool_logs history. - Orders/invoices: Excel export on branded template (BrandedReportWriter), shared billing filters, order item service info in list responses. - Web design quote Excel export; activity log export. - Service attachments with copy-to-invoice; deployment invoice attachments. - Customer email attachments stored on disk and attached by path. - Admin password change endpoint; user.fullname backfill migration; orders.user_id backfill from logs. - Disable deploy workflow until CI/CD is set up. - Ignore stored customer email and service attachment uploads. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
147 lines
7.8 KiB
PHP
147 lines
7.8 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\Api\Admin\InfraManagement\InfraManagementController;
|
|
use App\Http\Controllers\Api\Admin\IpPool\IpPoolController;
|
|
use App\Http\Controllers\Api\Admin\OsManager\OsController;
|
|
use App\Http\Controllers\Api\Admin\OsManager\OsGroupController;
|
|
use App\Http\Controllers\Api\Admin\Rebuild\AdminReinstallLogController;
|
|
use App\Http\Controllers\Api\Admin\VCenter\VCenterController;
|
|
use App\Http\Controllers\Api\Admin\VPS\VPSController;
|
|
use App\Http\Controllers\admin\VCenterManagerController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
// OS Groups & OS Entries (module: module-vcenter)
|
|
Route::prefix('os-groups')
|
|
->controller(OsGroupController::class)
|
|
->as('os-groups.')
|
|
->group(function () {
|
|
Route::get('/', 'index')->middleware('perm:module-vcenter.manager')->name('index');
|
|
Route::post('/', 'store')->middleware('perm:module-vcenter.manager')->name('store');
|
|
Route::get('{id}', 'show')->middleware('perm:module-vcenter.manager')->name('show');
|
|
Route::put('{id}', 'update')->middleware('perm:module-vcenter.manager')->name('update');
|
|
Route::delete('{id}', 'destroy')->middleware('perm:module-vcenter.manager')->name('destroy');
|
|
});
|
|
|
|
Route::prefix('os')
|
|
->controller(OsController::class)
|
|
->as('os.')
|
|
->group(function () {
|
|
Route::post('/', 'store')->middleware('perm:module-vcenter.manager')->name('store');
|
|
Route::put('{id}', 'update')->middleware('perm:module-vcenter.manager')->name('update');
|
|
Route::delete('{id}', 'destroy')->middleware('perm:module-vcenter.manager')->name('destroy');
|
|
});
|
|
|
|
// VPS (module: module-vcenter)
|
|
Route::prefix('vps')
|
|
->controller(VPSController::class)
|
|
->group(function () {
|
|
Route::get('/', 'index')->middleware('perm:module-vcenter.view');
|
|
Route::get('{id}', 'show')->middleware('perm:module-vcenter.view');
|
|
Route::put('{id}', 'update')->middleware('perm:module-vcenter.edit');
|
|
Route::post('{id}/power-on', 'powerOn')->middleware('perm:module-vcenter.edit');
|
|
Route::post('{id}/power-off', 'powerOff')->middleware('perm:module-vcenter.edit');
|
|
Route::post('{id}/restart', 'restart')->middleware('perm:module-vcenter.edit');
|
|
Route::get('{id}/console-ticket', 'getConsoleTicket')->middleware('perm:module-vcenter.view');
|
|
});
|
|
|
|
// vCenter (module: module-vcenter)
|
|
Route::prefix('vcenter')
|
|
->controller(VCenterController::class)
|
|
->group(function () {
|
|
Route::get('tree', 'tree')->middleware('perm:module-vcenter.view');
|
|
Route::get('console-ticket', 'consoleTicket')->middleware('perm:module-vcenter.view');
|
|
Route::post('/', 'store')->middleware('perm:module-vcenter.create');
|
|
Route::post('sync', 'sync')->middleware('perm:module-vcenter.edit');
|
|
Route::post('node/{type}', 'storeNode')->middleware('perm:module-vcenter.create');
|
|
Route::put('node/{type}/{id}', 'updateNode')->middleware('perm:module-vcenter.edit');
|
|
Route::delete('node/{type}/{id}', 'destroyNode')->middleware('perm:module-vcenter.destroy');
|
|
});
|
|
|
|
// InfraManagement (jumphost, vcenter config)
|
|
Route::prefix('infra-management')
|
|
->controller(InfraManagementController::class)
|
|
->group(function () {
|
|
Route::get('/', 'index')->middleware('perm:module-vcenter.manager');
|
|
Route::post('/', 'store')->middleware('perm:module-vcenter.manager');
|
|
Route::get('{id}', 'show')->middleware('perm:module-vcenter.manager');
|
|
Route::put('{id}', 'update')->middleware('perm:module-vcenter.manager');
|
|
Route::delete('{id}', 'destroy')->middleware('perm:module-vcenter.manager');
|
|
});
|
|
|
|
// Provider (active vCenter chain + provider settings — module: module-vcenter)
|
|
Route::prefix('provider')->group(function () {
|
|
Route::get('active-chain', [
|
|
\App\Http\Controllers\Api\Admin\Provider\ActiveInfraController::class,
|
|
'chain',
|
|
])->middleware('perm:module-vcenter.view');
|
|
Route::post('{type}/{id}/activate', [
|
|
\App\Http\Controllers\Api\Admin\Provider\ActiveInfraController::class,
|
|
'activate',
|
|
])
|
|
->whereIn('type', ['vcenter', 'datacenter', 'host', 'datastore', 'network'])
|
|
->middleware('perm:module-vcenter.edit');
|
|
Route::post('{type}/{id}/deactivate', [
|
|
\App\Http\Controllers\Api\Admin\Provider\ActiveInfraController::class,
|
|
'deactivate',
|
|
])
|
|
->whereIn('type', ['vcenter', 'datacenter', 'host', 'datastore', 'network'])
|
|
->middleware('perm:module-vcenter.edit');
|
|
|
|
Route::get('settings', [
|
|
\App\Http\Controllers\Api\Admin\Provider\ProviderSettingController::class,
|
|
'index',
|
|
])->middleware('perm:module-vcenter.view');
|
|
Route::put('settings', [
|
|
\App\Http\Controllers\Api\Admin\Provider\ProviderSettingController::class,
|
|
'update',
|
|
])->middleware('perm:module-vcenter.edit');
|
|
});
|
|
|
|
// IP Pool (module: module-vcenter)
|
|
Route::prefix('ip-pool')
|
|
->controller(IpPoolController::class)
|
|
->group(function () {
|
|
Route::get('networks', 'networks')->middleware('perm:module-vcenter.view');
|
|
Route::get('used-services', 'usedServices')->middleware('perm:module-vcenter.view');
|
|
Route::get('/', 'index')->middleware('perm:module-vcenter.view');
|
|
Route::post('/', 'store')->middleware('perm:module-vcenter.manager');
|
|
Route::post('sync', 'sync')->middleware('perm:module-vcenter.manager');
|
|
Route::post('import/preview', 'importPreview')->middleware('perm:module-vcenter.manager');
|
|
Route::post('import', 'import')->middleware('perm:module-vcenter.manager');
|
|
Route::delete('bulk', 'bulkDelete')->middleware('perm:module-vcenter.manager');
|
|
Route::post('bulk-update-gateway', 'bulkUpdateGateway')->middleware('perm:module-vcenter.manager');
|
|
Route::post('allocation/preview', 'allocationPreview')->middleware('perm:module-vcenter.manager');
|
|
Route::post('allocate', 'allocate')->middleware('perm:module-vcenter.manager');
|
|
Route::post('revocation/preview', 'revocationPreview')->middleware('perm:module-vcenter.manager');
|
|
Route::post('revoke', 'revoke')->middleware('perm:module-vcenter.manager');
|
|
Route::get('{id}/logs', 'logs')->middleware('perm:module-vcenter.view');
|
|
Route::get('{id}', 'show')->middleware('perm:module-vcenter.view');
|
|
Route::put('{id}', 'update')->middleware('perm:module-vcenter.manager');
|
|
Route::delete('{id}', 'destroy')->middleware('perm:module-vcenter.manager');
|
|
});
|
|
|
|
// vCenter Manager Power Operations (module: module-vcenter)
|
|
Route::prefix('vcenter-manager')
|
|
->controller(VCenterManagerController::class)
|
|
->group(function () {
|
|
Route::post('vm/power-on', 'powerOn')->middleware('perm:module-vcenter.edit');
|
|
Route::post('vm/power-off', 'powerOff')->middleware('perm:module-vcenter.edit');
|
|
Route::post('vm/restart', 'restart')->middleware('perm:module-vcenter.edit');
|
|
Route::post('vm/snapshot', 'snapshot')->middleware('perm:module-vcenter.edit');
|
|
Route::post('vm/suspend', 'suspend')->middleware('perm:module-vcenter.edit');
|
|
Route::post('vm/update-config', 'updateConfig')->middleware('perm:module-vcenter.edit');
|
|
Route::post('vm/delete', 'deleteVM')->middleware('perm:module-vcenter.edit');
|
|
Route::get('vm/stats', 'stats')->middleware('perm:module-vcenter.view');
|
|
Route::get('vm/power-state', 'powerState')->middleware('perm:module-vcenter.view');
|
|
Route::get('vms/powered-off', 'getPoweredOffVms')->middleware('perm:module-vcenter.view');
|
|
});
|
|
|
|
// VM Rebuild Logs — who rebuilt, which OS, post-rebuild password
|
|
Route::prefix('rebuild-logs')
|
|
->controller(AdminReinstallLogController::class)
|
|
->group(function () {
|
|
Route::get('/', 'index')->middleware('perm:vps.view');
|
|
Route::get('stats', 'stats')->middleware('perm:vps.view');
|
|
Route::get('{id}', 'show')->middleware('perm:vps.view')->whereNumber('id');
|
|
});
|