feat: Implement Plesk domain and hosting services

- Added PleskDomainService for managing domain operations (create, update, remove, get info).
- Introduced PleskHostingService for provisioning hosting accounts and notifying customers.
- Created PleskService for handling API requests to Plesk.
- Added migration to include 'type' column in dns_manager_servers table.
- Created migration for module_hosting_accounts table to track hosting subscriptions.
- Created migration for module_hosting_plesk_clients table to manage Plesk client credentials.
- Added email templates for notifying customers and admins about hosting account creation.
This commit is contained in:
baodev0
2026-08-06 17:24:01 +07:00
parent 79f06c2fa2
commit d6d63e5152
29 changed files with 1744 additions and 113 deletions
+15
View File
@@ -25,6 +25,7 @@ use App\Http\Controllers\Api\Admin\VCenter\VCenterController;
use App\Http\Controllers\Api\Admin\DnsManager\ServerController as DnsServerController;
use App\Http\Controllers\Api\Admin\DnsManager\DomainController as DnsDomainController;
use App\Http\Controllers\Api\Admin\DnsManager\RecordController as DnsRecordController;
use App\Http\Controllers\Api\Admin\Hosting\HostingAccountController;
use App\Http\Controllers\Api\Admin\OsManager\OsGroupController;
use App\Http\Controllers\Api\Admin\OsManager\OsController;
use App\Http\Controllers\Api\Admin\IpPool\IpPoolController;
@@ -420,6 +421,20 @@ Route::prefix('v1')
Route::put('{id}', 'update')->middleware('perm:domain.manager');
});
// Hosting Manager (module: hosting)
Route::prefix('hosting-accounts')
->controller(HostingAccountController::class)
->group(function () {
Route::get('/', 'index')->middleware('perm:hosting.view');
Route::get('{id}', 'show')->middleware('perm:hosting.view');
Route::post('/', 'store')->middleware('perm:hosting.create');
Route::put('{id}', 'update')->middleware('perm:hosting.edit');
Route::delete('{id}', 'destroy')->middleware('perm:hosting.destroy');
Route::post('{id}/suspend', 'suspend')->middleware('perm:hosting.edit');
Route::post('{id}/unsuspend', 'unsuspend')->middleware('perm:hosting.edit');
Route::post('{id}/reset-ftp-password', 'resetFtpPassword')->middleware('perm:hosting.edit');
});
// InfraManagement (jumphost, vcenter config)
Route::prefix('infra-management')
->controller(InfraManagementController::class)