@aws-amplify/auth 4.3.19 → 4.3.20-custom-pk.86
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +149 -0
- package/dist/aws-amplify-auth.js +708 -332
- package/dist/aws-amplify-auth.js.map +1 -1
- package/dist/aws-amplify-auth.min.js +22 -78
- package/dist/aws-amplify-auth.min.js.map +1 -1
- package/lib/Auth.d.ts +14 -0
- package/lib/Auth.js +423 -142
- package/lib/Auth.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/types/Auth.d.ts +7 -0
- package/lib/types/Auth.js +8 -0
- package/lib/types/Auth.js.map +1 -1
- package/lib/urlListener.js +2 -2
- package/lib/urlListener.js.map +1 -1
- package/lib-esm/Auth.d.ts +14 -0
- package/lib-esm/Auth.js +424 -143
- package/lib-esm/Auth.js.map +1 -1
- package/lib-esm/index.d.ts +2 -2
- package/lib-esm/index.js +2 -2
- package/lib-esm/index.js.map +1 -1
- package/lib-esm/types/Auth.d.ts +7 -0
- package/lib-esm/types/Auth.js +8 -0
- package/lib-esm/types/Auth.js.map +1 -1
- package/lib-esm/urlListener.js +3 -3
- package/lib-esm/urlListener.js.map +1 -1
- package/package.json +5 -5
- package/src/Auth.ts +283 -55
- package/src/index.ts +40 -35
- package/src/types/Auth.ts +8 -0
- package/src/urlListener.ts +3 -3
package/lib/Auth.js
CHANGED
|
@@ -90,8 +90,7 @@ var logger = new core_1.ConsoleLogger('AuthClass');
|
|
|
90
90
|
var USER_ADMIN_SCOPE = 'aws.cognito.signin.user.admin';
|
|
91
91
|
// 10 sec, following this guide https://www.nngroup.com/articles/response-times-3-important-limits/
|
|
92
92
|
var OAUTH_FLOW_MS_TIMEOUT = 10 * 1000;
|
|
93
|
-
var AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' &&
|
|
94
|
-
typeof Symbol.for === 'function'
|
|
93
|
+
var AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function'
|
|
95
94
|
? Symbol.for('amplify_default')
|
|
96
95
|
: '@@amplify_default');
|
|
97
96
|
var dispatchAuthEvent = function (event, data, message) {
|
|
@@ -599,22 +598,42 @@ var AuthClass = /** @class */ (function () {
|
|
|
599
598
|
return new Promise(function (res, rej) {
|
|
600
599
|
var clientMetadata = _this._config.clientMetadata; // TODO: verify behavior if this is override during signIn
|
|
601
600
|
var bypassCache = params ? params.bypassCache : false;
|
|
602
|
-
user.getUserData(function (err, data) {
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
601
|
+
user.getUserData(function (err, data) { return __awaiter(_this, void 0, void 0, function () {
|
|
602
|
+
var cleanUpError_1, mfaType;
|
|
603
|
+
return __generator(this, function (_a) {
|
|
604
|
+
switch (_a.label) {
|
|
605
|
+
case 0:
|
|
606
|
+
if (!err) return [3 /*break*/, 5];
|
|
607
|
+
logger.debug('getting preferred mfa failed', err);
|
|
608
|
+
if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];
|
|
609
|
+
_a.label = 1;
|
|
610
|
+
case 1:
|
|
611
|
+
_a.trys.push([1, 3, , 4]);
|
|
612
|
+
return [4 /*yield*/, this.cleanUpInvalidSession(user)];
|
|
613
|
+
case 2:
|
|
614
|
+
_a.sent();
|
|
615
|
+
return [3 /*break*/, 4];
|
|
616
|
+
case 3:
|
|
617
|
+
cleanUpError_1 = _a.sent();
|
|
618
|
+
rej(new Error("Session is invalid due to: " + err.message + " and failed to clean up invalid session: " + cleanUpError_1.message));
|
|
619
|
+
return [2 /*return*/];
|
|
620
|
+
case 4:
|
|
621
|
+
rej(err);
|
|
622
|
+
return [2 /*return*/];
|
|
623
|
+
case 5:
|
|
624
|
+
mfaType = that._getMfaTypeFromUserData(data);
|
|
625
|
+
if (!mfaType) {
|
|
626
|
+
rej('invalid MFA Type');
|
|
627
|
+
return [2 /*return*/];
|
|
628
|
+
}
|
|
629
|
+
else {
|
|
630
|
+
res(mfaType);
|
|
631
|
+
return [2 /*return*/];
|
|
632
|
+
}
|
|
633
|
+
return [2 /*return*/];
|
|
634
|
+
}
|
|
635
|
+
});
|
|
636
|
+
}); }, { bypassCache: bypassCache, clientMetadata: clientMetadata });
|
|
618
637
|
});
|
|
619
638
|
};
|
|
620
639
|
AuthClass.prototype._getMfaTypeFromUserData = function (data) {
|
|
@@ -651,18 +670,37 @@ var AuthClass = /** @class */ (function () {
|
|
|
651
670
|
return ret;
|
|
652
671
|
};
|
|
653
672
|
AuthClass.prototype._getUserData = function (user, params) {
|
|
673
|
+
var _this = this;
|
|
654
674
|
return new Promise(function (res, rej) {
|
|
655
|
-
user.getUserData(function (err, data) {
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
675
|
+
user.getUserData(function (err, data) { return __awaiter(_this, void 0, void 0, function () {
|
|
676
|
+
var cleanUpError_2;
|
|
677
|
+
return __generator(this, function (_a) {
|
|
678
|
+
switch (_a.label) {
|
|
679
|
+
case 0:
|
|
680
|
+
if (!err) return [3 /*break*/, 5];
|
|
681
|
+
logger.debug('getting user data failed', err);
|
|
682
|
+
if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];
|
|
683
|
+
_a.label = 1;
|
|
684
|
+
case 1:
|
|
685
|
+
_a.trys.push([1, 3, , 4]);
|
|
686
|
+
return [4 /*yield*/, this.cleanUpInvalidSession(user)];
|
|
687
|
+
case 2:
|
|
688
|
+
_a.sent();
|
|
689
|
+
return [3 /*break*/, 4];
|
|
690
|
+
case 3:
|
|
691
|
+
cleanUpError_2 = _a.sent();
|
|
692
|
+
rej(new Error("Session is invalid due to: " + err.message + " and failed to clean up invalid session: " + cleanUpError_2.message));
|
|
693
|
+
return [2 /*return*/];
|
|
694
|
+
case 4:
|
|
695
|
+
rej(err);
|
|
696
|
+
return [2 /*return*/];
|
|
697
|
+
case 5:
|
|
698
|
+
res(data);
|
|
699
|
+
_a.label = 6;
|
|
700
|
+
case 6: return [2 /*return*/];
|
|
701
|
+
}
|
|
702
|
+
});
|
|
703
|
+
}); }, params);
|
|
666
704
|
});
|
|
667
705
|
};
|
|
668
706
|
/**
|
|
@@ -674,6 +712,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
674
712
|
AuthClass.prototype.setPreferredMFA = function (user, mfaMethod) {
|
|
675
713
|
return __awaiter(this, void 0, void 0, function () {
|
|
676
714
|
var clientMetadata, userData, smsMfaSettings, totpMfaSettings, _a, mfaList, currentMFAType, that;
|
|
715
|
+
var _this = this;
|
|
677
716
|
return __generator(this, function (_b) {
|
|
678
717
|
switch (_b.label) {
|
|
679
718
|
case 0:
|
|
@@ -764,15 +803,30 @@ var AuthClass = /** @class */ (function () {
|
|
|
764
803
|
logger.debug('Set user mfa success', result);
|
|
765
804
|
logger.debug('Caching the latest user data into local');
|
|
766
805
|
// cache the latest result into user data
|
|
767
|
-
user.getUserData(function (err, data) {
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
806
|
+
user.getUserData(function (err, data) { return __awaiter(_this, void 0, void 0, function () {
|
|
807
|
+
var cleanUpError_3;
|
|
808
|
+
return __generator(this, function (_a) {
|
|
809
|
+
switch (_a.label) {
|
|
810
|
+
case 0:
|
|
811
|
+
if (!err) return [3 /*break*/, 5];
|
|
812
|
+
logger.debug('getting user data failed', err);
|
|
813
|
+
if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];
|
|
814
|
+
_a.label = 1;
|
|
815
|
+
case 1:
|
|
816
|
+
_a.trys.push([1, 3, , 4]);
|
|
817
|
+
return [4 /*yield*/, this.cleanUpInvalidSession(user)];
|
|
818
|
+
case 2:
|
|
819
|
+
_a.sent();
|
|
820
|
+
return [3 /*break*/, 4];
|
|
821
|
+
case 3:
|
|
822
|
+
cleanUpError_3 = _a.sent();
|
|
823
|
+
rej(new Error("Session is invalid due to: " + err.message + " and failed to clean up invalid session: " + cleanUpError_3.message));
|
|
824
|
+
return [2 /*return*/];
|
|
825
|
+
case 4: return [2 /*return*/, rej(err)];
|
|
826
|
+
case 5: return [2 /*return*/, res(result)];
|
|
827
|
+
}
|
|
828
|
+
});
|
|
829
|
+
}); }, {
|
|
776
830
|
bypassCache: true,
|
|
777
831
|
clientMetadata: clientMetadata,
|
|
778
832
|
});
|
|
@@ -1023,6 +1077,105 @@ var AuthClass = /** @class */ (function () {
|
|
|
1023
1077
|
});
|
|
1024
1078
|
});
|
|
1025
1079
|
};
|
|
1080
|
+
/**
|
|
1081
|
+
* Delete the current authenticated user
|
|
1082
|
+
* @return {Promise}
|
|
1083
|
+
**/
|
|
1084
|
+
// TODO: Check return type void
|
|
1085
|
+
AuthClass.prototype.deleteUser = function () {
|
|
1086
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
1087
|
+
var e_5, isSignedInHostedUI;
|
|
1088
|
+
var _this = this;
|
|
1089
|
+
return __generator(this, function (_a) {
|
|
1090
|
+
switch (_a.label) {
|
|
1091
|
+
case 0:
|
|
1092
|
+
_a.trys.push([0, 2, , 3]);
|
|
1093
|
+
return [4 /*yield*/, this._storageSync];
|
|
1094
|
+
case 1:
|
|
1095
|
+
_a.sent();
|
|
1096
|
+
return [3 /*break*/, 3];
|
|
1097
|
+
case 2:
|
|
1098
|
+
e_5 = _a.sent();
|
|
1099
|
+
logger.debug('Failed to sync cache info into memory', e_5);
|
|
1100
|
+
throw new Error(e_5);
|
|
1101
|
+
case 3:
|
|
1102
|
+
isSignedInHostedUI = this._oAuthHandler &&
|
|
1103
|
+
this._storage.getItem('amplify-signin-with-hostedUI') === 'true';
|
|
1104
|
+
return [2 /*return*/, new Promise(function (res, rej) { return __awaiter(_this, void 0, void 0, function () {
|
|
1105
|
+
var user_1;
|
|
1106
|
+
var _this = this;
|
|
1107
|
+
return __generator(this, function (_a) {
|
|
1108
|
+
if (this.userPool) {
|
|
1109
|
+
user_1 = this.userPool.getCurrentUser();
|
|
1110
|
+
if (!user_1) {
|
|
1111
|
+
logger.debug('Failed to get user from user pool');
|
|
1112
|
+
return [2 /*return*/, rej(new Error('No current user.'))];
|
|
1113
|
+
}
|
|
1114
|
+
else {
|
|
1115
|
+
user_1.getSession(function (err, session) { return __awaiter(_this, void 0, void 0, function () {
|
|
1116
|
+
var cleanUpError_4;
|
|
1117
|
+
var _this = this;
|
|
1118
|
+
return __generator(this, function (_a) {
|
|
1119
|
+
switch (_a.label) {
|
|
1120
|
+
case 0:
|
|
1121
|
+
if (!err) return [3 /*break*/, 5];
|
|
1122
|
+
logger.debug('Failed to get the user session', err);
|
|
1123
|
+
if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];
|
|
1124
|
+
_a.label = 1;
|
|
1125
|
+
case 1:
|
|
1126
|
+
_a.trys.push([1, 3, , 4]);
|
|
1127
|
+
return [4 /*yield*/, this.cleanUpInvalidSession(user_1)];
|
|
1128
|
+
case 2:
|
|
1129
|
+
_a.sent();
|
|
1130
|
+
return [3 /*break*/, 4];
|
|
1131
|
+
case 3:
|
|
1132
|
+
cleanUpError_4 = _a.sent();
|
|
1133
|
+
rej(new Error("Session is invalid due to: " + err.message + " and failed to clean up invalid session: " + cleanUpError_4.message));
|
|
1134
|
+
return [2 /*return*/];
|
|
1135
|
+
case 4: return [2 /*return*/, rej(err)];
|
|
1136
|
+
case 5:
|
|
1137
|
+
user_1.deleteUser(function (err, result) {
|
|
1138
|
+
if (err) {
|
|
1139
|
+
rej(err);
|
|
1140
|
+
}
|
|
1141
|
+
else {
|
|
1142
|
+
dispatchAuthEvent('userDeleted', result, 'The authenticated user has been deleted.');
|
|
1143
|
+
user_1.signOut();
|
|
1144
|
+
_this.user = null;
|
|
1145
|
+
try {
|
|
1146
|
+
_this.cleanCachedItems(); // clean aws credentials
|
|
1147
|
+
}
|
|
1148
|
+
catch (e) {
|
|
1149
|
+
// TODO: change to rejects in refactor
|
|
1150
|
+
logger.debug('failed to clear cached items');
|
|
1151
|
+
}
|
|
1152
|
+
if (isSignedInHostedUI) {
|
|
1153
|
+
_this.oAuthSignOutRedirect(res, rej);
|
|
1154
|
+
}
|
|
1155
|
+
else {
|
|
1156
|
+
dispatchAuthEvent('signOut', _this.user, "A user has been signed out");
|
|
1157
|
+
res(result);
|
|
1158
|
+
}
|
|
1159
|
+
}
|
|
1160
|
+
});
|
|
1161
|
+
_a.label = 6;
|
|
1162
|
+
case 6: return [2 /*return*/];
|
|
1163
|
+
}
|
|
1164
|
+
});
|
|
1165
|
+
}); });
|
|
1166
|
+
}
|
|
1167
|
+
}
|
|
1168
|
+
else {
|
|
1169
|
+
logger.debug('no Congito User pool');
|
|
1170
|
+
rej(new Error('Cognito User pool does not exist'));
|
|
1171
|
+
}
|
|
1172
|
+
return [2 /*return*/];
|
|
1173
|
+
});
|
|
1174
|
+
}); })];
|
|
1175
|
+
}
|
|
1176
|
+
});
|
|
1177
|
+
});
|
|
1178
|
+
};
|
|
1026
1179
|
/**
|
|
1027
1180
|
* Update an authenticated users' attributes
|
|
1028
1181
|
* @param {CognitoUser} - The currently logged in user object
|
|
@@ -1102,6 +1255,74 @@ var AuthClass = /** @class */ (function () {
|
|
|
1102
1255
|
};
|
|
1103
1256
|
});
|
|
1104
1257
|
};
|
|
1258
|
+
AuthClass.prototype.isErrorWithMessage = function (err) {
|
|
1259
|
+
return (typeof err === 'object' &&
|
|
1260
|
+
Object.prototype.hasOwnProperty.call(err, 'message'));
|
|
1261
|
+
};
|
|
1262
|
+
// Session revoked by another app
|
|
1263
|
+
AuthClass.prototype.isTokenRevokedError = function (err) {
|
|
1264
|
+
return (this.isErrorWithMessage(err) &&
|
|
1265
|
+
err.message === 'Access Token has been revoked');
|
|
1266
|
+
};
|
|
1267
|
+
AuthClass.prototype.isRefreshTokenRevokedError = function (err) {
|
|
1268
|
+
return (this.isErrorWithMessage(err) &&
|
|
1269
|
+
err.message === 'Refresh Token has been revoked');
|
|
1270
|
+
};
|
|
1271
|
+
AuthClass.prototype.isUserDisabledError = function (err) {
|
|
1272
|
+
return this.isErrorWithMessage(err) && err.message === 'User is disabled.';
|
|
1273
|
+
};
|
|
1274
|
+
AuthClass.prototype.isUserDoesNotExistError = function (err) {
|
|
1275
|
+
return (this.isErrorWithMessage(err) && err.message === 'User does not exist.');
|
|
1276
|
+
};
|
|
1277
|
+
AuthClass.prototype.isRefreshTokenExpiredError = function (err) {
|
|
1278
|
+
return (this.isErrorWithMessage(err) &&
|
|
1279
|
+
err.message === 'Refresh Token has expired');
|
|
1280
|
+
};
|
|
1281
|
+
AuthClass.prototype.isSignedInHostedUI = function () {
|
|
1282
|
+
return (this._oAuthHandler &&
|
|
1283
|
+
this._storage.getItem('amplify-signin-with-hostedUI') === 'true');
|
|
1284
|
+
};
|
|
1285
|
+
AuthClass.prototype.isSessionInvalid = function (err) {
|
|
1286
|
+
return (this.isUserDisabledError(err) ||
|
|
1287
|
+
this.isUserDoesNotExistError(err) ||
|
|
1288
|
+
this.isTokenRevokedError(err) ||
|
|
1289
|
+
this.isRefreshTokenRevokedError(err) ||
|
|
1290
|
+
this.isRefreshTokenExpiredError(err));
|
|
1291
|
+
};
|
|
1292
|
+
AuthClass.prototype.cleanUpInvalidSession = function (user) {
|
|
1293
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
1294
|
+
var e_6;
|
|
1295
|
+
var _this = this;
|
|
1296
|
+
return __generator(this, function (_a) {
|
|
1297
|
+
switch (_a.label) {
|
|
1298
|
+
case 0:
|
|
1299
|
+
user.signOut();
|
|
1300
|
+
this.user = null;
|
|
1301
|
+
_a.label = 1;
|
|
1302
|
+
case 1:
|
|
1303
|
+
_a.trys.push([1, 3, , 4]);
|
|
1304
|
+
return [4 /*yield*/, this.cleanCachedItems()];
|
|
1305
|
+
case 2:
|
|
1306
|
+
_a.sent(); // clean aws credentials
|
|
1307
|
+
return [3 /*break*/, 4];
|
|
1308
|
+
case 3:
|
|
1309
|
+
e_6 = _a.sent();
|
|
1310
|
+
logger.debug('failed to clear cached items');
|
|
1311
|
+
return [3 /*break*/, 4];
|
|
1312
|
+
case 4:
|
|
1313
|
+
if (this.isSignedInHostedUI()) {
|
|
1314
|
+
return [2 /*return*/, new Promise(function (res, rej) {
|
|
1315
|
+
_this.oAuthSignOutRedirect(res, rej);
|
|
1316
|
+
})];
|
|
1317
|
+
}
|
|
1318
|
+
else {
|
|
1319
|
+
dispatchAuthEvent('signOut', this.user, "A user has been signed out");
|
|
1320
|
+
}
|
|
1321
|
+
return [2 /*return*/];
|
|
1322
|
+
}
|
|
1323
|
+
});
|
|
1324
|
+
});
|
|
1325
|
+
};
|
|
1105
1326
|
/**
|
|
1106
1327
|
* Get current authenticated user
|
|
1107
1328
|
* @return - A promise resolves to current authenticated CognitoUser if success
|
|
@@ -1153,57 +1374,82 @@ var AuthClass = /** @class */ (function () {
|
|
|
1153
1374
|
clientMetadata = this._config.clientMetadata;
|
|
1154
1375
|
// refresh the session if the session expired.
|
|
1155
1376
|
user.getSession(function (err, session) { return __awaiter(_this, void 0, void 0, function () {
|
|
1156
|
-
var bypassCache, clientMetadata, _a, scope;
|
|
1377
|
+
var cleanUpError_5, bypassCache, clientMetadata, _a, scope;
|
|
1157
1378
|
var _this = this;
|
|
1158
1379
|
return __generator(this, function (_b) {
|
|
1159
1380
|
switch (_b.label) {
|
|
1160
1381
|
case 0:
|
|
1161
|
-
if (err)
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1382
|
+
if (!err) return [3 /*break*/, 5];
|
|
1383
|
+
logger.debug('Failed to get the user session', err);
|
|
1384
|
+
if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];
|
|
1385
|
+
_b.label = 1;
|
|
1386
|
+
case 1:
|
|
1387
|
+
_b.trys.push([1, 3, , 4]);
|
|
1388
|
+
return [4 /*yield*/, this.cleanUpInvalidSession(user)];
|
|
1389
|
+
case 2:
|
|
1390
|
+
_b.sent();
|
|
1391
|
+
return [3 /*break*/, 4];
|
|
1392
|
+
case 3:
|
|
1393
|
+
cleanUpError_5 = _b.sent();
|
|
1394
|
+
rej(new Error("Session is invalid due to: " + err.message + " and failed to clean up invalid session: " + cleanUpError_5.message));
|
|
1395
|
+
return [2 /*return*/];
|
|
1396
|
+
case 4:
|
|
1397
|
+
rej(err);
|
|
1398
|
+
return [2 /*return*/];
|
|
1399
|
+
case 5:
|
|
1166
1400
|
bypassCache = params ? params.bypassCache : false;
|
|
1167
|
-
if (!bypassCache) return [3 /*break*/,
|
|
1401
|
+
if (!bypassCache) return [3 /*break*/, 7];
|
|
1168
1402
|
return [4 /*yield*/, this.Credentials.clear()];
|
|
1169
|
-
case
|
|
1403
|
+
case 6:
|
|
1170
1404
|
_b.sent();
|
|
1171
|
-
_b.label =
|
|
1172
|
-
case
|
|
1405
|
+
_b.label = 7;
|
|
1406
|
+
case 7:
|
|
1173
1407
|
clientMetadata = this._config.clientMetadata;
|
|
1174
1408
|
_a = session.getAccessToken().decodePayload().scope, scope = _a === void 0 ? '' : _a;
|
|
1175
1409
|
if (scope.split(' ').includes(USER_ADMIN_SCOPE)) {
|
|
1176
|
-
user.getUserData(function (err, data) {
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1410
|
+
user.getUserData(function (err, data) { return __awaiter(_this, void 0, void 0, function () {
|
|
1411
|
+
var cleanUpError_6, preferredMFA, attributeList, i, attribute, userAttribute, attributes;
|
|
1412
|
+
return __generator(this, function (_a) {
|
|
1413
|
+
switch (_a.label) {
|
|
1414
|
+
case 0:
|
|
1415
|
+
if (!err) return [3 /*break*/, 7];
|
|
1416
|
+
logger.debug('getting user data failed', err);
|
|
1417
|
+
if (!this.isSessionInvalid(err)) return [3 /*break*/, 5];
|
|
1418
|
+
_a.label = 1;
|
|
1419
|
+
case 1:
|
|
1420
|
+
_a.trys.push([1, 3, , 4]);
|
|
1421
|
+
return [4 /*yield*/, this.cleanUpInvalidSession(user)];
|
|
1422
|
+
case 2:
|
|
1423
|
+
_a.sent();
|
|
1424
|
+
return [3 /*break*/, 4];
|
|
1425
|
+
case 3:
|
|
1426
|
+
cleanUpError_6 = _a.sent();
|
|
1427
|
+
rej(new Error("Session is invalid due to: " + err.message + " and failed to clean up invalid session: " + cleanUpError_6.message));
|
|
1428
|
+
return [2 /*return*/];
|
|
1429
|
+
case 4:
|
|
1430
|
+
rej(err);
|
|
1431
|
+
return [3 /*break*/, 6];
|
|
1432
|
+
case 5:
|
|
1433
|
+
res(user);
|
|
1434
|
+
_a.label = 6;
|
|
1435
|
+
case 6: return [2 /*return*/];
|
|
1436
|
+
case 7:
|
|
1437
|
+
preferredMFA = data.PreferredMfaSetting || 'NOMFA';
|
|
1438
|
+
attributeList = [];
|
|
1439
|
+
for (i = 0; i < data.UserAttributes.length; i++) {
|
|
1440
|
+
attribute = {
|
|
1441
|
+
Name: data.UserAttributes[i].Name,
|
|
1442
|
+
Value: data.UserAttributes[i].Value,
|
|
1443
|
+
};
|
|
1444
|
+
userAttribute = new amazon_cognito_identity_js_1.CognitoUserAttribute(attribute);
|
|
1445
|
+
attributeList.push(userAttribute);
|
|
1446
|
+
}
|
|
1447
|
+
attributes = this.attributesToObject(attributeList);
|
|
1448
|
+
Object.assign(user, { attributes: attributes, preferredMFA: preferredMFA });
|
|
1449
|
+
return [2 /*return*/, res(user)];
|
|
1185
1450
|
}
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
// in that case we just bypass the error
|
|
1189
|
-
res(user);
|
|
1190
|
-
}
|
|
1191
|
-
return;
|
|
1192
|
-
}
|
|
1193
|
-
var preferredMFA = data.PreferredMfaSetting || 'NOMFA';
|
|
1194
|
-
var attributeList = [];
|
|
1195
|
-
for (var i = 0; i < data.UserAttributes.length; i++) {
|
|
1196
|
-
var attribute = {
|
|
1197
|
-
Name: data.UserAttributes[i].Name,
|
|
1198
|
-
Value: data.UserAttributes[i].Value,
|
|
1199
|
-
};
|
|
1200
|
-
var userAttribute = new amazon_cognito_identity_js_1.CognitoUserAttribute(attribute);
|
|
1201
|
-
attributeList.push(userAttribute);
|
|
1202
|
-
}
|
|
1203
|
-
var attributes = _this.attributesToObject(attributeList);
|
|
1204
|
-
Object.assign(user, { attributes: attributes, preferredMFA: preferredMFA });
|
|
1205
|
-
return res(user);
|
|
1206
|
-
}, { bypassCache: bypassCache, clientMetadata: clientMetadata });
|
|
1451
|
+
});
|
|
1452
|
+
}); }, { bypassCache: bypassCache, clientMetadata: clientMetadata });
|
|
1207
1453
|
}
|
|
1208
1454
|
else {
|
|
1209
1455
|
logger.debug("Unable to get the user data because the " + USER_ADMIN_SCOPE + " " +
|
|
@@ -1234,7 +1480,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1234
1480
|
*/
|
|
1235
1481
|
AuthClass.prototype.currentAuthenticatedUser = function (params) {
|
|
1236
1482
|
return __awaiter(this, void 0, void 0, function () {
|
|
1237
|
-
var federatedUser,
|
|
1483
|
+
var federatedUser, e_7, federatedInfo, user, e_8;
|
|
1238
1484
|
return __generator(this, function (_a) {
|
|
1239
1485
|
switch (_a.label) {
|
|
1240
1486
|
case 0:
|
|
@@ -1248,9 +1494,9 @@ var AuthClass = /** @class */ (function () {
|
|
|
1248
1494
|
_a.sent();
|
|
1249
1495
|
return [3 /*break*/, 4];
|
|
1250
1496
|
case 3:
|
|
1251
|
-
|
|
1252
|
-
logger.debug('Failed to sync cache info into memory',
|
|
1253
|
-
throw
|
|
1497
|
+
e_7 = _a.sent();
|
|
1498
|
+
logger.debug('Failed to sync cache info into memory', e_7);
|
|
1499
|
+
throw e_7;
|
|
1254
1500
|
case 4:
|
|
1255
1501
|
try {
|
|
1256
1502
|
federatedInfo = JSON.parse(this._storage.getItem('aws-amplify-federatedInfo'));
|
|
@@ -1276,12 +1522,12 @@ var AuthClass = /** @class */ (function () {
|
|
|
1276
1522
|
user = _a.sent();
|
|
1277
1523
|
return [3 /*break*/, 9];
|
|
1278
1524
|
case 8:
|
|
1279
|
-
|
|
1280
|
-
if (
|
|
1525
|
+
e_8 = _a.sent();
|
|
1526
|
+
if (e_8 === 'No userPool') {
|
|
1281
1527
|
logger.error('Cannot get the current user because the user pool is missing. ' +
|
|
1282
1528
|
'Please make sure the Auth module is configured with a valid Cognito User Pool ID');
|
|
1283
1529
|
}
|
|
1284
|
-
logger.debug('The user is not authenticated by the error',
|
|
1530
|
+
logger.debug('The user is not authenticated by the error', e_8);
|
|
1285
1531
|
return [2 /*return*/, Promise.reject('The user is not authenticated')];
|
|
1286
1532
|
case 9:
|
|
1287
1533
|
this.user = user;
|
|
@@ -1299,7 +1545,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1299
1545
|
logger.debug('Getting current session');
|
|
1300
1546
|
// Purposely not calling the reject method here because we don't need a console error
|
|
1301
1547
|
if (!this.userPool) {
|
|
1302
|
-
return
|
|
1548
|
+
return this.rejectNoUserPool();
|
|
1303
1549
|
}
|
|
1304
1550
|
return new Promise(function (res, rej) {
|
|
1305
1551
|
that
|
|
@@ -1330,25 +1576,43 @@ var AuthClass = /** @class */ (function () {
|
|
|
1330
1576
|
* @return - A promise resolves to the session
|
|
1331
1577
|
*/
|
|
1332
1578
|
AuthClass.prototype.userSession = function (user) {
|
|
1579
|
+
var _this = this;
|
|
1333
1580
|
if (!user) {
|
|
1334
1581
|
logger.debug('the user is null');
|
|
1335
1582
|
return this.rejectAuthError(Auth_1.AuthErrorTypes.NoUserSession);
|
|
1336
1583
|
}
|
|
1337
1584
|
var clientMetadata = this._config.clientMetadata; // TODO: verify behavior if this is override during signIn
|
|
1338
|
-
return new Promise(function (
|
|
1585
|
+
return new Promise(function (res, rej) {
|
|
1339
1586
|
logger.debug('Getting the session from this user:', user);
|
|
1340
|
-
user.getSession(function (err, session) {
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1587
|
+
user.getSession(function (err, session) { return __awaiter(_this, void 0, void 0, function () {
|
|
1588
|
+
var cleanUpError_7;
|
|
1589
|
+
return __generator(this, function (_a) {
|
|
1590
|
+
switch (_a.label) {
|
|
1591
|
+
case 0:
|
|
1592
|
+
if (!err) return [3 /*break*/, 5];
|
|
1593
|
+
logger.debug('Failed to get the session from user', user);
|
|
1594
|
+
if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];
|
|
1595
|
+
_a.label = 1;
|
|
1596
|
+
case 1:
|
|
1597
|
+
_a.trys.push([1, 3, , 4]);
|
|
1598
|
+
return [4 /*yield*/, this.cleanUpInvalidSession(user)];
|
|
1599
|
+
case 2:
|
|
1600
|
+
_a.sent();
|
|
1601
|
+
return [3 /*break*/, 4];
|
|
1602
|
+
case 3:
|
|
1603
|
+
cleanUpError_7 = _a.sent();
|
|
1604
|
+
rej(new Error("Session is invalid due to: " + err.message + " and failed to clean up invalid session: " + cleanUpError_7.message));
|
|
1605
|
+
return [2 /*return*/];
|
|
1606
|
+
case 4:
|
|
1607
|
+
rej(err);
|
|
1608
|
+
return [2 /*return*/];
|
|
1609
|
+
case 5:
|
|
1610
|
+
logger.debug('Succeed to get the user session', session);
|
|
1611
|
+
res(session);
|
|
1612
|
+
return [2 /*return*/];
|
|
1613
|
+
}
|
|
1614
|
+
});
|
|
1615
|
+
}); }, { clientMetadata: clientMetadata });
|
|
1352
1616
|
});
|
|
1353
1617
|
};
|
|
1354
1618
|
/**
|
|
@@ -1357,7 +1621,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1357
1621
|
*/
|
|
1358
1622
|
AuthClass.prototype.currentUserCredentials = function () {
|
|
1359
1623
|
return __awaiter(this, void 0, void 0, function () {
|
|
1360
|
-
var
|
|
1624
|
+
var e_9, federatedInfo;
|
|
1361
1625
|
var _this = this;
|
|
1362
1626
|
return __generator(this, function (_a) {
|
|
1363
1627
|
switch (_a.label) {
|
|
@@ -1371,9 +1635,9 @@ var AuthClass = /** @class */ (function () {
|
|
|
1371
1635
|
_a.sent();
|
|
1372
1636
|
return [3 /*break*/, 4];
|
|
1373
1637
|
case 3:
|
|
1374
|
-
|
|
1375
|
-
logger.debug('Failed to sync cache info into memory',
|
|
1376
|
-
throw
|
|
1638
|
+
e_9 = _a.sent();
|
|
1639
|
+
logger.debug('Failed to sync cache info into memory', e_9);
|
|
1640
|
+
throw e_9;
|
|
1377
1641
|
case 4:
|
|
1378
1642
|
federatedInfo = null;
|
|
1379
1643
|
try {
|
|
@@ -1392,8 +1656,8 @@ var AuthClass = /** @class */ (function () {
|
|
|
1392
1656
|
logger.debug('getting session success', session);
|
|
1393
1657
|
return _this.Credentials.set(session, 'session');
|
|
1394
1658
|
})
|
|
1395
|
-
.catch(function (
|
|
1396
|
-
logger.debug('getting
|
|
1659
|
+
.catch(function () {
|
|
1660
|
+
logger.debug('getting guest credentials');
|
|
1397
1661
|
return _this.Credentials.set(null, 'guest');
|
|
1398
1662
|
})];
|
|
1399
1663
|
}
|
|
@@ -1469,7 +1733,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1469
1733
|
};
|
|
1470
1734
|
AuthClass.prototype.cognitoIdentitySignOut = function (opts, user) {
|
|
1471
1735
|
return __awaiter(this, void 0, void 0, function () {
|
|
1472
|
-
var
|
|
1736
|
+
var e_10, isSignedInHostedUI;
|
|
1473
1737
|
var _this = this;
|
|
1474
1738
|
return __generator(this, function (_a) {
|
|
1475
1739
|
switch (_a.label) {
|
|
@@ -1480,9 +1744,9 @@ var AuthClass = /** @class */ (function () {
|
|
|
1480
1744
|
_a.sent();
|
|
1481
1745
|
return [3 /*break*/, 3];
|
|
1482
1746
|
case 2:
|
|
1483
|
-
|
|
1484
|
-
logger.debug('Failed to sync cache info into memory',
|
|
1485
|
-
throw
|
|
1747
|
+
e_10 = _a.sent();
|
|
1748
|
+
logger.debug('Failed to sync cache info into memory', e_10);
|
|
1749
|
+
throw e_10;
|
|
1486
1750
|
case 3:
|
|
1487
1751
|
isSignedInHostedUI = this._oAuthHandler &&
|
|
1488
1752
|
this._storage.getItem('amplify-signin-with-hostedUI') === 'true';
|
|
@@ -1492,27 +1756,47 @@ var AuthClass = /** @class */ (function () {
|
|
|
1492
1756
|
// in order to use global signout
|
|
1493
1757
|
// we must validate the user as an authenticated user by using getSession
|
|
1494
1758
|
var clientMetadata = _this._config.clientMetadata; // TODO: verify behavior if this is override during signIn
|
|
1495
|
-
user.getSession(function (err, result) {
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
return
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1759
|
+
user.getSession(function (err, result) { return __awaiter(_this, void 0, void 0, function () {
|
|
1760
|
+
var cleanUpError_8;
|
|
1761
|
+
var _this = this;
|
|
1762
|
+
return __generator(this, function (_a) {
|
|
1763
|
+
switch (_a.label) {
|
|
1764
|
+
case 0:
|
|
1765
|
+
if (!err) return [3 /*break*/, 5];
|
|
1766
|
+
logger.debug('failed to get the user session', err);
|
|
1767
|
+
if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];
|
|
1768
|
+
_a.label = 1;
|
|
1769
|
+
case 1:
|
|
1770
|
+
_a.trys.push([1, 3, , 4]);
|
|
1771
|
+
return [4 /*yield*/, this.cleanUpInvalidSession(user)];
|
|
1772
|
+
case 2:
|
|
1773
|
+
_a.sent();
|
|
1774
|
+
return [3 /*break*/, 4];
|
|
1775
|
+
case 3:
|
|
1776
|
+
cleanUpError_8 = _a.sent();
|
|
1777
|
+
rej(new Error("Session is invalid due to: " + err.message + " and failed to clean up invalid session: " + cleanUpError_8.message));
|
|
1778
|
+
return [2 /*return*/];
|
|
1779
|
+
case 4: return [2 /*return*/, rej(err)];
|
|
1780
|
+
case 5:
|
|
1781
|
+
user.globalSignOut({
|
|
1782
|
+
onSuccess: function (data) {
|
|
1783
|
+
logger.debug('global sign out success');
|
|
1784
|
+
if (isSignedInHostedUI) {
|
|
1785
|
+
_this.oAuthSignOutRedirect(res, rej);
|
|
1786
|
+
}
|
|
1787
|
+
else {
|
|
1788
|
+
return res();
|
|
1789
|
+
}
|
|
1790
|
+
},
|
|
1791
|
+
onFailure: function (err) {
|
|
1792
|
+
logger.debug('global sign out failed', err);
|
|
1793
|
+
return rej(err);
|
|
1794
|
+
},
|
|
1795
|
+
});
|
|
1796
|
+
return [2 /*return*/];
|
|
1797
|
+
}
|
|
1514
1798
|
});
|
|
1515
|
-
}, { clientMetadata: clientMetadata });
|
|
1799
|
+
}); }, { clientMetadata: clientMetadata });
|
|
1516
1800
|
}
|
|
1517
1801
|
else {
|
|
1518
1802
|
logger.debug('user sign out', user);
|
|
@@ -1531,7 +1815,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1531
1815
|
});
|
|
1532
1816
|
};
|
|
1533
1817
|
AuthClass.prototype.oAuthSignOutRedirect = function (resolve, reject) {
|
|
1534
|
-
var isBrowser = core_1.
|
|
1818
|
+
var isBrowser = core_1.browserOrNode().isBrowser;
|
|
1535
1819
|
if (isBrowser) {
|
|
1536
1820
|
this.oAuthSignOutRedirectOrReject(reject);
|
|
1537
1821
|
}
|
|
@@ -1546,7 +1830,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1546
1830
|
AuthClass.prototype.oAuthSignOutRedirectOrReject = function (reject) {
|
|
1547
1831
|
this._oAuthHandler.signOut(); // this method redirects url
|
|
1548
1832
|
// App should be redirected to another url otherwise it will reject
|
|
1549
|
-
setTimeout(function () { return reject('Signout timeout fail'); }, 3000);
|
|
1833
|
+
setTimeout(function () { return reject(Error('Signout timeout fail')); }, 3000);
|
|
1550
1834
|
};
|
|
1551
1835
|
/**
|
|
1552
1836
|
* Sign out method
|
|
@@ -1555,7 +1839,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1555
1839
|
*/
|
|
1556
1840
|
AuthClass.prototype.signOut = function (opts) {
|
|
1557
1841
|
return __awaiter(this, void 0, void 0, function () {
|
|
1558
|
-
var
|
|
1842
|
+
var e_11, user;
|
|
1559
1843
|
return __generator(this, function (_a) {
|
|
1560
1844
|
switch (_a.label) {
|
|
1561
1845
|
case 0:
|
|
@@ -1565,7 +1849,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1565
1849
|
_a.sent();
|
|
1566
1850
|
return [3 /*break*/, 3];
|
|
1567
1851
|
case 2:
|
|
1568
|
-
|
|
1852
|
+
e_11 = _a.sent();
|
|
1569
1853
|
logger.debug('failed to clear cached items');
|
|
1570
1854
|
return [3 /*break*/, 3];
|
|
1571
1855
|
case 3:
|
|
@@ -1581,7 +1865,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1581
1865
|
_a.label = 6;
|
|
1582
1866
|
case 6: return [3 /*break*/, 8];
|
|
1583
1867
|
case 7:
|
|
1584
|
-
logger.debug('no
|
|
1868
|
+
logger.debug('no Cognito User pool');
|
|
1585
1869
|
_a.label = 8;
|
|
1586
1870
|
case 8:
|
|
1587
1871
|
/**
|
|
@@ -1714,7 +1998,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1714
1998
|
*/
|
|
1715
1999
|
AuthClass.prototype.currentUserInfo = function () {
|
|
1716
2000
|
return __awaiter(this, void 0, void 0, function () {
|
|
1717
|
-
var source, user, attributes, userAttrs, credentials,
|
|
2001
|
+
var source, user, attributes, userAttrs, credentials, e_12, info, err_1, user;
|
|
1718
2002
|
return __generator(this, function (_a) {
|
|
1719
2003
|
switch (_a.label) {
|
|
1720
2004
|
case 0:
|
|
@@ -1744,8 +2028,8 @@ var AuthClass = /** @class */ (function () {
|
|
|
1744
2028
|
credentials = _a.sent();
|
|
1745
2029
|
return [3 /*break*/, 7];
|
|
1746
2030
|
case 6:
|
|
1747
|
-
|
|
1748
|
-
logger.debug('Failed to retrieve credentials while getting current user info',
|
|
2031
|
+
e_12 = _a.sent();
|
|
2032
|
+
logger.debug('Failed to retrieve credentials while getting current user info', e_12);
|
|
1749
2033
|
return [3 /*break*/, 7];
|
|
1750
2034
|
case 7:
|
|
1751
2035
|
info = {
|
|
@@ -1853,7 +2137,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1853
2137
|
throw new Error("OAuth responses require a User Pool defined in config");
|
|
1854
2138
|
}
|
|
1855
2139
|
dispatchAuthEvent('parsingCallbackUrl', { url: URL }, "The callback url is being parsed");
|
|
1856
|
-
currentUrl = URL || (core_1.
|
|
2140
|
+
currentUrl = URL || (core_1.browserOrNode().isBrowser ? window.location.href : '');
|
|
1857
2141
|
hasCodeOrError = !!(url_1.parse(currentUrl).query || '')
|
|
1858
2142
|
.split('&')
|
|
1859
2143
|
.map(function (entry) { return entry.split('='); })
|
|
@@ -1904,10 +2188,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1904
2188
|
dispatchAuthEvent('signIn', currentUser, "A user " + currentUser.getUsername() + " has been signed in");
|
|
1905
2189
|
dispatchAuthEvent('cognitoHostedUI', currentUser, "A user " + currentUser.getUsername() + " has been signed in via Cognito Hosted UI");
|
|
1906
2190
|
if (isCustomStateIncluded) {
|
|
1907
|
-
customState = state
|
|
1908
|
-
.split('-')
|
|
1909
|
-
.splice(1)
|
|
1910
|
-
.join('-');
|
|
2191
|
+
customState = state.split('-').splice(1).join('-');
|
|
1911
2192
|
dispatchAuthEvent('customOAuthState', core_1.urlSafeDecode(customState), "State for user " + currentUser.getUsername());
|
|
1912
2193
|
}
|
|
1913
2194
|
//#endregion
|