@@ -45,7 +45,10 @@ import {
45
45
confirmPasswordReset ,
46
46
linkWithCredential ,
47
47
reauthenticateWithCredential ,
48
- unlink
48
+ unlink ,
49
+ getMultiFactorResolver ,
50
+ multiFactor ,
51
+ PhoneMultiFactorGenerator
49
52
} from '@firebase/auth-exp' ;
50
53
51
54
import { config } from './config' ;
@@ -189,8 +192,8 @@ function addProviderIcon(providerId) {
189
192
* @param {!firebase.User } activeUser The corresponding user.
190
193
*/
191
194
function showMultiFactorStatus ( activeUser ) {
192
- var enrolledFactors =
193
- ( activeUser . multiFactor && activeUser . multiFactor . enrolledFactors ) || [ ] ;
195
+ mfaUser = multiFactor ( activeUser ) ;
196
+ var enrolledFactors = ( mfaUser && mfaUser . enrolledFactors ) || [ ] ;
194
197
var $listGroup = $ ( '#user-info .dropdown-menu.enrolled-second-factors' ) ;
195
198
// Hide the drop down menu initially.
196
199
$listGroup
@@ -221,7 +224,7 @@ function showMultiFactorStatus(activeUser) {
221
224
var label = info && ( info . displayName || info . uid ) ;
222
225
if ( label ) {
223
226
$ ( '#enrolled-factors-drop-down' ) . removeClass ( 'open' ) ;
224
- activeUser . multiFactor . unenroll ( info ) . then ( function ( ) {
227
+ mfaUser . unenroll ( info ) . then ( function ( ) {
225
228
refreshUserData ( ) ;
226
229
alertSuccess ( 'Multi-factor successfully unenrolled.' ) ;
227
230
} , onAuthError ) ;
@@ -249,7 +252,7 @@ function onAuthError(error) {
249
252
logAtLevel_ ( error , 'error' ) ;
250
253
if ( error . code == 'auth/multi-factor-auth-required' ) {
251
254
// Handle second factor sign-in.
252
- handleMultiFactorSignIn ( error . resolver ) ;
255
+ handleMultiFactorSignIn ( getMultiFactorResolver ( auth , error ) ) ;
253
256
} else {
254
257
alertError ( 'Error: ' + error . code ) ;
255
258
}
@@ -361,10 +364,7 @@ function onSignInWithEmailLink() {
361
364
function onLinkWithEmailLink ( ) {
362
365
var email = $ ( '#link-with-email-link-email' ) . val ( ) ;
363
366
var link = $ ( '#link-with-email-link-link' ) . val ( ) || undefined ;
364
- var credential = firebase . auth . EmailAuthProvider . credentialWithLink (
365
- email ,
366
- link
367
- ) ;
367
+ var credential = EmailAuthProvider . credentialWithLink ( email , link ) ;
368
368
linkWithCredential ( activeUser ( ) , credential ) . then (
369
369
onAuthUserCredentialSuccess ,
370
370
onAuthError
@@ -578,8 +578,8 @@ function onStartEnrollWithPhoneMultiFactor() {
578
578
clearApplicationVerifier ( ) ;
579
579
// Initialize a reCAPTCHA application verifier.
580
580
makeApplicationVerifier ( 'enroll-mfa-verify-phone-number' ) ;
581
- activeUser ( )
582
- . multiFactor . getSession ( )
581
+ multiFactor ( activeUser ( ) )
582
+ . getSession ( )
583
583
. then ( function ( multiFactorSession ) {
584
584
var phoneInfoOptions = {
585
585
'phoneNumber' : phoneNumber ,
@@ -604,23 +604,24 @@ function onStartEnrollWithPhoneMultiFactor() {
604
604
* Confirms a phone number verification for MFA enrollment.
605
605
*/
606
606
function onFinalizeEnrollWithPhoneMultiFactor ( ) {
607
- alertNotImplemented ( ) ;
608
- // var verificationId = $('#enroll-mfa-phone-verification-id ').val();
609
- // var verificationCode = $('#enroll-mfa-phone-verification-code').val();
610
- // if (!verificationId || !verificationCode || !activeUser()) {
611
- // return;
612
- // }
613
- // var credential = PhoneAuthProvider.credential(
614
- // verificationId, verificationCode);
615
- // var multiFactorAssertion =
616
- // firebase.auth. PhoneMultiFactorGenerator.assertion(credential);
617
- // var displayName = $('#enroll-mfa-phone-display-name').val() || undefined;
607
+ var verificationId = $ ( '#enroll-mfa-phone-verification-id' ) . val ( ) ;
608
+ var verificationCode = $ ( '#enroll-mfa-phone-verification-code ' ) . val ( ) ;
609
+ if ( ! verificationId || ! verificationCode || ! activeUser ( ) ) {
610
+ return ;
611
+ }
612
+ var credential = PhoneAuthProvider . credential (
613
+ verificationId ,
614
+ verificationCode
615
+ ) ;
616
+ var multiFactorAssertion = PhoneMultiFactorGenerator . assertion ( credential ) ;
617
+ var displayName = $ ( '#enroll-mfa-phone-display-name' ) . val ( ) || undefined ;
618
618
619
- // activeUser().multiFactor.enroll(multiFactorAssertion, displayName)
620
- // .then(function() {
621
- // refreshUserData();
622
- // alertSuccess('Phone number enrolled!');
623
- // }, onAuthError);
619
+ multiFactor ( activeUser ( ) )
620
+ . enroll ( multiFactorAssertion , displayName )
621
+ . then ( function ( ) {
622
+ refreshUserData ( ) ;
623
+ alertSuccess ( 'Phone number enrolled!' ) ;
624
+ } , onAuthError ) ;
624
625
}
625
626
626
627
/**
@@ -830,7 +831,7 @@ function onLinkWithEmailAndPassword() {
830
831
var password = $ ( '#link-password' ) . val ( ) ;
831
832
linkWithCredential (
832
833
activeUser ( ) ,
833
- firebase . auth . EmailAuthProvider . credential ( email , password )
834
+ EmailAuthProvider . credential ( email , password )
834
835
) . then ( onAuthUserCredentialSuccess , onAuthError ) ;
835
836
}
836
837
@@ -966,7 +967,7 @@ function onSignOut() {
966
967
967
968
/**
968
969
* Handles multi-factor sign-in completion.
969
- * @param {!firebase.auth. MultiFactorResolver } resolver The multi-factor error
970
+ * @param {!MultiFactorResolver } resolver The multi-factor error
970
971
* resolver.
971
972
*/
972
973
function handleMultiFactorSignIn ( resolver ) {
@@ -1002,7 +1003,7 @@ function handleMultiFactorSignIn(resolver) {
1002
1003
* Displays the list of multi-factors in the provided list group.
1003
1004
* @param {!jQuery<!HTMLElement> } $listGroup The list group where the enrolled
1004
1005
* factors will be displayed.
1005
- * @param {!Array<!firebase.auth. MultiFactorInfo> } multiFactorInfo The list of
1006
+ * @param {!Array<!MultiFactorInfo> } multiFactorInfo The list of
1006
1007
* multi-factors to display.
1007
1008
* @param {?function(!jQuery.Event) } onClick The click handler when a second
1008
1009
* factor is clicked.
@@ -1119,20 +1120,20 @@ function onStartSignInWithPhoneMultiFactor(event) {
1119
1120
* @param {!jQuery.Event } event The jQuery event object.
1120
1121
*/
1121
1122
function onFinalizeSignInWithPhoneMultiFactor ( event ) {
1122
- alertNotImplemented ( ) ;
1123
- // event.preventDefault ();
1124
- // var verificationId = $('#multi-factor-sign-in-verification-id ').val();
1125
- // var code = $('#multi-factor-sign-in-verification-code').val();
1126
- // if (!code || !verificationId || !multiFactorErrorResolver) {
1127
- // return;
1128
- // }
1129
- // var cred = PhoneAuthProvider.credential(verificationId, code );
1130
- // var assertion = firebase.auth.PhoneMultiFactorGenerator.assertion(cred);
1131
- // multiFactorErrorResolver .resolveSignIn(assertion)
1132
- // .then(function(userCredential) {
1133
- // onAuthUserCredentialSuccess(userCredential);
1134
- // $('#multiFactorModal').modal('hide');
1135
- // }, onAuthError);
1123
+ event . preventDefault ( ) ;
1124
+ var verificationId = $ ( '#multi-factor-sign-in-verification-id' ) . val ( ) ;
1125
+ var code = $ ( '#multi-factor-sign-in-verification-code ' ) . val ( ) ;
1126
+ if ( ! code || ! verificationId || ! multiFactorErrorResolver ) {
1127
+ return ;
1128
+ }
1129
+ var cred = PhoneAuthProvider . credential ( verificationId , code ) ;
1130
+ var assertion = PhoneMultiFactorGenerator . assertion ( cred ) ;
1131
+ multiFactorErrorResolver
1132
+ . resolveSignIn ( assertion )
1133
+ . then ( function ( userCredential ) {
1134
+ onAuthUserCredentialSuccess ( userCredential ) ;
1135
+ $ ( '#multiFactorModal' ) . modal ( 'hide' ) ;
1136
+ } , onAuthError ) ;
1136
1137
}
1137
1138
1138
1139
/**
0 commit comments