feat: Implement new admin API endpoints for product, customer, vCenter, and authentication, and add vCenter resource management UI.

This commit is contained in:
pbao9
2026-03-05 14:30:31 +07:00
parent 68540009c0
commit cca4e0b86f
47 changed files with 3538 additions and 1086 deletions
+45 -30
View File
@@ -1,39 +1,17 @@
<?php
use App\Http\Controllers\Api\Client\ClientController;
use App\Http\Controllers\rest\ModuleController;
use App\Http\Controllers\Api\Admin\Auth\AuthController;
use App\Http\Controllers\Api\Admin\Customer\CustomerController;
use App\Http\Controllers\Api\Admin\Invoice\InvoiceController;
use App\Http\Controllers\Api\Admin\Order\OrderController;
use App\Http\Controllers\Api\Admin\Product\ProductController;
use App\Http\Controllers\Api\Admin\VCenter\VCenterController;
use App\Http\Services\Media;
use App\Http\Services\vCenter as ServiceVCenter;
use App\Jobs\Hosting\CreateHostingJobs;
use App\Jobs\VirtualMachine\Create\CreateVMJobs;
use App\Jobs\VirtualMachine\Upgrade\UpgradeVirtualMachine;
use App\Models\Addon;
use App\Models\Customer;
use App\Models\File;
use App\Models\Hosting;
use App\Models\Invoice;
use App\Models\InvoiceItem;
use App\Models\ModuleDatacenter;
use App\Models\ModuleHost;
use App\Models\ModuleHosting;
use App\Models\ModuleHostingServer;
use App\Models\ModuleIpAddress;
use App\Models\ModuleSnapshot;
use App\Models\ModuleVmware;
use App\Models\Os;
use App\Models\OsGroup;
use App\Models\Type;
use App\Models\vCenter;
use App\Models\VPS;
use Illuminate\Http\Request;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Str;
/*
|--------------------------------------------------------------------------
@@ -49,8 +27,44 @@ use Illuminate\Support\Str;
Route::prefix('v1')
/* Api for Admin */
->group(function () {
Route::prefix('administrator')->group(function () {
Route::post('login', [AuthController::class, 'login']);
Route::middleware('api.auth:admins-api')->group(function () {
Route::post('logout', [AuthController::class, 'logout']);
Route::post('refresh', [AuthController::class, 'refresh']);
Route::get('me', [AuthController::class, 'me']);
// Customers
Route::prefix('customers')->group(function () {
Route::get('/', [CustomerController::class, 'index']);
});
// Products
Route::prefix('products')->group(function () {
Route::get('/', [ProductController::class, 'index']);
Route::get('{id}', [ProductController::class, 'show']);
});
// Orders
Route::prefix('orders')->group(function () {
Route::get('/', [OrderController::class, 'index']);
});
// Invoices
Route::prefix('invoices')->group(function () {
Route::get('/', [InvoiceController::class, 'index']);
});
// vCenter
Route::prefix('vcenter')->group(function () {
Route::get('tree', [VCenterController::class, 'tree']);
});
});
});
Route::prefix('system')->middleware(['api.auth'])->group(function () {
Route::post('get-all-image', function (Media $media) {
$files = $media->getAllMedia();
$data = view('administrator.pages.component.media')->with('media', $files)->render();
@@ -123,6 +137,7 @@ Route::prefix('v1')
})->name('api.GetConsoleTicket');
});
});
Route::any('{any}', function () {
return response()->json([
'error' => true,