1
- function ( user , context , callback ) {
1
+ function DICE ( user , context , callback ) {
2
2
if ( context . clientID === configuration . CLIENT_ACCOUNTS_LOGIN ) {
3
3
console . log ( "rule:DICE DID:enter" ) ;
4
4
@@ -22,27 +22,13 @@ function (user, context, callback) {
22
22
console . log ( "rule:DICE DID:User was redirected to the /continue endpoint" ) ;
23
23
if ( context . request . query . diceVerificationStatus === 'false' ) {
24
24
return callback ( 'Login Error: Credentials verification is failed.<br>Please contact with support <a href="mailto:[email protected] ">[email protected] </a>.<br> Back to application ' , user , context ) ;
25
- } else if ( context . request . query . otp ) {
26
- request . post ( {
27
- url : 'https://api.' + configuration . DOMAIN + '/v3/users/checkOtp' ,
28
- json : {
29
- "param" : {
30
- "userId" : user . userId ,
31
- "otp" : context . request . query . otp
32
- }
33
- }
34
- } , function ( error , response , body ) {
35
- if ( error ) return callback ( error , user , context ) ;
36
- if ( response . statusCode !== 200 ) {
37
- return callback ( 'Login Error: Whoops! Something went wrong.' , user , context ) ;
38
- }
39
- if ( body . result . content . verified === true ) {
40
- return callback ( null , user , context ) ;
41
- } else {
42
- return callback ( 'Login Error: wrong OTP' , user , context ) ;
43
- }
44
- } ) ;
45
- } else {
25
+ } else if ( context . request . query . otherMethods || _ . isEmpty ( user . multifactor ) ) {
26
+ context . multifactor = {
27
+ provider : 'any' ,
28
+ allowRememberBrowser : false
29
+ } ;
30
+ return callback ( null , user , context ) ;
31
+ } else if ( context . request . query . code ) {
46
32
const jwt_decode = require ( 'jwt-decode' ) ;
47
33
request . post ( {
48
34
url : 'https://tc-vcauth-uat.diceid.com/vc/connect/token' ,
@@ -65,44 +51,24 @@ function (user, context, callback) {
65
51
console . log ( "rule:DICE DID:credentials approved" ) ;
66
52
return callback ( null , user , context ) ;
67
53
} ) ;
54
+ } else {
55
+ return callback ( 'Login Error: Whoops! Something went wrong.' , user , context ) ;
68
56
}
69
57
} else {
70
58
const maxRetry = 2 ;
71
- const useOtp = function ( ) {
72
- request . post ( {
73
- url : 'https://api.' + configuration . DOMAIN + '/v3/users/sendOtp' ,
74
- json : {
75
- "param" : {
76
- "userId" : user . userId
77
- }
78
- }
79
- } , function ( error , response , body ) {
80
- if ( error ) return callback ( error , user , context ) ;
81
- if ( response . statusCode !== 200 ) {
82
- return callback ( 'Login Error: Whoops! Something went wrong.' , user , context ) ;
83
- }
84
- console . log ( "rule:DICE DID: redirecting to OTP page" ) ;
85
- const hostName = _ . get ( context , "request.hostname" , null ) ;
86
- const otpCompletetUrl = "https://" + hostName + "/continue" ;
87
- const retUrl = _ . get ( context , "request.query.returnUrl" , null ) ;
88
- const otpRedirectUrl = configuration . CUSTOM_PAGES_BASE_URL +
89
- "/otp.html?formAction=" + otpCompletetUrl +
90
- "&returnUrl=" + retUrl ;
91
- context . redirect = {
92
- url : otpRedirectUrl
93
- } ;
94
- return callback ( null , user , context ) ;
95
- } ) ;
96
- } ;
97
59
const checkDiceHealth = function ( attempt ) {
98
60
console . log ( "rule:DICE DID:checking dice health, attempt:" + attempt ) ;
99
61
request . get ( {
100
62
url : 'https://tc-vcauth-uat.diceid.com/.well-known/openid-configuration'
101
63
} , function ( error , response , body ) {
102
64
if ( error || response . statusCode !== 200 ) {
103
65
if ( attempt >= maxRetry ) {
104
- console . log ( "rule:DICE DID:dice services down, using otp flow..." ) ;
105
- useOtp ( ) ;
66
+ console . log ( "rule:DICE DID:dice services down, using other factors..." ) ;
67
+ context . multifactor = {
68
+ provider : 'any' ,
69
+ allowRememberBrowser : false
70
+ } ;
71
+ return callback ( null , user , context ) ;
106
72
} else {
107
73
checkDiceHealth ( attempt + 1 ) ;
108
74
}
@@ -116,8 +82,12 @@ function (user, context, callback) {
116
82
} ) ;
117
83
} ;
118
84
if ( ! global . ENABLE_2FA ) {
119
- console . log ( "rule:DICE DID:dice switch disabled, using otp flow..." ) ;
120
- useOtp ( ) ;
85
+ console . log ( "rule:DICE DID:dice switch disabled, using other factors..." ) ;
86
+ context . multifactor = {
87
+ provider : 'any' ,
88
+ allowRememberBrowser : false
89
+ } ;
90
+ return callback ( null , user , context ) ;
121
91
} else {
122
92
checkDiceHealth ( 1 ) ;
123
93
}
0 commit comments