controller(DnsDomainController::class) ->group(function () { Route::get('/', 'index')->middleware('perm:domain.manager'); Route::post('/', 'store')->middleware('perm:domain.manager'); Route::post('sync-dns', 'syncDns')->middleware('perm:domain.manager'); Route::get('{id}', 'show')->middleware('perm:domain.manager'); Route::put('{id}', 'update')->middleware('perm:domain.manager'); Route::put('{id}/term', 'updateTerm')->middleware('perm:domain.manager'); Route::post('{id}/provision', 'provision')->middleware('perm:domain.manager'); Route::delete('{id}', 'destroy')->middleware('perm:domain.manager'); // DNS Records Route::get('{id}/dns', 'dnsIndex')->middleware('perm:domain.manager'); Route::post('{id}/dns', 'dnsStore')->middleware('perm:domain.manager'); Route::put('{id}/dns/{recordId}', 'dnsUpdate')->middleware('perm:domain.manager'); Route::delete('{id}/dns/{recordId}', 'dnsDestroy')->middleware('perm:domain.manager'); }); // DNS Manager — Servers (module: domain.manager) Route::prefix('dns-servers') ->controller(DnsServerController::class) ->group(function () { Route::get('/', 'index')->middleware('perm:domain.manager'); Route::post('/', 'store')->middleware('perm:domain.manager'); Route::get('{id}', 'show')->middleware('perm:domain.manager'); Route::post('{id}/check-connection', 'checkConnection')->middleware('perm:domain.manager'); Route::put('{id}', 'update')->middleware('perm:domain.manager'); Route::delete('{id}', 'destroy')->middleware('perm:domain.manager'); }); Route::prefix('dns-records') ->controller(DnsRecordController::class) ->group(function () { Route::get('/', 'index')->middleware('perm:domain.manager'); Route::get('{id}', 'show')->middleware('perm:domain.manager'); Route::put('{id}', 'update')->middleware('perm:domain.manager'); }); // Domain Orders (module: order) Route::prefix('domain-orders') ->controller(AdminDomainOrderController::class) ->group(function () { Route::get('pending-count', 'pendingCount')->middleware('perm:order.view'); Route::get('/', 'index')->middleware('perm:order.view'); Route::get('{id}', 'show')->middleware('perm:order.view'); Route::post('{id}/confirm-registration', 'confirmRegistration')->middleware('perm:order.edit'); Route::patch('{id}/kyc', 'updateKyc')->middleware('perm:order.edit'); Route::patch('{id}/activate', 'activate')->middleware('perm:order.edit'); Route::post('{id}/reject-and-refund', 'rejectAndRefund')->middleware('perm:order.edit'); Route::get('{id}/registrant', 'getRegistrant')->middleware('perm:order.view'); Route::patch('{id}/registrant', 'updateRegistrant')->middleware('perm:order.edit'); Route::get('{id}/registrant/docx', 'downloadRegistrantDocx')->middleware('perm:order.view'); }); // Domain Pricing (module: settings) Route::prefix('domain-pricing') ->controller(AdminDomainPricingController::class) ->middleware('perm:setting.manager') ->group(function () { Route::get('/', 'index'); Route::put('/', 'update'); Route::post('/reset', 'reset'); }); // Domain Tools — proxy tới iNET API (module: domain.manager) Route::prefix('domain-tools') ->controller(InetDomainController::class) ->group(function () { Route::get('whois/{domain}', 'whois')->middleware('perm:domain.manager'); Route::get('check-available', 'checkAvailable')->middleware('perm:domain.manager'); Route::post('bulk-check-available', 'bulkCheckAvailable')->middleware('perm:domain.manager'); Route::post('ai-suggest', 'aiSuggest')->middleware('perm:domain.manager'); Route::get('suffixes', 'suffixes')->middleware('perm:domain.manager'); }); Route::get('registrars', [RegistrarController::class, 'index'])->middleware('perm:domain.manager');