You've already forked wc-licensed-product
Add per-license customer secrets for API response verification
- Add static methods to ResponseSigner for deriving customer-specific secrets - Display "API Verification Secret" in customer account licenses page - Add collapsible secret section with copy button - Update server-implementation.md with per-license secret documentation - Update translations with new strings Each customer now gets a unique verification secret derived from their license key, eliminating the need to share the master server secret. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
|
||||
bindEvents: function() {
|
||||
$(document).on('click', '.copy-license-btn', this.copyLicenseKey);
|
||||
$(document).on('click', '.copy-secret-btn', this.copySecret);
|
||||
|
||||
// Transfer modal events
|
||||
$(document).on('click', '.wclp-transfer-btn', this.openTransferModal.bind(this));
|
||||
@@ -28,6 +29,9 @@
|
||||
// Older versions toggle
|
||||
$(document).on('click', '.older-versions-toggle', this.toggleOlderVersions);
|
||||
|
||||
// Secret toggle
|
||||
$(document).on('click', '.secret-toggle', this.toggleSecret);
|
||||
|
||||
// Close modal on escape key
|
||||
$(document).on('keyup', function(e) {
|
||||
if (e.key === 'Escape') {
|
||||
@@ -50,6 +54,47 @@
|
||||
$list.slideToggle(200);
|
||||
},
|
||||
|
||||
/**
|
||||
* Toggle secret visibility
|
||||
*/
|
||||
toggleSecret: function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
var $btn = $(this);
|
||||
var $content = $btn.siblings('.secret-content');
|
||||
var isExpanded = $btn.attr('aria-expanded') === 'true';
|
||||
|
||||
$btn.attr('aria-expanded', !isExpanded);
|
||||
$content.slideToggle(200);
|
||||
},
|
||||
|
||||
/**
|
||||
* Copy secret to clipboard
|
||||
*/
|
||||
copySecret: function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
var $btn = $(this);
|
||||
var secret = $btn.data('secret');
|
||||
|
||||
if (!secret) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Use modern clipboard API if available
|
||||
if (navigator.clipboard && navigator.clipboard.writeText) {
|
||||
navigator.clipboard.writeText(secret)
|
||||
.then(function() {
|
||||
WCLicensedProductFrontend.showCopyFeedback($btn, true);
|
||||
})
|
||||
.catch(function() {
|
||||
WCLicensedProductFrontend.fallbackCopy(secret, $btn);
|
||||
});
|
||||
} else {
|
||||
WCLicensedProductFrontend.fallbackCopy(secret, $btn);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Copy license key to clipboard
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user