2
2
var https = require ( 'https' ) ;
3
3
var Parse = require ( 'parse/node' ) . Parse ;
4
4
5
- // Returns a promise that fulfills iff this user id is valid.
6
- function validateAuthData ( authData ) {
7
- return request ( "tokeninfo?id_token=" + authData . access_token )
5
+ function validateIdToken ( id , token ) {
6
+ return request ( "tokeninfo?id_token=" + token )
7
+ . then ( ( response ) => {
8
+ if ( response && response . sub == id ) {
9
+ return ;
10
+ }
11
+ throw new Parse . Error (
12
+ Parse . Error . OBJECT_NOT_FOUND ,
13
+ 'Google auth is invalid for this user.' ) ;
14
+ } ) ;
15
+ }
16
+
17
+ function validateAuthToken ( id , token ) {
18
+ return request ( "tokeninfo?access_token=" + token )
8
19
. then ( ( response ) => {
9
- if ( response && response . sub == authData . id ) {
20
+ if ( response && response . user_id == id ) {
10
21
return ;
11
22
}
12
23
throw new Parse . Error (
@@ -15,7 +26,22 @@ function validateAuthData(authData) {
15
26
} ) ;
16
27
}
17
28
18
- // Returns a promise that fulfills iff this app id is valid.
29
+ // Returns a promise that fulfills if this user id is valid.
30
+ function validateAuthData ( authData ) {
31
+ if ( authData . id_token ) {
32
+ return validateIdToken ( authData . id , authData . id_token ) ;
33
+ } else {
34
+ return validateAuthToken ( authData . id , authData . access_token ) . then ( ( ) => {
35
+ // Validation with auth token worked
36
+ return ;
37
+ } , ( ) => {
38
+ // Try with the id_token param
39
+ return validateIdToken ( authData . id , authData . access_token ) ;
40
+ } ) ;
41
+ }
42
+ }
43
+
44
+ // Returns a promise that fulfills if this app id is valid.
19
45
function validateAppId ( ) {
20
46
return Promise . resolve ( ) ;
21
47
}
0 commit comments