@aws-amplify/auth 4.4.3-cloud-logging.7 → 4.4.3-cloud-logging.8
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 +18 -43
- package/dist/aws-amplify-auth.js +618 -352
- 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 +9 -0
- package/lib/Auth.js +362 -161
- 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-esm/Auth.d.ts +9 -0
- package/lib-esm/Auth.js +362 -161
- 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/package.json +5 -5
- package/src/Auth.ts +193 -24
- package/src/index.ts +40 -35
- package/src/types/Auth.ts +8 -0
package/lib/Auth.js
CHANGED
|
@@ -598,22 +598,42 @@ var AuthClass = /** @class */ (function () {
|
|
|
598
598
|
return new Promise(function (res, rej) {
|
|
599
599
|
var clientMetadata = _this._config.clientMetadata; // TODO: verify behavior if this is override during signIn
|
|
600
600
|
var bypassCache = params ? params.bypassCache : false;
|
|
601
|
-
user.getUserData(function (err, data) {
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
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 });
|
|
617
637
|
});
|
|
618
638
|
};
|
|
619
639
|
AuthClass.prototype._getMfaTypeFromUserData = function (data) {
|
|
@@ -650,18 +670,37 @@ var AuthClass = /** @class */ (function () {
|
|
|
650
670
|
return ret;
|
|
651
671
|
};
|
|
652
672
|
AuthClass.prototype._getUserData = function (user, params) {
|
|
673
|
+
var _this = this;
|
|
653
674
|
return new Promise(function (res, rej) {
|
|
654
|
-
user.getUserData(function (err, data) {
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
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);
|
|
665
704
|
});
|
|
666
705
|
};
|
|
667
706
|
/**
|
|
@@ -673,6 +712,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
673
712
|
AuthClass.prototype.setPreferredMFA = function (user, mfaMethod) {
|
|
674
713
|
return __awaiter(this, void 0, void 0, function () {
|
|
675
714
|
var clientMetadata, userData, smsMfaSettings, totpMfaSettings, _a, mfaList, currentMFAType, that;
|
|
715
|
+
var _this = this;
|
|
676
716
|
return __generator(this, function (_b) {
|
|
677
717
|
switch (_b.label) {
|
|
678
718
|
case 0:
|
|
@@ -763,15 +803,30 @@ var AuthClass = /** @class */ (function () {
|
|
|
763
803
|
logger.debug('Set user mfa success', result);
|
|
764
804
|
logger.debug('Caching the latest user data into local');
|
|
765
805
|
// cache the latest result into user data
|
|
766
|
-
user.getUserData(function (err, data) {
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
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
|
+
}); }, {
|
|
775
830
|
bypassCache: true,
|
|
776
831
|
clientMetadata: clientMetadata,
|
|
777
832
|
});
|
|
@@ -1058,39 +1113,54 @@ var AuthClass = /** @class */ (function () {
|
|
|
1058
1113
|
}
|
|
1059
1114
|
else {
|
|
1060
1115
|
user_1.getSession(function (err, session) { return __awaiter(_this, void 0, void 0, function () {
|
|
1116
|
+
var cleanUpError_4;
|
|
1061
1117
|
var _this = this;
|
|
1062
1118
|
return __generator(this, function (_a) {
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
_this.oAuthSignOutRedirect(res, rej);
|
|
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);
|
|
1085
1140
|
}
|
|
1086
1141
|
else {
|
|
1087
|
-
dispatchAuthEvent('
|
|
1088
|
-
|
|
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
|
+
}
|
|
1089
1159
|
}
|
|
1090
|
-
}
|
|
1091
|
-
|
|
1160
|
+
});
|
|
1161
|
+
_a.label = 6;
|
|
1162
|
+
case 6: return [2 /*return*/];
|
|
1092
1163
|
}
|
|
1093
|
-
return [2 /*return*/];
|
|
1094
1164
|
});
|
|
1095
1165
|
}); });
|
|
1096
1166
|
}
|
|
@@ -1185,6 +1255,74 @@ var AuthClass = /** @class */ (function () {
|
|
|
1185
1255
|
};
|
|
1186
1256
|
});
|
|
1187
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
|
+
};
|
|
1188
1326
|
/**
|
|
1189
1327
|
* Get current authenticated user
|
|
1190
1328
|
* @return - A promise resolves to current authenticated CognitoUser if success
|
|
@@ -1236,57 +1374,82 @@ var AuthClass = /** @class */ (function () {
|
|
|
1236
1374
|
clientMetadata = this._config.clientMetadata;
|
|
1237
1375
|
// refresh the session if the session expired.
|
|
1238
1376
|
user.getSession(function (err, session) { return __awaiter(_this, void 0, void 0, function () {
|
|
1239
|
-
var bypassCache, clientMetadata, _a, scope;
|
|
1377
|
+
var cleanUpError_5, bypassCache, clientMetadata, _a, scope;
|
|
1240
1378
|
var _this = this;
|
|
1241
1379
|
return __generator(this, function (_b) {
|
|
1242
1380
|
switch (_b.label) {
|
|
1243
1381
|
case 0:
|
|
1244
|
-
if (err)
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
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:
|
|
1249
1400
|
bypassCache = params ? params.bypassCache : false;
|
|
1250
|
-
if (!bypassCache) return [3 /*break*/,
|
|
1401
|
+
if (!bypassCache) return [3 /*break*/, 7];
|
|
1251
1402
|
return [4 /*yield*/, this.Credentials.clear()];
|
|
1252
|
-
case
|
|
1403
|
+
case 6:
|
|
1253
1404
|
_b.sent();
|
|
1254
|
-
_b.label =
|
|
1255
|
-
case
|
|
1405
|
+
_b.label = 7;
|
|
1406
|
+
case 7:
|
|
1256
1407
|
clientMetadata = this._config.clientMetadata;
|
|
1257
1408
|
_a = session.getAccessToken().decodePayload().scope, scope = _a === void 0 ? '' : _a;
|
|
1258
1409
|
if (scope.split(' ').includes(USER_ADMIN_SCOPE)) {
|
|
1259
|
-
user.getUserData(function (err, data) {
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
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)];
|
|
1273
1450
|
}
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
var preferredMFA = data.PreferredMfaSetting || 'NOMFA';
|
|
1277
|
-
var attributeList = [];
|
|
1278
|
-
for (var i = 0; i < data.UserAttributes.length; i++) {
|
|
1279
|
-
var attribute = {
|
|
1280
|
-
Name: data.UserAttributes[i].Name,
|
|
1281
|
-
Value: data.UserAttributes[i].Value,
|
|
1282
|
-
};
|
|
1283
|
-
var userAttribute = new amazon_cognito_identity_js_1.CognitoUserAttribute(attribute);
|
|
1284
|
-
attributeList.push(userAttribute);
|
|
1285
|
-
}
|
|
1286
|
-
var attributes = _this.attributesToObject(attributeList);
|
|
1287
|
-
Object.assign(user, { attributes: attributes, preferredMFA: preferredMFA });
|
|
1288
|
-
return res(user);
|
|
1289
|
-
}, { bypassCache: bypassCache, clientMetadata: clientMetadata });
|
|
1451
|
+
});
|
|
1452
|
+
}); }, { bypassCache: bypassCache, clientMetadata: clientMetadata });
|
|
1290
1453
|
}
|
|
1291
1454
|
else {
|
|
1292
1455
|
logger.debug("Unable to get the user data because the " + USER_ADMIN_SCOPE + " " +
|
|
@@ -1317,7 +1480,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1317
1480
|
*/
|
|
1318
1481
|
AuthClass.prototype.currentAuthenticatedUser = function (params) {
|
|
1319
1482
|
return __awaiter(this, void 0, void 0, function () {
|
|
1320
|
-
var federatedUser,
|
|
1483
|
+
var federatedUser, e_7, federatedInfo, user, e_8;
|
|
1321
1484
|
return __generator(this, function (_a) {
|
|
1322
1485
|
switch (_a.label) {
|
|
1323
1486
|
case 0:
|
|
@@ -1331,9 +1494,9 @@ var AuthClass = /** @class */ (function () {
|
|
|
1331
1494
|
_a.sent();
|
|
1332
1495
|
return [3 /*break*/, 4];
|
|
1333
1496
|
case 3:
|
|
1334
|
-
|
|
1335
|
-
logger.debug('Failed to sync cache info into memory',
|
|
1336
|
-
throw
|
|
1497
|
+
e_7 = _a.sent();
|
|
1498
|
+
logger.debug('Failed to sync cache info into memory', e_7);
|
|
1499
|
+
throw e_7;
|
|
1337
1500
|
case 4:
|
|
1338
1501
|
try {
|
|
1339
1502
|
federatedInfo = JSON.parse(this._storage.getItem('aws-amplify-federatedInfo'));
|
|
@@ -1359,12 +1522,12 @@ var AuthClass = /** @class */ (function () {
|
|
|
1359
1522
|
user = _a.sent();
|
|
1360
1523
|
return [3 /*break*/, 9];
|
|
1361
1524
|
case 8:
|
|
1362
|
-
|
|
1363
|
-
if (
|
|
1525
|
+
e_8 = _a.sent();
|
|
1526
|
+
if (e_8 === 'No userPool') {
|
|
1364
1527
|
logger.error('Cannot get the current user because the user pool is missing. ' +
|
|
1365
1528
|
'Please make sure the Auth module is configured with a valid Cognito User Pool ID');
|
|
1366
1529
|
}
|
|
1367
|
-
logger.debug('The user is not authenticated by the error',
|
|
1530
|
+
logger.debug('The user is not authenticated by the error', e_8);
|
|
1368
1531
|
return [2 /*return*/, Promise.reject('The user is not authenticated')];
|
|
1369
1532
|
case 9:
|
|
1370
1533
|
this.user = user;
|
|
@@ -1382,7 +1545,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1382
1545
|
logger.debug('Getting current session');
|
|
1383
1546
|
// Purposely not calling the reject method here because we don't need a console error
|
|
1384
1547
|
if (!this.userPool) {
|
|
1385
|
-
return
|
|
1548
|
+
return this.rejectNoUserPool();
|
|
1386
1549
|
}
|
|
1387
1550
|
return new Promise(function (res, rej) {
|
|
1388
1551
|
that
|
|
@@ -1413,25 +1576,43 @@ var AuthClass = /** @class */ (function () {
|
|
|
1413
1576
|
* @return - A promise resolves to the session
|
|
1414
1577
|
*/
|
|
1415
1578
|
AuthClass.prototype.userSession = function (user) {
|
|
1579
|
+
var _this = this;
|
|
1416
1580
|
if (!user) {
|
|
1417
1581
|
logger.debug('the user is null');
|
|
1418
1582
|
return this.rejectAuthError(Auth_1.AuthErrorTypes.NoUserSession);
|
|
1419
1583
|
}
|
|
1420
1584
|
var clientMetadata = this._config.clientMetadata; // TODO: verify behavior if this is override during signIn
|
|
1421
|
-
return new Promise(function (
|
|
1585
|
+
return new Promise(function (res, rej) {
|
|
1422
1586
|
logger.debug('Getting the session from this user:', user);
|
|
1423
|
-
user.getSession(function (err, session) {
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
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 });
|
|
1435
1616
|
});
|
|
1436
1617
|
};
|
|
1437
1618
|
/**
|
|
@@ -1440,7 +1621,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1440
1621
|
*/
|
|
1441
1622
|
AuthClass.prototype.currentUserCredentials = function () {
|
|
1442
1623
|
return __awaiter(this, void 0, void 0, function () {
|
|
1443
|
-
var
|
|
1624
|
+
var e_9, federatedInfo;
|
|
1444
1625
|
var _this = this;
|
|
1445
1626
|
return __generator(this, function (_a) {
|
|
1446
1627
|
switch (_a.label) {
|
|
@@ -1454,9 +1635,9 @@ var AuthClass = /** @class */ (function () {
|
|
|
1454
1635
|
_a.sent();
|
|
1455
1636
|
return [3 /*break*/, 4];
|
|
1456
1637
|
case 3:
|
|
1457
|
-
|
|
1458
|
-
logger.debug('Failed to sync cache info into memory',
|
|
1459
|
-
throw
|
|
1638
|
+
e_9 = _a.sent();
|
|
1639
|
+
logger.debug('Failed to sync cache info into memory', e_9);
|
|
1640
|
+
throw e_9;
|
|
1460
1641
|
case 4:
|
|
1461
1642
|
federatedInfo = null;
|
|
1462
1643
|
try {
|
|
@@ -1475,8 +1656,8 @@ var AuthClass = /** @class */ (function () {
|
|
|
1475
1656
|
logger.debug('getting session success', session);
|
|
1476
1657
|
return _this.Credentials.set(session, 'session');
|
|
1477
1658
|
})
|
|
1478
|
-
.catch(function (
|
|
1479
|
-
logger.debug('getting
|
|
1659
|
+
.catch(function () {
|
|
1660
|
+
logger.debug('getting guest credentials');
|
|
1480
1661
|
return _this.Credentials.set(null, 'guest');
|
|
1481
1662
|
})];
|
|
1482
1663
|
}
|
|
@@ -1552,7 +1733,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1552
1733
|
};
|
|
1553
1734
|
AuthClass.prototype.cognitoIdentitySignOut = function (opts, user) {
|
|
1554
1735
|
return __awaiter(this, void 0, void 0, function () {
|
|
1555
|
-
var
|
|
1736
|
+
var e_10, isSignedInHostedUI;
|
|
1556
1737
|
var _this = this;
|
|
1557
1738
|
return __generator(this, function (_a) {
|
|
1558
1739
|
switch (_a.label) {
|
|
@@ -1563,9 +1744,9 @@ var AuthClass = /** @class */ (function () {
|
|
|
1563
1744
|
_a.sent();
|
|
1564
1745
|
return [3 /*break*/, 3];
|
|
1565
1746
|
case 2:
|
|
1566
|
-
|
|
1567
|
-
logger.debug('Failed to sync cache info into memory',
|
|
1568
|
-
throw
|
|
1747
|
+
e_10 = _a.sent();
|
|
1748
|
+
logger.debug('Failed to sync cache info into memory', e_10);
|
|
1749
|
+
throw e_10;
|
|
1569
1750
|
case 3:
|
|
1570
1751
|
isSignedInHostedUI = this._oAuthHandler &&
|
|
1571
1752
|
this._storage.getItem('amplify-signin-with-hostedUI') === 'true';
|
|
@@ -1575,27 +1756,47 @@ var AuthClass = /** @class */ (function () {
|
|
|
1575
1756
|
// in order to use global signout
|
|
1576
1757
|
// we must validate the user as an authenticated user by using getSession
|
|
1577
1758
|
var clientMetadata = _this._config.clientMetadata; // TODO: verify behavior if this is override during signIn
|
|
1578
|
-
user.getSession(function (err, result) {
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
return
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
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
|
+
}
|
|
1597
1798
|
});
|
|
1598
|
-
}, { clientMetadata: clientMetadata });
|
|
1799
|
+
}); }, { clientMetadata: clientMetadata });
|
|
1599
1800
|
}
|
|
1600
1801
|
else {
|
|
1601
1802
|
logger.debug('user sign out', user);
|
|
@@ -1629,7 +1830,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1629
1830
|
AuthClass.prototype.oAuthSignOutRedirectOrReject = function (reject) {
|
|
1630
1831
|
this._oAuthHandler.signOut(); // this method redirects url
|
|
1631
1832
|
// App should be redirected to another url otherwise it will reject
|
|
1632
|
-
setTimeout(function () { return reject('Signout timeout fail'); }, 3000);
|
|
1833
|
+
setTimeout(function () { return reject(Error('Signout timeout fail')); }, 3000);
|
|
1633
1834
|
};
|
|
1634
1835
|
/**
|
|
1635
1836
|
* Sign out method
|
|
@@ -1638,7 +1839,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1638
1839
|
*/
|
|
1639
1840
|
AuthClass.prototype.signOut = function (opts) {
|
|
1640
1841
|
return __awaiter(this, void 0, void 0, function () {
|
|
1641
|
-
var
|
|
1842
|
+
var e_11, user;
|
|
1642
1843
|
return __generator(this, function (_a) {
|
|
1643
1844
|
switch (_a.label) {
|
|
1644
1845
|
case 0:
|
|
@@ -1648,7 +1849,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1648
1849
|
_a.sent();
|
|
1649
1850
|
return [3 /*break*/, 3];
|
|
1650
1851
|
case 2:
|
|
1651
|
-
|
|
1852
|
+
e_11 = _a.sent();
|
|
1652
1853
|
logger.debug('failed to clear cached items');
|
|
1653
1854
|
return [3 /*break*/, 3];
|
|
1654
1855
|
case 3:
|
|
@@ -1664,7 +1865,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1664
1865
|
_a.label = 6;
|
|
1665
1866
|
case 6: return [3 /*break*/, 8];
|
|
1666
1867
|
case 7:
|
|
1667
|
-
logger.debug('no
|
|
1868
|
+
logger.debug('no Cognito User pool');
|
|
1668
1869
|
_a.label = 8;
|
|
1669
1870
|
case 8:
|
|
1670
1871
|
/**
|
|
@@ -1797,7 +1998,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1797
1998
|
*/
|
|
1798
1999
|
AuthClass.prototype.currentUserInfo = function () {
|
|
1799
2000
|
return __awaiter(this, void 0, void 0, function () {
|
|
1800
|
-
var source, user, attributes, userAttrs, credentials,
|
|
2001
|
+
var source, user, attributes, userAttrs, credentials, e_12, info, err_1, user;
|
|
1801
2002
|
return __generator(this, function (_a) {
|
|
1802
2003
|
switch (_a.label) {
|
|
1803
2004
|
case 0:
|
|
@@ -1827,8 +2028,8 @@ var AuthClass = /** @class */ (function () {
|
|
|
1827
2028
|
credentials = _a.sent();
|
|
1828
2029
|
return [3 /*break*/, 7];
|
|
1829
2030
|
case 6:
|
|
1830
|
-
|
|
1831
|
-
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);
|
|
1832
2033
|
return [3 /*break*/, 7];
|
|
1833
2034
|
case 7:
|
|
1834
2035
|
info = {
|