@@ -397,13 +397,7 @@ api.ajax.jsonrpc = {};
397
397
* @param {* } pHideSuccessErrorModal
398
398
*/
399
399
400
- api . ajax . jsonrpc . request = function ( pAPI_URL , pAPI_Method , pAPI_Params , callbackFunctionName_onSuccess , callbackParams_onSuccess , callbackFunctionName_onError , callbackParams_onError , pAJAX_Params , pItemSpinner = null , pHideSuccessErrorModal = false ) {
401
- //call the async function to handle catch block of acquiretokensilently
402
- api . ajax . jsonrpc . processRequestAsync ( pAPI_URL , pAPI_Method , pAPI_Params , callbackFunctionName_onSuccess , callbackParams_onSuccess , callbackFunctionName_onError , callbackParams_onError , pAJAX_Params , pItemSpinner , pHideSuccessErrorModal )
403
- }
404
-
405
-
406
- api . ajax . jsonrpc . processRequestAsync = async function ( pAPI_URL , pAPI_Method , pAPI_Params , callbackFunctionName_onSuccess , callbackParams_onSuccess , callbackFunctionName_onError , callbackParams_onError , pAJAX_Params , pItemSpinner = null , pHideSuccessErrorModal = false ) {
400
+ api . ajax . jsonrpc . request = async function ( pAPI_URL , pAPI_Method , pAPI_Params , callbackFunctionName_onSuccess , callbackParams_onSuccess , callbackFunctionName_onError , callbackParams_onError , pAJAX_Params , pItemSpinner = null , pHideSuccessErrorModal = false ) {
407
401
// Default API parameters
408
402
pAPI_Params = pAPI_Params || { } ;
409
403
@@ -525,7 +519,7 @@ api.ajax.jsonrpc.processRequestAsync = async function (pAPI_URL, pAPI_Method, pA
525
519
526
520
try {
527
521
//force to wait for return
528
- const token = await api . sso . acquireAccessTokenSilently ( pAPI_Method ) ;
522
+ const token = await api . sso . acquireAccessTokenSilently ( ) ;
529
523
530
524
if ( token ) {
531
525
headers [ "MSAL" ] = `Bearer ${ token } ` ;
@@ -1091,8 +1085,6 @@ api.sso.msalConfigObj = {};
1091
1085
api . sso . msalInstance = null ;
1092
1086
api . sso . tokenPromise = null ;
1093
1087
1094
- //temporary, to be removed
1095
- api . sso . response = null ;
1096
1088
1097
1089
api . sso . authenticateUserSilently = function ( callbackFunctionName_onSuccess , callbackFunctionName_onError , hideLoginPopup ) {
1098
1090
api . spinner . start ( ) ;
@@ -1102,31 +1094,19 @@ api.sso.authenticateUserSilently = function (callbackFunctionName_onSuccess, cal
1102
1094
let loginRequest = {
1103
1095
scopes : [ "api://" + api . sso . msalConfigObj . auth . clientId + "/access_application" ]
1104
1096
} ;
1105
-
1106
1097
api . sso . msalInstance . ssoSilent ( loginRequest ) . then ( ( response ) => {
1107
1098
api . spinner . stop ( ) ;
1108
- //User logged in successfully
1109
-
1110
- console . log ( response . accessToken )
1111
- /* console.log("expiresOn : " + response.expiresOn);
1112
- console.log("extExpiresOn : " + response.extExpiresOn);
1113
- console.log("FIRST");
1114
- */
1115
-
1116
- api . sso . response = response ;
1117
-
1118
1099
1119
1100
api . ajax . callback ( callbackFunctionName_onSuccess , response ) ;
1120
1101
} ) . catch ( error => {
1121
1102
api . spinner . stop ( ) ;
1122
- console . log ( "Silent Error: " + error ) ;
1123
1103
1124
1104
if ( hideLoginPopup ) {
1125
1105
//Error during login
1126
1106
if ( callbackFunctionName_onError != null ) {
1127
1107
api . ajax . callback ( callbackFunctionName_onError , error ) ;
1128
1108
}
1129
- } else if ( error instanceof msal . InteractionRequiredAuthError ) {
1109
+ } else if ( ( error instanceof msal . InteractionRequiredAuthError || error . errorCode === 'monitor_window_timeout' ) && ! hideLoginPopup ) {
1130
1110
//if the error indicates interaction is required, fallback to login
1131
1111
console . log ( "SSO Silent requires interation. prompting login...." )
1132
1112
api . sso . authenticateUserPopup ( callbackFunctionName_onSuccess , callbackFunctionName_onError ) ;
@@ -1146,7 +1126,6 @@ api.sso.authenticateUserSilently = function (callbackFunctionName_onSuccess, cal
1146
1126
* @param {* } callbackFunctionName_onError
1147
1127
*/
1148
1128
api . sso . authenticateUserPopup = function ( callbackFunctionName_onSuccess , callbackFunctionName_onError ) {
1149
- console . log ( "authenticateUserPopup" ) ;
1150
1129
let loginRequest = {
1151
1130
scopes : [ "api://" + api . sso . msalConfigObj . auth . clientId + "/access_application" ]
1152
1131
} ;
@@ -1155,15 +1134,14 @@ api.sso.authenticateUserPopup = function (callbackFunctionName_onSuccess, callba
1155
1134
. then ( ( response ) => {
1156
1135
//User logged in successfully
1157
1136
api . spinner . stop ( ) ;
1158
- console . log ( response . accessToken )
1159
- //// api.idle.startIdleTimer();
1160
1137
api . ajax . callback ( callbackFunctionName_onSuccess , response ) ;
1161
1138
} )
1162
1139
. catch ( error => {
1163
1140
api . spinner . stop ( ) ;
1164
- console . log ( "login failed:" , error ) ;
1165
1141
//Error during login
1166
- api . ajax . callback ( callbackFunctionName_onError , error ) ;
1142
+ if ( callbackFunctionName_onError != null ) {
1143
+ api . ajax . callback ( callbackFunctionName_onError , error ) ;
1144
+ }
1167
1145
} ) ;
1168
1146
}
1169
1147
@@ -1173,19 +1151,16 @@ api.sso.authenticateUserPopup = function (callbackFunctionName_onSuccess, callba
1173
1151
* @param {* } callbackFunctionName_onError
1174
1152
*/
1175
1153
api . sso . authenticateUserPopupAsync = async function ( ) {
1176
- console . log ( "authenticateUserPopup" ) ;
1177
1154
let loginRequest = {
1178
1155
scopes : [ "api://" + api . sso . msalConfigObj . auth . clientId + "/access_application" ]
1179
1156
} ;
1180
1157
1181
1158
try {
1182
1159
return await api . sso . msalInstance . loginPopup ( loginRequest ) ;
1183
1160
} catch ( error ) {
1184
- console . log ( "login failed:" , error ) ;
1185
1161
// Error during login
1186
1162
return null ;
1187
1163
}
1188
-
1189
1164
}
1190
1165
1191
1166
/**
@@ -1220,10 +1195,7 @@ api.sso.logout = function (callbackFunctionName_onSuccess, callbackFunctionName_
1220
1195
* check if the user has an entra account and retrieve token if present
1221
1196
* @param {* } pAPI_Method
1222
1197
*/
1223
- api . sso . acquireAccessTokenSilently = function ( pAPI_Method ) {
1224
-
1225
- console . log ( "get access token silently" ) ;
1226
-
1198
+ api . sso . acquireAccessTokenSilently = async function ( ) {
1227
1199
const validAccount = api . sso . getMsalAccount ( ) ;
1228
1200
1229
1201
if ( validAccount ) {
@@ -1234,9 +1206,7 @@ api.sso.acquireAccessTokenSilently = function (pAPI_Method) {
1234
1206
return null ; // Promise.reject("No account signed in");
1235
1207
}
1236
1208
1237
- console . log ( api . sso . tokenPromise ) ;
1238
-
1239
- // If token request is already in progress, reuse it
1209
+ // If token request is already in progress, reuse it -- sharing the same promise
1240
1210
if ( api . sso . tokenPromise ) return api . sso . tokenPromise ;
1241
1211
1242
1212
let scope = [ "api://" + api . sso . msalConfigObj . auth . clientId + "/access_application" ] ;
@@ -1257,10 +1227,7 @@ api.sso.acquireAccessTokenSilently = function (pAPI_Method) {
1257
1227
forceRefresh : true
1258
1228
} ) . then ( ( response ) => {
1259
1229
// User is authenticated, return access token
1260
- api . sso . tokenPromise = null ; // clear cache
1261
- console . log ( response . expiresOn ) ;
1262
- console . log ( "finished2 =>" + pAPI_Method ) ;
1263
-
1230
+ api . sso . tokenPromise = null ; // clear cache i.e. mark the promise as complete
1264
1231
return response . accessToken ;
1265
1232
} ) . catch ( async ( error ) => {
1266
1233
if ( error instanceof msal . InteractionRequiredAuthError ) {
@@ -1277,7 +1244,6 @@ api.sso.acquireAccessTokenSilently = function (pAPI_Method) {
1277
1244
}
1278
1245
} ) ;
1279
1246
1280
- console . log ( "finished1 =>" + pAPI_Method ) ;
1281
1247
return api . sso . tokenPromise ;
1282
1248
}
1283
1249
@@ -1302,4 +1268,24 @@ api.sso.getMsalAccount = function () {
1302
1268
} ) ;
1303
1269
1304
1270
return validAccount ;
1305
- }
1271
+ }
1272
+
1273
+ /**
1274
+ * create the msal instance for the applciation
1275
+ * @param {* } callbackFunctionName_onSuccess
1276
+ * @param {* } callbackFunctionName_onError
1277
+ */
1278
+ api . sso . createMsalInstance = function ( callbackFunctionName_onSuccess , callbackFunctionName_onError ) {
1279
+ debugger ;
1280
+ msal . PublicClientApplication . createPublicClientApplication ( api . sso . msalConfigObj )
1281
+ . then ( ( obj ) => {
1282
+ api . sso . msalInstance = obj ;
1283
+ api . ajax . callback ( callbackFunctionName_onSuccess ) ;
1284
+ } )
1285
+ . catch ( ( error ) => {
1286
+ if ( callbackFunctionName_onError ) {
1287
+ api . ajax . callback ( callbackFunctionName_onError , error ) ;
1288
+ }
1289
+ console . log ( "Error creating MSAL PublicClientApplication:" , error ) ;
1290
+ } ) ;
1291
+ }
0 commit comments