@firebase/auth 1.7.9-canary.aa6db78eb → 1.7.9-canary.b942e9e6e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -1
- package/dist/auth-public.d.ts +22 -10
- package/dist/auth.d.ts +22 -10
- package/dist/browser-cjs/{index-8c4960c5.js → index-c1e3d4f9.js} +392 -175
- package/dist/browser-cjs/index-c1e3d4f9.js.map +1 -0
- package/dist/browser-cjs/index.js +1 -1
- package/dist/browser-cjs/internal.js +1 -1
- package/dist/browser-cjs/src/api/account_management/mfa.d.ts +5 -1
- package/dist/browser-cjs/src/api/authentication/mfa.d.ts +5 -1
- package/dist/browser-cjs/src/api/authentication/sms.d.ts +5 -1
- package/dist/browser-cjs/src/api/index.d.ts +7 -3
- package/dist/browser-cjs/src/platform_browser/providers/phone.d.ts +7 -5
- package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
- package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
- package/dist/browser-cjs/src/platform_browser/strategies/phone.d.ts +10 -6
- package/dist/browser-cjs/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
- package/dist/cordova/auth-cordova-public.d.ts +7 -0
- package/dist/cordova/auth-cordova.d.ts +7 -0
- package/dist/cordova/index.js +2 -2
- package/dist/cordova/internal.js +168 -177
- package/dist/cordova/internal.js.map +1 -1
- package/dist/cordova/{popup_redirect-1e109c2a.js → popup_redirect-63b3580d.js} +285 -21
- package/dist/cordova/popup_redirect-63b3580d.js.map +1 -0
- package/dist/cordova/src/api/account_management/mfa.d.ts +5 -1
- package/dist/cordova/src/api/authentication/mfa.d.ts +5 -1
- package/dist/cordova/src/api/authentication/sms.d.ts +5 -1
- package/dist/cordova/src/api/index.d.ts +7 -3
- package/dist/cordova/src/platform_browser/providers/phone.d.ts +7 -5
- package/dist/cordova/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
- package/dist/cordova/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
- package/dist/cordova/src/platform_browser/strategies/phone.d.ts +10 -6
- package/dist/cordova/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
- package/dist/esm2017/{index-6cb7b51a.js → index-c8d513e3.js} +392 -175
- package/dist/esm2017/index-c8d513e3.js.map +1 -0
- package/dist/esm2017/index.js +1 -1
- package/dist/esm2017/internal.js +2 -2
- package/dist/esm2017/src/api/account_management/mfa.d.ts +5 -1
- package/dist/esm2017/src/api/authentication/mfa.d.ts +5 -1
- package/dist/esm2017/src/api/authentication/sms.d.ts +5 -1
- package/dist/esm2017/src/api/index.d.ts +7 -3
- package/dist/esm2017/src/platform_browser/providers/phone.d.ts +7 -5
- package/dist/esm2017/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
- package/dist/esm2017/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
- package/dist/esm2017/src/platform_browser/strategies/phone.d.ts +10 -6
- package/dist/esm2017/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
- package/dist/esm5/{index-262b3f24.js → index-82b3e33f.js} +450 -195
- package/dist/esm5/index-82b3e33f.js.map +1 -0
- package/dist/esm5/index.js +1 -1
- package/dist/esm5/internal.js +2 -2
- package/dist/esm5/src/api/account_management/mfa.d.ts +5 -1
- package/dist/esm5/src/api/authentication/mfa.d.ts +5 -1
- package/dist/esm5/src/api/authentication/sms.d.ts +5 -1
- package/dist/esm5/src/api/index.d.ts +7 -3
- package/dist/esm5/src/platform_browser/providers/phone.d.ts +7 -5
- package/dist/esm5/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
- package/dist/esm5/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
- package/dist/esm5/src/platform_browser/strategies/phone.d.ts +10 -6
- package/dist/esm5/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
- package/dist/index.webworker.esm5.js +163 -19
- package/dist/index.webworker.esm5.js.map +1 -1
- package/dist/node/index.js +1 -1
- package/dist/node/internal.js +1 -1
- package/dist/node/src/api/account_management/mfa.d.ts +5 -1
- package/dist/node/src/api/authentication/mfa.d.ts +5 -1
- package/dist/node/src/api/authentication/sms.d.ts +5 -1
- package/dist/node/src/api/index.d.ts +7 -3
- package/dist/node/src/platform_browser/providers/phone.d.ts +7 -5
- package/dist/node/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
- package/dist/node/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
- package/dist/node/src/platform_browser/strategies/phone.d.ts +10 -6
- package/dist/node/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
- package/dist/node/{totp-617e4db6.js → totp-c9a669c7.js} +164 -20
- package/dist/node/totp-c9a669c7.js.map +1 -0
- package/dist/node-esm/index.js +1 -1
- package/dist/node-esm/internal.js +2 -2
- package/dist/node-esm/src/api/account_management/mfa.d.ts +5 -1
- package/dist/node-esm/src/api/authentication/mfa.d.ts +5 -1
- package/dist/node-esm/src/api/authentication/sms.d.ts +5 -1
- package/dist/node-esm/src/api/index.d.ts +7 -3
- package/dist/node-esm/src/platform_browser/providers/phone.d.ts +7 -5
- package/dist/node-esm/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
- package/dist/node-esm/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
- package/dist/node-esm/src/platform_browser/strategies/phone.d.ts +10 -6
- package/dist/node-esm/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
- package/dist/node-esm/{totp-98ba6f1f.js → totp-9698d31a.js} +168 -30
- package/dist/node-esm/totp-9698d31a.js.map +1 -0
- package/dist/rn/{index-198b1e87.js → index-dd6cc9b0.js} +450 -195
- package/dist/rn/index-dd6cc9b0.js.map +1 -0
- package/dist/rn/index.js +1 -1
- package/dist/rn/internal.js +1 -1
- package/dist/rn/src/api/account_management/mfa.d.ts +5 -1
- package/dist/rn/src/api/authentication/mfa.d.ts +5 -1
- package/dist/rn/src/api/authentication/sms.d.ts +5 -1
- package/dist/rn/src/api/index.d.ts +7 -3
- package/dist/rn/src/platform_browser/providers/phone.d.ts +7 -5
- package/dist/rn/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
- package/dist/rn/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
- package/dist/rn/src/platform_browser/strategies/phone.d.ts +10 -6
- package/dist/rn/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
- package/dist/src/api/account_management/mfa.d.ts +5 -1
- package/dist/src/api/authentication/mfa.d.ts +5 -1
- package/dist/src/api/authentication/sms.d.ts +5 -1
- package/dist/src/api/index.d.ts +7 -3
- package/dist/src/platform_browser/providers/phone.d.ts +7 -5
- package/dist/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
- package/dist/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
- package/dist/src/platform_browser/strategies/phone.d.ts +10 -6
- package/dist/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
- package/dist/web-extension-cjs/index.js +1 -1
- package/dist/web-extension-cjs/internal.js +115 -147
- package/dist/web-extension-cjs/internal.js.map +1 -1
- package/dist/web-extension-cjs/{register-0aa8e295.js → register-1a706c5a.js} +283 -30
- package/dist/web-extension-cjs/register-1a706c5a.js.map +1 -0
- package/dist/web-extension-cjs/src/api/account_management/mfa.d.ts +5 -1
- package/dist/web-extension-cjs/src/api/authentication/mfa.d.ts +5 -1
- package/dist/web-extension-cjs/src/api/authentication/sms.d.ts +5 -1
- package/dist/web-extension-cjs/src/api/index.d.ts +7 -3
- package/dist/web-extension-cjs/src/platform_browser/providers/phone.d.ts +7 -5
- package/dist/web-extension-cjs/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
- package/dist/web-extension-cjs/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
- package/dist/web-extension-cjs/src/platform_browser/strategies/phone.d.ts +10 -6
- package/dist/web-extension-cjs/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
- package/dist/web-extension-esm2017/auth-web-extension-public.d.ts +7 -0
- package/dist/web-extension-esm2017/auth-web-extension.d.ts +7 -0
- package/dist/web-extension-esm2017/index.js +2 -2
- package/dist/web-extension-esm2017/internal.js +115 -147
- package/dist/web-extension-esm2017/internal.js.map +1 -1
- package/dist/web-extension-esm2017/{register-68ef89ff.js → register-3c017834.js} +280 -31
- package/dist/web-extension-esm2017/register-3c017834.js.map +1 -0
- package/dist/web-extension-esm2017/src/api/account_management/mfa.d.ts +5 -1
- package/dist/web-extension-esm2017/src/api/authentication/mfa.d.ts +5 -1
- package/dist/web-extension-esm2017/src/api/authentication/sms.d.ts +5 -1
- package/dist/web-extension-esm2017/src/api/index.d.ts +7 -3
- package/dist/web-extension-esm2017/src/platform_browser/providers/phone.d.ts +7 -5
- package/dist/web-extension-esm2017/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
- package/dist/web-extension-esm2017/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
- package/dist/web-extension-esm2017/src/platform_browser/strategies/phone.d.ts +10 -6
- package/dist/web-extension-esm2017/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
- package/package.json +6 -6
- package/dist/browser-cjs/index-8c4960c5.js.map +0 -1
- package/dist/cordova/popup_redirect-1e109c2a.js.map +0 -1
- package/dist/esm2017/index-6cb7b51a.js.map +0 -1
- package/dist/esm5/index-262b3f24.js.map +0 -1
- package/dist/node/totp-617e4db6.js.map +0 -1
- package/dist/node-esm/totp-98ba6f1f.js.map +0 -1
- package/dist/rn/index-198b1e87.js.map +0 -1
- package/dist/web-extension-cjs/register-0aa8e295.js.map +0 -1
- package/dist/web-extension-esm2017/register-68ef89ff.js.map +0 -1
|
@@ -1068,6 +1068,16 @@ var RecaptchaConfig = /** @class */ (function () {
|
|
|
1068
1068
|
"ENFORCE" /* EnforcementState.ENFORCE */ ||
|
|
1069
1069
|
this.getProviderEnforcementState(providerStr) === "AUDIT" /* EnforcementState.AUDIT */);
|
|
1070
1070
|
};
|
|
1071
|
+
/**
|
|
1072
|
+
* Returns true if reCAPTCHA Enterprise protection is enabled in at least one provider, otherwise
|
|
1073
|
+
* returns false.
|
|
1074
|
+
*
|
|
1075
|
+
* @returns Whether or not reCAPTCHA Enterprise protection is enabled for at least one provider.
|
|
1076
|
+
*/
|
|
1077
|
+
RecaptchaConfig.prototype.isAnyProviderEnabled = function () {
|
|
1078
|
+
return (this.isProviderEnabled("EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */) ||
|
|
1079
|
+
this.isProviderEnabled("PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */));
|
|
1080
|
+
};
|
|
1071
1081
|
return RecaptchaConfig;
|
|
1072
1082
|
}());
|
|
1073
1083
|
|
|
@@ -3737,6 +3747,180 @@ function _generateCallbackName(prefix) {
|
|
|
3737
3747
|
return "__".concat(prefix).concat(Math.floor(Math.random() * 1000000));
|
|
3738
3748
|
}
|
|
3739
3749
|
|
|
3750
|
+
/**
|
|
3751
|
+
* @license
|
|
3752
|
+
* Copyright 2020 Google LLC
|
|
3753
|
+
*
|
|
3754
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3755
|
+
* you may not use this file except in compliance with the License.
|
|
3756
|
+
* You may obtain a copy of the License at
|
|
3757
|
+
*
|
|
3758
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
3759
|
+
*
|
|
3760
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
3761
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
3762
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3763
|
+
* See the License for the specific language governing permissions and
|
|
3764
|
+
* limitations under the License.
|
|
3765
|
+
*/
|
|
3766
|
+
var _SOLVE_TIME_MS = 500;
|
|
3767
|
+
var _EXPIRATION_TIME_MS = 60000;
|
|
3768
|
+
var _WIDGET_ID_START = 1000000000000;
|
|
3769
|
+
var MockReCaptcha = /** @class */ (function () {
|
|
3770
|
+
function MockReCaptcha(auth) {
|
|
3771
|
+
this.auth = auth;
|
|
3772
|
+
this.counter = _WIDGET_ID_START;
|
|
3773
|
+
this._widgets = new Map();
|
|
3774
|
+
}
|
|
3775
|
+
MockReCaptcha.prototype.render = function (container, parameters) {
|
|
3776
|
+
var id = this.counter;
|
|
3777
|
+
this._widgets.set(id, new MockWidget(container, this.auth.name, parameters || {}));
|
|
3778
|
+
this.counter++;
|
|
3779
|
+
return id;
|
|
3780
|
+
};
|
|
3781
|
+
MockReCaptcha.prototype.reset = function (optWidgetId) {
|
|
3782
|
+
var _a;
|
|
3783
|
+
var id = optWidgetId || _WIDGET_ID_START;
|
|
3784
|
+
void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.delete());
|
|
3785
|
+
this._widgets.delete(id);
|
|
3786
|
+
};
|
|
3787
|
+
MockReCaptcha.prototype.getResponse = function (optWidgetId) {
|
|
3788
|
+
var _a;
|
|
3789
|
+
var id = optWidgetId || _WIDGET_ID_START;
|
|
3790
|
+
return ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.getResponse()) || '';
|
|
3791
|
+
};
|
|
3792
|
+
MockReCaptcha.prototype.execute = function (optWidgetId) {
|
|
3793
|
+
var _a;
|
|
3794
|
+
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
3795
|
+
var id;
|
|
3796
|
+
return tslib.__generator(this, function (_b) {
|
|
3797
|
+
id = optWidgetId || _WIDGET_ID_START;
|
|
3798
|
+
void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.execute());
|
|
3799
|
+
return [2 /*return*/, ''];
|
|
3800
|
+
});
|
|
3801
|
+
});
|
|
3802
|
+
};
|
|
3803
|
+
return MockReCaptcha;
|
|
3804
|
+
}());
|
|
3805
|
+
var MockGreCAPTCHATopLevel = /** @class */ (function () {
|
|
3806
|
+
function MockGreCAPTCHATopLevel() {
|
|
3807
|
+
this.enterprise = new MockGreCAPTCHA();
|
|
3808
|
+
}
|
|
3809
|
+
MockGreCAPTCHATopLevel.prototype.ready = function (callback) {
|
|
3810
|
+
callback();
|
|
3811
|
+
};
|
|
3812
|
+
MockGreCAPTCHATopLevel.prototype.execute = function (
|
|
3813
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3814
|
+
_siteKey, _options) {
|
|
3815
|
+
return Promise.resolve('token');
|
|
3816
|
+
};
|
|
3817
|
+
MockGreCAPTCHATopLevel.prototype.render = function (
|
|
3818
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3819
|
+
_container, _parameters) {
|
|
3820
|
+
return '';
|
|
3821
|
+
};
|
|
3822
|
+
return MockGreCAPTCHATopLevel;
|
|
3823
|
+
}());
|
|
3824
|
+
var MockGreCAPTCHA = /** @class */ (function () {
|
|
3825
|
+
function MockGreCAPTCHA() {
|
|
3826
|
+
}
|
|
3827
|
+
MockGreCAPTCHA.prototype.ready = function (callback) {
|
|
3828
|
+
callback();
|
|
3829
|
+
};
|
|
3830
|
+
MockGreCAPTCHA.prototype.execute = function (
|
|
3831
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3832
|
+
_siteKey, _options) {
|
|
3833
|
+
return Promise.resolve('token');
|
|
3834
|
+
};
|
|
3835
|
+
MockGreCAPTCHA.prototype.render = function (
|
|
3836
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3837
|
+
_container, _parameters) {
|
|
3838
|
+
return '';
|
|
3839
|
+
};
|
|
3840
|
+
return MockGreCAPTCHA;
|
|
3841
|
+
}());
|
|
3842
|
+
var MockWidget = /** @class */ (function () {
|
|
3843
|
+
function MockWidget(containerOrId, appName, params) {
|
|
3844
|
+
var _this = this;
|
|
3845
|
+
this.params = params;
|
|
3846
|
+
this.timerId = null;
|
|
3847
|
+
this.deleted = false;
|
|
3848
|
+
this.responseToken = null;
|
|
3849
|
+
this.clickHandler = function () {
|
|
3850
|
+
_this.execute();
|
|
3851
|
+
};
|
|
3852
|
+
var container = typeof containerOrId === 'string'
|
|
3853
|
+
? document.getElementById(containerOrId)
|
|
3854
|
+
: containerOrId;
|
|
3855
|
+
_assert(container, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */, { appName: appName });
|
|
3856
|
+
this.container = container;
|
|
3857
|
+
this.isVisible = this.params.size !== 'invisible';
|
|
3858
|
+
if (this.isVisible) {
|
|
3859
|
+
this.execute();
|
|
3860
|
+
}
|
|
3861
|
+
else {
|
|
3862
|
+
this.container.addEventListener('click', this.clickHandler);
|
|
3863
|
+
}
|
|
3864
|
+
}
|
|
3865
|
+
MockWidget.prototype.getResponse = function () {
|
|
3866
|
+
this.checkIfDeleted();
|
|
3867
|
+
return this.responseToken;
|
|
3868
|
+
};
|
|
3869
|
+
MockWidget.prototype.delete = function () {
|
|
3870
|
+
this.checkIfDeleted();
|
|
3871
|
+
this.deleted = true;
|
|
3872
|
+
if (this.timerId) {
|
|
3873
|
+
clearTimeout(this.timerId);
|
|
3874
|
+
this.timerId = null;
|
|
3875
|
+
}
|
|
3876
|
+
this.container.removeEventListener('click', this.clickHandler);
|
|
3877
|
+
};
|
|
3878
|
+
MockWidget.prototype.execute = function () {
|
|
3879
|
+
var _this = this;
|
|
3880
|
+
this.checkIfDeleted();
|
|
3881
|
+
if (this.timerId) {
|
|
3882
|
+
return;
|
|
3883
|
+
}
|
|
3884
|
+
this.timerId = window.setTimeout(function () {
|
|
3885
|
+
_this.responseToken = generateRandomAlphaNumericString(50);
|
|
3886
|
+
var _a = _this.params, callback = _a.callback, expiredCallback = _a["expired-callback"];
|
|
3887
|
+
if (callback) {
|
|
3888
|
+
try {
|
|
3889
|
+
callback(_this.responseToken);
|
|
3890
|
+
}
|
|
3891
|
+
catch (e) { }
|
|
3892
|
+
}
|
|
3893
|
+
_this.timerId = window.setTimeout(function () {
|
|
3894
|
+
_this.timerId = null;
|
|
3895
|
+
_this.responseToken = null;
|
|
3896
|
+
if (expiredCallback) {
|
|
3897
|
+
try {
|
|
3898
|
+
expiredCallback();
|
|
3899
|
+
}
|
|
3900
|
+
catch (e) { }
|
|
3901
|
+
}
|
|
3902
|
+
if (_this.isVisible) {
|
|
3903
|
+
_this.execute();
|
|
3904
|
+
}
|
|
3905
|
+
}, _EXPIRATION_TIME_MS);
|
|
3906
|
+
}, _SOLVE_TIME_MS);
|
|
3907
|
+
};
|
|
3908
|
+
MockWidget.prototype.checkIfDeleted = function () {
|
|
3909
|
+
if (this.deleted) {
|
|
3910
|
+
throw new Error('reCAPTCHA mock was already deleted!');
|
|
3911
|
+
}
|
|
3912
|
+
};
|
|
3913
|
+
return MockWidget;
|
|
3914
|
+
}());
|
|
3915
|
+
function generateRandomAlphaNumericString(len) {
|
|
3916
|
+
var chars = [];
|
|
3917
|
+
var allowedChars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
3918
|
+
for (var i = 0; i < len; i++) {
|
|
3919
|
+
chars.push(allowedChars.charAt(Math.floor(Math.random() * allowedChars.length)));
|
|
3920
|
+
}
|
|
3921
|
+
return chars.join('');
|
|
3922
|
+
}
|
|
3923
|
+
|
|
3740
3924
|
/* eslint-disable @typescript-eslint/no-require-imports */
|
|
3741
3925
|
var RECAPTCHA_ENTERPRISE_VERIFIER_TYPE = 'recaptcha-enterprise';
|
|
3742
3926
|
var FAKE_TOKEN = 'NO_RECAPTCHA';
|
|
@@ -3823,8 +4007,14 @@ var RecaptchaEnterpriseVerifier = /** @class */ (function () {
|
|
|
3823
4007
|
reject(Error('No reCAPTCHA enterprise script loaded.'));
|
|
3824
4008
|
}
|
|
3825
4009
|
}
|
|
4010
|
+
var mockRecaptcha;
|
|
3826
4011
|
var _this = this;
|
|
3827
4012
|
return tslib.__generator(this, function (_a) {
|
|
4013
|
+
// Returns Promise for a mock token when appVerificationDisabledForTesting is true.
|
|
4014
|
+
if (this.auth.settings.appVerificationDisabledForTesting) {
|
|
4015
|
+
mockRecaptcha = new MockGreCAPTCHATopLevel();
|
|
4016
|
+
return [2 /*return*/, mockRecaptcha.execute('siteKey', { action: 'verify' })];
|
|
4017
|
+
}
|
|
3828
4018
|
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
3829
4019
|
retrieveSiteKey(_this.auth)
|
|
3830
4020
|
.then(function (siteKey) {
|
|
@@ -3858,15 +4048,18 @@ var RecaptchaEnterpriseVerifier = /** @class */ (function () {
|
|
|
3858
4048
|
};
|
|
3859
4049
|
return RecaptchaEnterpriseVerifier;
|
|
3860
4050
|
}());
|
|
3861
|
-
function injectRecaptchaFields(auth, request, action,
|
|
3862
|
-
if (
|
|
4051
|
+
function injectRecaptchaFields(auth, request, action, isCaptchaResp, isFakeToken) {
|
|
4052
|
+
if (isCaptchaResp === void 0) { isCaptchaResp = false; }
|
|
4053
|
+
if (isFakeToken === void 0) { isFakeToken = false; }
|
|
3863
4054
|
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
3864
|
-
var verifier, captchaResponse, newRequest;
|
|
4055
|
+
var verifier, captchaResponse, newRequest, phoneNumber, recaptchaToken, recaptchaToken;
|
|
3865
4056
|
return tslib.__generator(this, function (_a) {
|
|
3866
4057
|
switch (_a.label) {
|
|
3867
4058
|
case 0:
|
|
3868
4059
|
verifier = new RecaptchaEnterpriseVerifier(auth);
|
|
3869
|
-
|
|
4060
|
+
if (!isFakeToken) return [3 /*break*/, 1];
|
|
4061
|
+
captchaResponse = FAKE_TOKEN;
|
|
4062
|
+
return [3 /*break*/, 5];
|
|
3870
4063
|
case 1:
|
|
3871
4064
|
_a.trys.push([1, 3, , 5]);
|
|
3872
4065
|
return [4 /*yield*/, verifier.verify(action)];
|
|
@@ -3881,7 +4074,35 @@ function injectRecaptchaFields(auth, request, action, captchaResp) {
|
|
|
3881
4074
|
return [3 /*break*/, 5];
|
|
3882
4075
|
case 5:
|
|
3883
4076
|
newRequest = tslib.__assign({}, request);
|
|
3884
|
-
if (
|
|
4077
|
+
if (action === "mfaSmsEnrollment" /* RecaptchaActionName.MFA_SMS_ENROLLMENT */ ||
|
|
4078
|
+
action === "mfaSmsSignIn" /* RecaptchaActionName.MFA_SMS_SIGNIN */) {
|
|
4079
|
+
if ('phoneEnrollmentInfo' in newRequest) {
|
|
4080
|
+
phoneNumber = newRequest.phoneEnrollmentInfo.phoneNumber;
|
|
4081
|
+
recaptchaToken = newRequest.phoneEnrollmentInfo.recaptchaToken;
|
|
4082
|
+
Object.assign(newRequest, {
|
|
4083
|
+
'phoneEnrollmentInfo': {
|
|
4084
|
+
phoneNumber: phoneNumber,
|
|
4085
|
+
recaptchaToken: recaptchaToken,
|
|
4086
|
+
captchaResponse: captchaResponse,
|
|
4087
|
+
'clientType': "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */,
|
|
4088
|
+
'recaptchaVersion': "RECAPTCHA_ENTERPRISE" /* RecaptchaVersion.ENTERPRISE */
|
|
4089
|
+
}
|
|
4090
|
+
});
|
|
4091
|
+
}
|
|
4092
|
+
else if ('phoneSignInInfo' in newRequest) {
|
|
4093
|
+
recaptchaToken = newRequest.phoneSignInInfo.recaptchaToken;
|
|
4094
|
+
Object.assign(newRequest, {
|
|
4095
|
+
'phoneSignInInfo': {
|
|
4096
|
+
recaptchaToken: recaptchaToken,
|
|
4097
|
+
captchaResponse: captchaResponse,
|
|
4098
|
+
'clientType': "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */,
|
|
4099
|
+
'recaptchaVersion': "RECAPTCHA_ENTERPRISE" /* RecaptchaVersion.ENTERPRISE */
|
|
4100
|
+
}
|
|
4101
|
+
});
|
|
4102
|
+
}
|
|
4103
|
+
return [2 /*return*/, newRequest];
|
|
4104
|
+
}
|
|
4105
|
+
if (!isCaptchaResp) {
|
|
3885
4106
|
Object.assign(newRequest, { captchaResponse: captchaResponse });
|
|
3886
4107
|
}
|
|
3887
4108
|
else {
|
|
@@ -3896,19 +4117,20 @@ function injectRecaptchaFields(auth, request, action, captchaResp) {
|
|
|
3896
4117
|
});
|
|
3897
4118
|
});
|
|
3898
4119
|
}
|
|
3899
|
-
function handleRecaptchaFlow(authInstance, request, actionName, actionMethod) {
|
|
3900
|
-
var _a;
|
|
4120
|
+
function handleRecaptchaFlow(authInstance, request, actionName, actionMethod, recaptchaAuthProvider) {
|
|
4121
|
+
var _a, _b;
|
|
3901
4122
|
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
3902
|
-
var requestWithRecaptcha;
|
|
4123
|
+
var requestWithRecaptcha, requestWithRecaptcha, requestWithRecaptchaFields;
|
|
3903
4124
|
var _this = this;
|
|
3904
|
-
return tslib.__generator(this, function (
|
|
3905
|
-
switch (
|
|
4125
|
+
return tslib.__generator(this, function (_c) {
|
|
4126
|
+
switch (_c.label) {
|
|
3906
4127
|
case 0:
|
|
4128
|
+
if (!(recaptchaAuthProvider === "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */)) return [3 /*break*/, 4];
|
|
3907
4129
|
if (!((_a = authInstance
|
|
3908
|
-
._getRecaptchaConfig()) === null || _a === void 0 ? void 0 : _a.isProviderEnabled("EMAIL_PASSWORD_PROVIDER" /*
|
|
4130
|
+
._getRecaptchaConfig()) === null || _a === void 0 ? void 0 : _a.isProviderEnabled("EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */))) return [3 /*break*/, 2];
|
|
3909
4131
|
return [4 /*yield*/, injectRecaptchaFields(authInstance, request, actionName, actionName === "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */)];
|
|
3910
4132
|
case 1:
|
|
3911
|
-
requestWithRecaptcha =
|
|
4133
|
+
requestWithRecaptcha = _c.sent();
|
|
3912
4134
|
return [2 /*return*/, actionMethod(authInstance, requestWithRecaptcha)];
|
|
3913
4135
|
case 2: return [2 /*return*/, actionMethod(authInstance, request).catch(function (error) { return tslib.__awaiter(_this, void 0, void 0, function () {
|
|
3914
4136
|
var requestWithRecaptcha;
|
|
@@ -3925,6 +4147,48 @@ function handleRecaptchaFlow(authInstance, request, actionName, actionMethod) {
|
|
|
3925
4147
|
}
|
|
3926
4148
|
});
|
|
3927
4149
|
}); })];
|
|
4150
|
+
case 3: return [3 /*break*/, 10];
|
|
4151
|
+
case 4:
|
|
4152
|
+
if (!(recaptchaAuthProvider === "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */)) return [3 /*break*/, 9];
|
|
4153
|
+
if (!((_b = authInstance
|
|
4154
|
+
._getRecaptchaConfig()) === null || _b === void 0 ? void 0 : _b.isProviderEnabled("PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */))) return [3 /*break*/, 6];
|
|
4155
|
+
return [4 /*yield*/, injectRecaptchaFields(authInstance, request, actionName)];
|
|
4156
|
+
case 5:
|
|
4157
|
+
requestWithRecaptcha = _c.sent();
|
|
4158
|
+
return [2 /*return*/, actionMethod(authInstance, requestWithRecaptcha).catch(function (error) { return tslib.__awaiter(_this, void 0, void 0, function () {
|
|
4159
|
+
var requestWithRecaptchaFields;
|
|
4160
|
+
var _a;
|
|
4161
|
+
return tslib.__generator(this, function (_b) {
|
|
4162
|
+
switch (_b.label) {
|
|
4163
|
+
case 0:
|
|
4164
|
+
if (!(((_a = authInstance
|
|
4165
|
+
._getRecaptchaConfig()) === null || _a === void 0 ? void 0 : _a.getProviderEnforcementState("PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */)) === "AUDIT" /* EnforcementState.AUDIT */)) return [3 /*break*/, 2];
|
|
4166
|
+
if (!(error.code === "auth/".concat("missing-recaptcha-token" /* AuthErrorCode.MISSING_RECAPTCHA_TOKEN */) ||
|
|
4167
|
+
error.code === "auth/".concat("invalid-app-credential" /* AuthErrorCode.INVALID_APP_CREDENTIAL */))) return [3 /*break*/, 2];
|
|
4168
|
+
console.log("Failed to verify with reCAPTCHA Enterprise. Automatically triggering the reCAPTCHA v2 flow to complete the ".concat(actionName, " flow."));
|
|
4169
|
+
return [4 /*yield*/, injectRecaptchaFields(authInstance, request, actionName, false, // isCaptchaResp
|
|
4170
|
+
true // isFakeToken
|
|
4171
|
+
)];
|
|
4172
|
+
case 1:
|
|
4173
|
+
requestWithRecaptchaFields = _b.sent();
|
|
4174
|
+
// This will call the PhoneApiCaller to fetch and inject reCAPTCHA v2 token.
|
|
4175
|
+
return [2 /*return*/, actionMethod(authInstance, requestWithRecaptchaFields)];
|
|
4176
|
+
case 2:
|
|
4177
|
+
// ENFORCE mode or AUDIT mode with any other error.
|
|
4178
|
+
return [2 /*return*/, Promise.reject(error)];
|
|
4179
|
+
}
|
|
4180
|
+
});
|
|
4181
|
+
}); })];
|
|
4182
|
+
case 6: return [4 /*yield*/, injectRecaptchaFields(authInstance, request, actionName, false, // isCaptchaResp
|
|
4183
|
+
true // isFakeToken
|
|
4184
|
+
)];
|
|
4185
|
+
case 7:
|
|
4186
|
+
requestWithRecaptchaFields = _c.sent();
|
|
4187
|
+
// This will call the PhoneApiCaller to fetch and inject v2 token.
|
|
4188
|
+
return [2 /*return*/, actionMethod(authInstance, requestWithRecaptchaFields)];
|
|
4189
|
+
case 8: return [3 /*break*/, 10];
|
|
4190
|
+
case 9: return [2 /*return*/, Promise.reject(recaptchaAuthProvider + ' provider is not supported.')];
|
|
4191
|
+
case 10: return [2 /*return*/];
|
|
3928
4192
|
}
|
|
3929
4193
|
});
|
|
3930
4194
|
});
|
|
@@ -3949,7 +4213,7 @@ function _initializeRecaptchaConfig(auth) {
|
|
|
3949
4213
|
else {
|
|
3950
4214
|
authInternal._tenantRecaptchaConfigs[authInternal.tenantId] = config;
|
|
3951
4215
|
}
|
|
3952
|
-
if (config.
|
|
4216
|
+
if (config.isAnyProviderEnabled()) {
|
|
3953
4217
|
verifier = new RecaptchaEnterpriseVerifier(authInternal);
|
|
3954
4218
|
void verifier.verify();
|
|
3955
4219
|
}
|
|
@@ -4435,7 +4699,7 @@ var EmailAuthCredential = /** @class */ (function (_super) {
|
|
|
4435
4699
|
password: this._password,
|
|
4436
4700
|
clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
|
|
4437
4701
|
};
|
|
4438
|
-
return [2 /*return*/, handleRecaptchaFlow(auth, request, "signInWithPassword" /* RecaptchaActionName.SIGN_IN_WITH_PASSWORD */, signInWithPassword)];
|
|
4702
|
+
return [2 /*return*/, handleRecaptchaFlow(auth, request, "signInWithPassword" /* RecaptchaActionName.SIGN_IN_WITH_PASSWORD */, signInWithPassword, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */)];
|
|
4439
4703
|
case "emailLink" /* SignInMethod.EMAIL_LINK */:
|
|
4440
4704
|
return [2 /*return*/, signInWithEmailLink$1(auth, {
|
|
4441
4705
|
email: this._email,
|
|
@@ -4462,7 +4726,7 @@ var EmailAuthCredential = /** @class */ (function (_super) {
|
|
|
4462
4726
|
password: this._password,
|
|
4463
4727
|
clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
|
|
4464
4728
|
};
|
|
4465
|
-
return [2 /*return*/, handleRecaptchaFlow(auth, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, linkEmailPassword)];
|
|
4729
|
+
return [2 /*return*/, handleRecaptchaFlow(auth, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, linkEmailPassword, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */)];
|
|
4466
4730
|
case "emailLink" /* SignInMethod.EMAIL_LINK */:
|
|
4467
4731
|
return [2 /*return*/, signInWithEmailLinkForLinking(auth, {
|
|
4468
4732
|
idToken: idToken,
|
|
@@ -6705,7 +6969,7 @@ function sendPasswordResetEmail(auth, email, actionCodeSettings) {
|
|
|
6705
6969
|
if (actionCodeSettings) {
|
|
6706
6970
|
_setActionCodeSettingsOnRequest(authInternal, request, actionCodeSettings);
|
|
6707
6971
|
}
|
|
6708
|
-
return [4 /*yield*/, handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendPasswordResetEmail$1)];
|
|
6972
|
+
return [4 /*yield*/, handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendPasswordResetEmail$1, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */)];
|
|
6709
6973
|
case 1:
|
|
6710
6974
|
_a.sent();
|
|
6711
6975
|
return [2 /*return*/];
|
|
@@ -6881,7 +7145,7 @@ function createUserWithEmailAndPassword(auth, email, password) {
|
|
|
6881
7145
|
password: password,
|
|
6882
7146
|
clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
|
|
6883
7147
|
};
|
|
6884
|
-
signUpResponse = handleRecaptchaFlow(authInternal, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, signUp);
|
|
7148
|
+
signUpResponse = handleRecaptchaFlow(authInternal, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, signUp, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
|
|
6885
7149
|
return [4 /*yield*/, signUpResponse.catch(function (error) {
|
|
6886
7150
|
if (error.code === "auth/".concat("password-does-not-meet-requirements" /* AuthErrorCode.PASSWORD_DOES_NOT_MEET_REQUIREMENTS */)) {
|
|
6887
7151
|
void recachePasswordPolicy(auth);
|
|
@@ -7012,7 +7276,7 @@ function sendSignInLinkToEmail(auth, email, actionCodeSettings) {
|
|
|
7012
7276
|
clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
|
|
7013
7277
|
};
|
|
7014
7278
|
setActionCodeSettings(request, actionCodeSettings);
|
|
7015
|
-
return [4 /*yield*/, handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendSignInLinkToEmail$1)];
|
|
7279
|
+
return [4 /*yield*/, handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendSignInLinkToEmail$1, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */)];
|
|
7016
7280
|
case 1:
|
|
7017
7281
|
_a.sent();
|
|
7018
7282
|
return [2 /*return*/];
|
|
@@ -8140,7 +8404,7 @@ function multiFactor(user) {
|
|
|
8140
8404
|
}
|
|
8141
8405
|
|
|
8142
8406
|
var name = "@firebase/auth";
|
|
8143
|
-
var version = "1.7.9-canary.
|
|
8407
|
+
var version = "1.7.9-canary.b942e9e6e";
|
|
8144
8408
|
|
|
8145
8409
|
/**
|
|
8146
8410
|
* @license
|
|
@@ -8504,143 +8768,6 @@ function _getWorkerGlobalScope() {
|
|
|
8504
8768
|
return _isWorker() ? self : null;
|
|
8505
8769
|
}
|
|
8506
8770
|
|
|
8507
|
-
/**
|
|
8508
|
-
* @license
|
|
8509
|
-
* Copyright 2020 Google LLC
|
|
8510
|
-
*
|
|
8511
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8512
|
-
* you may not use this file except in compliance with the License.
|
|
8513
|
-
* You may obtain a copy of the License at
|
|
8514
|
-
*
|
|
8515
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8516
|
-
*
|
|
8517
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
8518
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
8519
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
8520
|
-
* See the License for the specific language governing permissions and
|
|
8521
|
-
* limitations under the License.
|
|
8522
|
-
*/
|
|
8523
|
-
var _SOLVE_TIME_MS = 500;
|
|
8524
|
-
var _EXPIRATION_TIME_MS = 60000;
|
|
8525
|
-
var _WIDGET_ID_START = 1000000000000;
|
|
8526
|
-
var MockReCaptcha = /** @class */ (function () {
|
|
8527
|
-
function MockReCaptcha(auth) {
|
|
8528
|
-
this.auth = auth;
|
|
8529
|
-
this.counter = _WIDGET_ID_START;
|
|
8530
|
-
this._widgets = new Map();
|
|
8531
|
-
}
|
|
8532
|
-
MockReCaptcha.prototype.render = function (container, parameters) {
|
|
8533
|
-
var id = this.counter;
|
|
8534
|
-
this._widgets.set(id, new MockWidget(container, this.auth.name, parameters || {}));
|
|
8535
|
-
this.counter++;
|
|
8536
|
-
return id;
|
|
8537
|
-
};
|
|
8538
|
-
MockReCaptcha.prototype.reset = function (optWidgetId) {
|
|
8539
|
-
var _a;
|
|
8540
|
-
var id = optWidgetId || _WIDGET_ID_START;
|
|
8541
|
-
void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.delete());
|
|
8542
|
-
this._widgets.delete(id);
|
|
8543
|
-
};
|
|
8544
|
-
MockReCaptcha.prototype.getResponse = function (optWidgetId) {
|
|
8545
|
-
var _a;
|
|
8546
|
-
var id = optWidgetId || _WIDGET_ID_START;
|
|
8547
|
-
return ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.getResponse()) || '';
|
|
8548
|
-
};
|
|
8549
|
-
MockReCaptcha.prototype.execute = function (optWidgetId) {
|
|
8550
|
-
var _a;
|
|
8551
|
-
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
8552
|
-
var id;
|
|
8553
|
-
return tslib.__generator(this, function (_b) {
|
|
8554
|
-
id = optWidgetId || _WIDGET_ID_START;
|
|
8555
|
-
void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.execute());
|
|
8556
|
-
return [2 /*return*/, ''];
|
|
8557
|
-
});
|
|
8558
|
-
});
|
|
8559
|
-
};
|
|
8560
|
-
return MockReCaptcha;
|
|
8561
|
-
}());
|
|
8562
|
-
var MockWidget = /** @class */ (function () {
|
|
8563
|
-
function MockWidget(containerOrId, appName, params) {
|
|
8564
|
-
var _this = this;
|
|
8565
|
-
this.params = params;
|
|
8566
|
-
this.timerId = null;
|
|
8567
|
-
this.deleted = false;
|
|
8568
|
-
this.responseToken = null;
|
|
8569
|
-
this.clickHandler = function () {
|
|
8570
|
-
_this.execute();
|
|
8571
|
-
};
|
|
8572
|
-
var container = typeof containerOrId === 'string'
|
|
8573
|
-
? document.getElementById(containerOrId)
|
|
8574
|
-
: containerOrId;
|
|
8575
|
-
_assert(container, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */, { appName: appName });
|
|
8576
|
-
this.container = container;
|
|
8577
|
-
this.isVisible = this.params.size !== 'invisible';
|
|
8578
|
-
if (this.isVisible) {
|
|
8579
|
-
this.execute();
|
|
8580
|
-
}
|
|
8581
|
-
else {
|
|
8582
|
-
this.container.addEventListener('click', this.clickHandler);
|
|
8583
|
-
}
|
|
8584
|
-
}
|
|
8585
|
-
MockWidget.prototype.getResponse = function () {
|
|
8586
|
-
this.checkIfDeleted();
|
|
8587
|
-
return this.responseToken;
|
|
8588
|
-
};
|
|
8589
|
-
MockWidget.prototype.delete = function () {
|
|
8590
|
-
this.checkIfDeleted();
|
|
8591
|
-
this.deleted = true;
|
|
8592
|
-
if (this.timerId) {
|
|
8593
|
-
clearTimeout(this.timerId);
|
|
8594
|
-
this.timerId = null;
|
|
8595
|
-
}
|
|
8596
|
-
this.container.removeEventListener('click', this.clickHandler);
|
|
8597
|
-
};
|
|
8598
|
-
MockWidget.prototype.execute = function () {
|
|
8599
|
-
var _this = this;
|
|
8600
|
-
this.checkIfDeleted();
|
|
8601
|
-
if (this.timerId) {
|
|
8602
|
-
return;
|
|
8603
|
-
}
|
|
8604
|
-
this.timerId = window.setTimeout(function () {
|
|
8605
|
-
_this.responseToken = generateRandomAlphaNumericString(50);
|
|
8606
|
-
var _a = _this.params, callback = _a.callback, expiredCallback = _a["expired-callback"];
|
|
8607
|
-
if (callback) {
|
|
8608
|
-
try {
|
|
8609
|
-
callback(_this.responseToken);
|
|
8610
|
-
}
|
|
8611
|
-
catch (e) { }
|
|
8612
|
-
}
|
|
8613
|
-
_this.timerId = window.setTimeout(function () {
|
|
8614
|
-
_this.timerId = null;
|
|
8615
|
-
_this.responseToken = null;
|
|
8616
|
-
if (expiredCallback) {
|
|
8617
|
-
try {
|
|
8618
|
-
expiredCallback();
|
|
8619
|
-
}
|
|
8620
|
-
catch (e) { }
|
|
8621
|
-
}
|
|
8622
|
-
if (_this.isVisible) {
|
|
8623
|
-
_this.execute();
|
|
8624
|
-
}
|
|
8625
|
-
}, _EXPIRATION_TIME_MS);
|
|
8626
|
-
}, _SOLVE_TIME_MS);
|
|
8627
|
-
};
|
|
8628
|
-
MockWidget.prototype.checkIfDeleted = function () {
|
|
8629
|
-
if (this.deleted) {
|
|
8630
|
-
throw new Error('reCAPTCHA mock was already deleted!');
|
|
8631
|
-
}
|
|
8632
|
-
};
|
|
8633
|
-
return MockWidget;
|
|
8634
|
-
}());
|
|
8635
|
-
function generateRandomAlphaNumericString(len) {
|
|
8636
|
-
var chars = [];
|
|
8637
|
-
var allowedChars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
8638
|
-
for (var i = 0; i < len; i++) {
|
|
8639
|
-
chars.push(allowedChars.charAt(Math.floor(Math.random() * allowedChars.length)));
|
|
8640
|
-
}
|
|
8641
|
-
return chars.join('');
|
|
8642
|
-
}
|
|
8643
|
-
|
|
8644
8771
|
/**
|
|
8645
8772
|
* @license
|
|
8646
8773
|
* Copyright 2020 Google LLC
|
|
@@ -9047,12 +9174,15 @@ var ConfirmationResultImpl = /** @class */ (function () {
|
|
|
9047
9174
|
* provides the code sent to their phone, call {@link ConfirmationResult.confirm}
|
|
9048
9175
|
* with the code to sign the user in.
|
|
9049
9176
|
*
|
|
9050
|
-
* For abuse prevention, this method
|
|
9051
|
-
* This SDK includes
|
|
9177
|
+
* For abuse prevention, this method requires a {@link ApplicationVerifier}.
|
|
9178
|
+
* This SDK includes an implementation based on reCAPTCHA v2, {@link RecaptchaVerifier}.
|
|
9052
9179
|
* This function can work on other platforms that do not support the
|
|
9053
9180
|
* {@link RecaptchaVerifier} (like React Native), but you need to use a
|
|
9054
9181
|
* third-party {@link ApplicationVerifier} implementation.
|
|
9055
9182
|
*
|
|
9183
|
+
* If you've enabled project-level reCAPTCHA Enterprise bot protection in
|
|
9184
|
+
* Enforce mode, you can omit the {@link ApplicationVerifier}.
|
|
9185
|
+
*
|
|
9056
9186
|
* This method does not work in a Node.js environment or with {@link Auth} instances created with a
|
|
9057
9187
|
* {@link @firebase/app#FirebaseServerApp}.
|
|
9058
9188
|
*
|
|
@@ -9165,17 +9295,29 @@ function reauthenticateWithPhoneNumber(user, phoneNumber, appVerifier) {
|
|
|
9165
9295
|
function _verifyPhoneNumber(auth, options, verifier) {
|
|
9166
9296
|
var _a;
|
|
9167
9297
|
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
9168
|
-
var
|
|
9298
|
+
var phoneInfoOptions, session, startPhoneMfaEnrollmentRequest, startEnrollPhoneMfaActionCallback, startPhoneMfaEnrollmentResponse, response, mfaEnrollmentId, startPhoneMfaSignInRequest, startSignInPhoneMfaActionCallback, startPhoneMfaSignInResponse, response, sendPhoneVerificationCodeRequest, sendPhoneVerificationCodeActionCallback, sendPhoneVerificationCodeResponse, response;
|
|
9299
|
+
var _this = this;
|
|
9169
9300
|
return tslib.__generator(this, function (_b) {
|
|
9170
9301
|
switch (_b.label) {
|
|
9171
|
-
case 0:
|
|
9302
|
+
case 0:
|
|
9303
|
+
if (!!auth._getRecaptchaConfig()) return [3 /*break*/, 4];
|
|
9304
|
+
_b.label = 1;
|
|
9172
9305
|
case 1:
|
|
9173
|
-
|
|
9174
|
-
|
|
9306
|
+
_b.trys.push([1, 3, , 4]);
|
|
9307
|
+
return [4 /*yield*/, _initializeRecaptchaConfig(auth)];
|
|
9175
9308
|
case 2:
|
|
9176
|
-
_b.
|
|
9177
|
-
|
|
9178
|
-
|
|
9309
|
+
_b.sent();
|
|
9310
|
+
return [3 /*break*/, 4];
|
|
9311
|
+
case 3:
|
|
9312
|
+
_b.sent();
|
|
9313
|
+
// If an error occurs while fetching the config, there is no way to know the enablement state
|
|
9314
|
+
// of Phone provider, so we proceed with recaptcha V2 verification.
|
|
9315
|
+
// The error is likely "recaptchaKey undefined", as reCAPTCHA Enterprise is not
|
|
9316
|
+
// enabled for any provider.
|
|
9317
|
+
console.log('Failed to initialize reCAPTCHA Enterprise config. Triggering the reCAPTCHA v2 verification.');
|
|
9318
|
+
return [3 /*break*/, 4];
|
|
9319
|
+
case 4:
|
|
9320
|
+
_b.trys.push([4, , 12, 13]);
|
|
9179
9321
|
phoneInfoOptions = void 0;
|
|
9180
9322
|
if (typeof options === 'string') {
|
|
9181
9323
|
phoneInfoOptions = {
|
|
@@ -9185,48 +9327,106 @@ function _verifyPhoneNumber(auth, options, verifier) {
|
|
|
9185
9327
|
else {
|
|
9186
9328
|
phoneInfoOptions = options;
|
|
9187
9329
|
}
|
|
9188
|
-
if (!('session' in phoneInfoOptions)) return [3 /*break*/,
|
|
9330
|
+
if (!('session' in phoneInfoOptions)) return [3 /*break*/, 9];
|
|
9189
9331
|
session = phoneInfoOptions.session;
|
|
9190
|
-
if (!('phoneNumber' in phoneInfoOptions)) return [3 /*break*/,
|
|
9332
|
+
if (!('phoneNumber' in phoneInfoOptions)) return [3 /*break*/, 6];
|
|
9191
9333
|
_assert(session.type === "enroll" /* MultiFactorSessionType.ENROLL */, auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
|
|
9192
|
-
|
|
9193
|
-
|
|
9194
|
-
|
|
9195
|
-
|
|
9196
|
-
|
|
9334
|
+
startPhoneMfaEnrollmentRequest = {
|
|
9335
|
+
idToken: session.credential,
|
|
9336
|
+
phoneEnrollmentInfo: {
|
|
9337
|
+
phoneNumber: phoneInfoOptions.phoneNumber,
|
|
9338
|
+
clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
|
|
9339
|
+
}
|
|
9340
|
+
};
|
|
9341
|
+
startEnrollPhoneMfaActionCallback = function (authInstance, request) { return tslib.__awaiter(_this, void 0, void 0, function () {
|
|
9342
|
+
var requestWithRecaptchaV2;
|
|
9343
|
+
return tslib.__generator(this, function (_a) {
|
|
9344
|
+
switch (_a.label) {
|
|
9345
|
+
case 0:
|
|
9346
|
+
if (!(request.phoneEnrollmentInfo.captchaResponse === FAKE_TOKEN)) return [3 /*break*/, 2];
|
|
9347
|
+
_assert((verifier === null || verifier === void 0 ? void 0 : verifier.type) === RECAPTCHA_VERIFIER_TYPE, authInstance, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
|
|
9348
|
+
return [4 /*yield*/, injectRecaptchaV2Token(authInstance, request, verifier)];
|
|
9349
|
+
case 1:
|
|
9350
|
+
requestWithRecaptchaV2 = _a.sent();
|
|
9351
|
+
return [2 /*return*/, startEnrollPhoneMfa(authInstance, requestWithRecaptchaV2)];
|
|
9352
|
+
case 2: return [2 /*return*/, startEnrollPhoneMfa(authInstance, request)];
|
|
9197
9353
|
}
|
|
9354
|
+
});
|
|
9355
|
+
}); };
|
|
9356
|
+
startPhoneMfaEnrollmentResponse = handleRecaptchaFlow(auth, startPhoneMfaEnrollmentRequest, "mfaSmsEnrollment" /* RecaptchaActionName.MFA_SMS_ENROLLMENT */, startEnrollPhoneMfaActionCallback, "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */);
|
|
9357
|
+
return [4 /*yield*/, startPhoneMfaEnrollmentResponse.catch(function (error) {
|
|
9358
|
+
return Promise.reject(error);
|
|
9198
9359
|
})];
|
|
9199
|
-
case
|
|
9360
|
+
case 5:
|
|
9200
9361
|
response = _b.sent();
|
|
9201
9362
|
return [2 /*return*/, response.phoneSessionInfo.sessionInfo];
|
|
9202
|
-
case
|
|
9363
|
+
case 6:
|
|
9203
9364
|
_assert(session.type === "signin" /* MultiFactorSessionType.SIGN_IN */, auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
|
|
9204
9365
|
mfaEnrollmentId = ((_a = phoneInfoOptions.multiFactorHint) === null || _a === void 0 ? void 0 : _a.uid) ||
|
|
9205
9366
|
phoneInfoOptions.multiFactorUid;
|
|
9206
9367
|
_assert(mfaEnrollmentId, auth, "missing-multi-factor-info" /* AuthErrorCode.MISSING_MFA_INFO */);
|
|
9207
|
-
|
|
9208
|
-
|
|
9209
|
-
|
|
9210
|
-
|
|
9211
|
-
|
|
9368
|
+
startPhoneMfaSignInRequest = {
|
|
9369
|
+
mfaPendingCredential: session.credential,
|
|
9370
|
+
mfaEnrollmentId: mfaEnrollmentId,
|
|
9371
|
+
phoneSignInInfo: {
|
|
9372
|
+
clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
|
|
9373
|
+
}
|
|
9374
|
+
};
|
|
9375
|
+
startSignInPhoneMfaActionCallback = function (authInstance, request) { return tslib.__awaiter(_this, void 0, void 0, function () {
|
|
9376
|
+
var requestWithRecaptchaV2;
|
|
9377
|
+
return tslib.__generator(this, function (_a) {
|
|
9378
|
+
switch (_a.label) {
|
|
9379
|
+
case 0:
|
|
9380
|
+
if (!(request.phoneSignInInfo.captchaResponse === FAKE_TOKEN)) return [3 /*break*/, 2];
|
|
9381
|
+
_assert((verifier === null || verifier === void 0 ? void 0 : verifier.type) === RECAPTCHA_VERIFIER_TYPE, authInstance, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
|
|
9382
|
+
return [4 /*yield*/, injectRecaptchaV2Token(authInstance, request, verifier)];
|
|
9383
|
+
case 1:
|
|
9384
|
+
requestWithRecaptchaV2 = _a.sent();
|
|
9385
|
+
return [2 /*return*/, startSignInPhoneMfa(authInstance, requestWithRecaptchaV2)];
|
|
9386
|
+
case 2: return [2 /*return*/, startSignInPhoneMfa(authInstance, request)];
|
|
9212
9387
|
}
|
|
9388
|
+
});
|
|
9389
|
+
}); };
|
|
9390
|
+
startPhoneMfaSignInResponse = handleRecaptchaFlow(auth, startPhoneMfaSignInRequest, "mfaSmsSignIn" /* RecaptchaActionName.MFA_SMS_SIGNIN */, startSignInPhoneMfaActionCallback, "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */);
|
|
9391
|
+
return [4 /*yield*/, startPhoneMfaSignInResponse.catch(function (error) {
|
|
9392
|
+
return Promise.reject(error);
|
|
9213
9393
|
})];
|
|
9214
|
-
case
|
|
9394
|
+
case 7:
|
|
9215
9395
|
response = _b.sent();
|
|
9216
9396
|
return [2 /*return*/, response.phoneResponseInfo.sessionInfo];
|
|
9217
|
-
case
|
|
9218
|
-
case
|
|
9397
|
+
case 8: return [3 /*break*/, 11];
|
|
9398
|
+
case 9:
|
|
9399
|
+
sendPhoneVerificationCodeRequest = {
|
|
9219
9400
|
phoneNumber: phoneInfoOptions.phoneNumber,
|
|
9220
|
-
|
|
9221
|
-
}
|
|
9222
|
-
|
|
9223
|
-
|
|
9224
|
-
|
|
9225
|
-
|
|
9401
|
+
clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
|
|
9402
|
+
};
|
|
9403
|
+
sendPhoneVerificationCodeActionCallback = function (authInstance, request) { return tslib.__awaiter(_this, void 0, void 0, function () {
|
|
9404
|
+
var requestWithRecaptchaV2;
|
|
9405
|
+
return tslib.__generator(this, function (_a) {
|
|
9406
|
+
switch (_a.label) {
|
|
9407
|
+
case 0:
|
|
9408
|
+
if (!(request.captchaResponse === FAKE_TOKEN)) return [3 /*break*/, 2];
|
|
9409
|
+
_assert((verifier === null || verifier === void 0 ? void 0 : verifier.type) === RECAPTCHA_VERIFIER_TYPE, authInstance, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
|
|
9410
|
+
return [4 /*yield*/, injectRecaptchaV2Token(authInstance, request, verifier)];
|
|
9411
|
+
case 1:
|
|
9412
|
+
requestWithRecaptchaV2 = _a.sent();
|
|
9413
|
+
return [2 /*return*/, sendPhoneVerificationCode(authInstance, requestWithRecaptchaV2)];
|
|
9414
|
+
case 2: return [2 /*return*/, sendPhoneVerificationCode(authInstance, request)];
|
|
9415
|
+
}
|
|
9416
|
+
});
|
|
9417
|
+
}); };
|
|
9418
|
+
sendPhoneVerificationCodeResponse = handleRecaptchaFlow(auth, sendPhoneVerificationCodeRequest, "sendVerificationCode" /* RecaptchaActionName.SEND_VERIFICATION_CODE */, sendPhoneVerificationCodeActionCallback, "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */);
|
|
9419
|
+
return [4 /*yield*/, sendPhoneVerificationCodeResponse.catch(function (error) {
|
|
9420
|
+
return Promise.reject(error);
|
|
9421
|
+
})];
|
|
9226
9422
|
case 10:
|
|
9227
|
-
|
|
9423
|
+
response = _b.sent();
|
|
9424
|
+
return [2 /*return*/, response.sessionInfo];
|
|
9425
|
+
case 11: return [3 /*break*/, 13];
|
|
9426
|
+
case 12:
|
|
9427
|
+
verifier === null || verifier === void 0 ? void 0 : verifier._reset();
|
|
9228
9428
|
return [7 /*endfinally*/];
|
|
9229
|
-
case
|
|
9429
|
+
case 13: return [2 /*return*/];
|
|
9230
9430
|
}
|
|
9231
9431
|
});
|
|
9232
9432
|
});
|
|
@@ -9271,6 +9471,59 @@ function updatePhoneNumber(user, credential) {
|
|
|
9271
9471
|
}
|
|
9272
9472
|
});
|
|
9273
9473
|
});
|
|
9474
|
+
}
|
|
9475
|
+
// Helper function that fetches and injects a reCAPTCHA v2 token into the request.
|
|
9476
|
+
function injectRecaptchaV2Token(auth, request, recaptchaV2Verifier) {
|
|
9477
|
+
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
9478
|
+
var recaptchaV2Token, newRequest, phoneNumber, captchaResponse, clientType, recaptchaVersion, captchaResponse, clientType, recaptchaVersion;
|
|
9479
|
+
return tslib.__generator(this, function (_a) {
|
|
9480
|
+
switch (_a.label) {
|
|
9481
|
+
case 0:
|
|
9482
|
+
_assert(recaptchaV2Verifier.type === RECAPTCHA_VERIFIER_TYPE, auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
|
|
9483
|
+
return [4 /*yield*/, recaptchaV2Verifier.verify()];
|
|
9484
|
+
case 1:
|
|
9485
|
+
recaptchaV2Token = _a.sent();
|
|
9486
|
+
_assert(typeof recaptchaV2Token === 'string', auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
|
|
9487
|
+
newRequest = tslib.__assign({}, request);
|
|
9488
|
+
if ('phoneEnrollmentInfo' in newRequest) {
|
|
9489
|
+
phoneNumber = newRequest.phoneEnrollmentInfo.phoneNumber;
|
|
9490
|
+
captchaResponse = newRequest.phoneEnrollmentInfo.captchaResponse;
|
|
9491
|
+
clientType = newRequest
|
|
9492
|
+
.phoneEnrollmentInfo.clientType;
|
|
9493
|
+
recaptchaVersion = newRequest.phoneEnrollmentInfo.recaptchaVersion;
|
|
9494
|
+
Object.assign(newRequest, {
|
|
9495
|
+
'phoneEnrollmentInfo': {
|
|
9496
|
+
phoneNumber: phoneNumber,
|
|
9497
|
+
recaptchaToken: recaptchaV2Token,
|
|
9498
|
+
captchaResponse: captchaResponse,
|
|
9499
|
+
clientType: clientType,
|
|
9500
|
+
recaptchaVersion: recaptchaVersion
|
|
9501
|
+
}
|
|
9502
|
+
});
|
|
9503
|
+
return [2 /*return*/, newRequest];
|
|
9504
|
+
}
|
|
9505
|
+
else if ('phoneSignInInfo' in newRequest) {
|
|
9506
|
+
captchaResponse = newRequest.phoneSignInInfo.captchaResponse;
|
|
9507
|
+
clientType = newRequest
|
|
9508
|
+
.phoneSignInInfo.clientType;
|
|
9509
|
+
recaptchaVersion = newRequest.phoneSignInInfo.recaptchaVersion;
|
|
9510
|
+
Object.assign(newRequest, {
|
|
9511
|
+
'phoneSignInInfo': {
|
|
9512
|
+
recaptchaToken: recaptchaV2Token,
|
|
9513
|
+
captchaResponse: captchaResponse,
|
|
9514
|
+
clientType: clientType,
|
|
9515
|
+
recaptchaVersion: recaptchaVersion
|
|
9516
|
+
}
|
|
9517
|
+
});
|
|
9518
|
+
return [2 /*return*/, newRequest];
|
|
9519
|
+
}
|
|
9520
|
+
else {
|
|
9521
|
+
Object.assign(newRequest, { 'recaptchaToken': recaptchaV2Token });
|
|
9522
|
+
return [2 /*return*/, newRequest];
|
|
9523
|
+
}
|
|
9524
|
+
}
|
|
9525
|
+
});
|
|
9526
|
+
});
|
|
9274
9527
|
}
|
|
9275
9528
|
|
|
9276
9529
|
/**
|
|
@@ -9342,12 +9595,14 @@ var PhoneAuthProvider = /** @class */ (function () {
|
|
|
9342
9595
|
*
|
|
9343
9596
|
* @param phoneInfoOptions - The user's {@link PhoneInfoOptions}. The phone number should be in
|
|
9344
9597
|
* E.164 format (e.g. +16505550101).
|
|
9345
|
-
* @param applicationVerifier -
|
|
9346
|
-
*
|
|
9347
|
-
* {@link RecaptchaVerifier}.
|
|
9598
|
+
* @param applicationVerifier - An {@link ApplicationVerifier}, which prevents
|
|
9599
|
+
* requests from unauthorized clients. This SDK includes an implementation
|
|
9600
|
+
* based on reCAPTCHA v2, {@link RecaptchaVerifier}. If you've enabled
|
|
9601
|
+
* reCAPTCHA Enterprise bot protection in Enforce mode, this parameter is
|
|
9602
|
+
* optional; in all other configurations, the parameter is required.
|
|
9348
9603
|
*
|
|
9349
9604
|
* @returns A Promise for a verification ID that can be passed to
|
|
9350
|
-
* {@link PhoneAuthProvider.credential} to identify this flow
|
|
9605
|
+
* {@link PhoneAuthProvider.credential} to identify this flow.
|
|
9351
9606
|
*/
|
|
9352
9607
|
PhoneAuthProvider.prototype.verifyPhoneNumber = function (phoneOptions, applicationVerifier) {
|
|
9353
9608
|
return _verifyPhoneNumber(this.auth, phoneOptions, util.getModularInstance(applicationVerifier));
|
|
@@ -9816,4 +10071,4 @@ exports.useDeviceLanguage = useDeviceLanguage;
|
|
|
9816
10071
|
exports.validatePassword = validatePassword;
|
|
9817
10072
|
exports.verifyBeforeUpdateEmail = verifyBeforeUpdateEmail;
|
|
9818
10073
|
exports.verifyPasswordResetCode = verifyPasswordResetCode;
|
|
9819
|
-
//# sourceMappingURL=index-
|
|
10074
|
+
//# sourceMappingURL=index-dd6cc9b0.js.map
|