diff --git a/src/Admin/AdminController.php b/src/Admin/AdminController.php index 7ff052e..2e8340f 100644 --- a/src/Admin/AdminController.php +++ b/src/Admin/AdminController.php @@ -61,6 +61,9 @@ final class AdminController add_action('wp_ajax_wclp_update_license_expiry', [$this, 'handleAjaxExpiryUpdate']); add_action('wp_ajax_wclp_update_license_domain', [$this, 'handleAjaxDomainUpdate']); add_action('wp_ajax_wclp_revoke_license', [$this, 'handleAjaxRevoke']); + + // AJAX handler for license testing + add_action('wp_ajax_wclp_test_license', [$this, 'handleAjaxTestLicense']); } /** @@ -355,6 +358,30 @@ final class AdminController } } + /** + * Handle AJAX license test - validates license against the API + */ + public function handleAjaxTestLicense(): void + { + check_ajax_referer('wclp_inline_edit', 'nonce'); + + if (!current_user_can('manage_woocommerce')) { + wp_send_json_error(['message' => __('Permission denied.', 'wc-licensed-product')], 403); + } + + $licenseKey = isset($_POST['license_key']) ? sanitize_text_field(wp_unslash($_POST['license_key'])) : ''; + $domain = isset($_POST['domain']) ? sanitize_text_field(wp_unslash($_POST['domain'])) : ''; + + if (empty($licenseKey) || empty($domain)) { + wp_send_json_error(['message' => __('License key and domain are required.', 'wc-licensed-product')]); + } + + // Validate the license using LicenseManager + $result = $this->licenseManager->validateLicense($licenseKey, $domain); + + wp_send_json_success($result); + } + /** * Handle admin actions (update, delete licenses) */ diff --git a/templates/admin/licenses.html.twig b/templates/admin/licenses.html.twig index 530d4d8..3e70640 100644 --- a/templates/admin/licenses.html.twig +++ b/templates/admin/licenses.html.twig @@ -184,6 +184,13 @@