17
17
18
18
import { OperationType } from '@firebase/auth-types-exp' ;
19
19
20
- import { signInWithIdp , SignInWithIdpRequest } from '../../api/authentication/idp' ;
20
+ import {
21
+ signInWithIdp , SignInWithIdpRequest , SignInWithIdpResponse
22
+ } from '../../api/authentication/idp' ;
21
23
import { Auth } from '../../model/auth' ;
22
24
import { User , UserCredential } from '../../model/user' ;
23
- import { _authCredentialFromTokenResponse } from '../credentials/inferred ' ;
25
+ import { _authCredentialFromTokenResponse } from '../credentials/from_token_response ' ;
24
26
import { _link as _linkUser } from '../user/link_unlink' ;
25
27
import { _reauthenticate } from '../user/reauthenticate' ;
26
28
import { UserCredentialImpl } from '../user/user_credential_impl' ;
@@ -38,28 +40,35 @@ export interface IdpTaskParams {
38
40
39
41
export type IdpTask = ( params : IdpTaskParams ) => Promise < UserCredential > ;
40
42
41
- function paramsToRequest ( {
43
+ function callIdpSignIn (
44
+ {
45
+ auth,
42
46
requestUri,
43
47
sessionId,
44
48
tenantId,
45
49
pendingToken,
46
50
postBody
47
- } : IdpTaskParams ) : SignInWithIdpRequest {
48
- return {
51
+ } : IdpTaskParams , idToken ?: string ) : Promise < SignInWithIdpResponse > {
52
+ const request : SignInWithIdpRequest = {
49
53
requestUri,
50
54
sessionId,
51
55
postBody : postBody || null ,
52
56
tenantId,
53
57
pendingToken,
54
58
returnSecureToken : true
55
59
} ;
60
+
61
+ if ( idToken ) {
62
+ request . idToken = idToken ;
63
+ }
64
+
65
+ return signInWithIdp ( auth , request ) ;
56
66
}
57
67
58
68
export async function _signIn ( params : IdpTaskParams ) : Promise < UserCredential > {
59
- const request = paramsToRequest ( params ) ;
60
69
const auth = params . auth ;
61
70
62
- const response = await signInWithIdp ( auth , request ) ;
71
+ const response = await callIdpSignIn ( params ) ;
63
72
64
73
const credential = _authCredentialFromTokenResponse ( response ) ;
65
74
const userCredential = await UserCredentialImpl . _fromIdTokenResponse (
@@ -75,16 +84,14 @@ export async function _signIn(params: IdpTaskParams): Promise<UserCredential> {
75
84
export async function _reauth ( params : IdpTaskParams ) : Promise < UserCredential > {
76
85
const { auth, user } = params ;
77
86
assert ( user , auth . name ) ;
78
- const requestPromise = signInWithIdp ( auth , paramsToRequest ( params ) ) ;
87
+ const requestPromise = callIdpSignIn ( params ) ;
79
88
return _reauthenticate ( user , requestPromise ) ;
80
89
}
81
90
82
91
export async function _link ( params : IdpTaskParams ) : Promise < UserCredential > {
83
92
const { auth, user } = params ;
84
93
assert ( user , auth . name ) ;
85
-
86
- const request = paramsToRequest ( params ) ;
87
- request . idToken = await user . getIdToken ( ) ;
94
+ const idToken = await user . getIdToken ( ) ;
88
95
89
- return _linkUser ( user , signInWithIdp ( auth , request ) ) ;
96
+ return _linkUser ( user , callIdpSignIn ( params , idToken ) ) ;
90
97
}
0 commit comments