@descope/web-components-ui 1.0.336 → 1.0.337
Sign up to get free protection for your applications and to get access to all the features.
package/dist/index.esm.js
CHANGED
@@ -7208,6 +7208,53 @@ class RawRecaptcha extends BaseClass {
|
|
7208
7208
|
return this.enterprise ? window.grecaptcha?.enterprise : window.grecaptcha;
|
7209
7209
|
}
|
7210
7210
|
|
7211
|
+
#getNewToken(grecaptchaInstance, currentNode, recaptchaWidgetId) {
|
7212
|
+
if (!this.isConnected) {
|
7213
|
+
return;
|
7214
|
+
}
|
7215
|
+
|
7216
|
+
grecaptchaInstance.ready(() => {
|
7217
|
+
// clone the node and append it to the body so that it can be used by the grepcaptcha script
|
7218
|
+
const cloneNode = currentNode
|
7219
|
+
.querySelector('textarea[name^="g-recaptcha-response"]')
|
7220
|
+
?.cloneNode();
|
7221
|
+
if (cloneNode) {
|
7222
|
+
cloneNode.style.display = 'none';
|
7223
|
+
document.body.appendChild(cloneNode);
|
7224
|
+
}
|
7225
|
+
|
7226
|
+
// cleaning up the recaptcha element we added to the body
|
7227
|
+
const removeCloneNode = () => {
|
7228
|
+
cloneNode.remove();
|
7229
|
+
};
|
7230
|
+
|
7231
|
+
if (!this.siteKey) {
|
7232
|
+
return;
|
7233
|
+
}
|
7234
|
+
// we should pass recaptchaWidgetId, but this does not allow us to run execute multiple times
|
7235
|
+
// also calling grecaptchaInstance.reset() does not work
|
7236
|
+
const exec = grecaptchaInstance?.execute(recaptchaWidgetId, { action: this.action });
|
7237
|
+
exec.then((token, e) => {
|
7238
|
+
if (e) {
|
7239
|
+
// eslint-disable-next-line no-console
|
7240
|
+
console.warn('could not execute recaptcha', e);
|
7241
|
+
} else {
|
7242
|
+
this.updateComponentsContext({
|
7243
|
+
risktoken: token,
|
7244
|
+
riskaction: this.action,
|
7245
|
+
});
|
7246
|
+
// if the component is still connected, we should try to get a new token before the token expires (2 minutes)
|
7247
|
+
if (this.isConnected) {
|
7248
|
+
setTimeout(() => {
|
7249
|
+
this.#getNewToken(grecaptchaInstance, currentNode, recaptchaWidgetId);
|
7250
|
+
}, 110000);
|
7251
|
+
}
|
7252
|
+
}
|
7253
|
+
removeCloneNode();
|
7254
|
+
});
|
7255
|
+
});
|
7256
|
+
}
|
7257
|
+
|
7211
7258
|
#createOnLoadScript() {
|
7212
7259
|
window.onRecaptchaLoadCallback = () => {
|
7213
7260
|
const currentNode = this.recaptchaEle;
|
@@ -7224,48 +7271,12 @@ class RawRecaptcha extends BaseClass {
|
|
7224
7271
|
}
|
7225
7272
|
|
7226
7273
|
setTimeout(() => {
|
7227
|
-
// returns recaptchaWidgetId
|
7228
7274
|
const recaptchaWidgetId = grecaptchaInstance.render(currentNode, {
|
7229
7275
|
sitekey: this.siteKey,
|
7230
7276
|
badge: 'inline',
|
7231
7277
|
size: 'invisible',
|
7232
7278
|
});
|
7233
|
-
|
7234
|
-
grecaptchaInstance.ready(() => {
|
7235
|
-
// clone the node and append it to the body so that it can be used by the grepcaptcha script
|
7236
|
-
const cloneNode = currentNode
|
7237
|
-
.querySelector('textarea[name^="g-recaptcha-response"]')
|
7238
|
-
?.cloneNode();
|
7239
|
-
if (cloneNode) {
|
7240
|
-
cloneNode.style.display = 'none';
|
7241
|
-
document.body.appendChild(cloneNode);
|
7242
|
-
}
|
7243
|
-
|
7244
|
-
// cleaning up the recaptcha element we added to the body
|
7245
|
-
const removeCloneNode = () => {
|
7246
|
-
cloneNode.remove();
|
7247
|
-
};
|
7248
|
-
|
7249
|
-
if (this.siteKey) {
|
7250
|
-
// we should pass recaptchaWidgetId, but this does not allow us to run execute multiple times
|
7251
|
-
// also calling grecaptchaInstance.reset() does not work
|
7252
|
-
const exec = grecaptchaInstance?.execute(recaptchaWidgetId, { action: this.action });
|
7253
|
-
exec
|
7254
|
-
.then((token) => {
|
7255
|
-
this.updateComponentsContext({
|
7256
|
-
risktoken: token,
|
7257
|
-
riskaction: this.action,
|
7258
|
-
});
|
7259
|
-
|
7260
|
-
removeCloneNode();
|
7261
|
-
})
|
7262
|
-
.catch((e) => {
|
7263
|
-
removeCloneNode();
|
7264
|
-
// eslint-disable-next-line no-console
|
7265
|
-
console.warn('could not execute recaptcha', e);
|
7266
|
-
});
|
7267
|
-
}
|
7268
|
-
});
|
7279
|
+
this.#getNewToken(grecaptchaInstance, currentNode, recaptchaWidgetId);
|
7269
7280
|
}, 0);
|
7270
7281
|
};
|
7271
7282
|
}
|