@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-esm/Auth.js
CHANGED
|
@@ -593,22 +593,42 @@ var AuthClass = /** @class */ (function () {
|
|
|
593
593
|
return new Promise(function (res, rej) {
|
|
594
594
|
var clientMetadata = _this._config.clientMetadata; // TODO: verify behavior if this is override during signIn
|
|
595
595
|
var bypassCache = params ? params.bypassCache : false;
|
|
596
|
-
user.getUserData(function (err, data) {
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
596
|
+
user.getUserData(function (err, data) { return __awaiter(_this, void 0, void 0, function () {
|
|
597
|
+
var cleanUpError_1, mfaType;
|
|
598
|
+
return __generator(this, function (_a) {
|
|
599
|
+
switch (_a.label) {
|
|
600
|
+
case 0:
|
|
601
|
+
if (!err) return [3 /*break*/, 5];
|
|
602
|
+
logger.debug('getting preferred mfa failed', err);
|
|
603
|
+
if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];
|
|
604
|
+
_a.label = 1;
|
|
605
|
+
case 1:
|
|
606
|
+
_a.trys.push([1, 3, , 4]);
|
|
607
|
+
return [4 /*yield*/, this.cleanUpInvalidSession(user)];
|
|
608
|
+
case 2:
|
|
609
|
+
_a.sent();
|
|
610
|
+
return [3 /*break*/, 4];
|
|
611
|
+
case 3:
|
|
612
|
+
cleanUpError_1 = _a.sent();
|
|
613
|
+
rej(new Error("Session is invalid due to: " + err.message + " and failed to clean up invalid session: " + cleanUpError_1.message));
|
|
614
|
+
return [2 /*return*/];
|
|
615
|
+
case 4:
|
|
616
|
+
rej(err);
|
|
617
|
+
return [2 /*return*/];
|
|
618
|
+
case 5:
|
|
619
|
+
mfaType = that._getMfaTypeFromUserData(data);
|
|
620
|
+
if (!mfaType) {
|
|
621
|
+
rej('invalid MFA Type');
|
|
622
|
+
return [2 /*return*/];
|
|
623
|
+
}
|
|
624
|
+
else {
|
|
625
|
+
res(mfaType);
|
|
626
|
+
return [2 /*return*/];
|
|
627
|
+
}
|
|
628
|
+
return [2 /*return*/];
|
|
629
|
+
}
|
|
630
|
+
});
|
|
631
|
+
}); }, { bypassCache: bypassCache, clientMetadata: clientMetadata });
|
|
612
632
|
});
|
|
613
633
|
};
|
|
614
634
|
AuthClass.prototype._getMfaTypeFromUserData = function (data) {
|
|
@@ -645,18 +665,37 @@ var AuthClass = /** @class */ (function () {
|
|
|
645
665
|
return ret;
|
|
646
666
|
};
|
|
647
667
|
AuthClass.prototype._getUserData = function (user, params) {
|
|
668
|
+
var _this = this;
|
|
648
669
|
return new Promise(function (res, rej) {
|
|
649
|
-
user.getUserData(function (err, data) {
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
670
|
+
user.getUserData(function (err, data) { return __awaiter(_this, void 0, void 0, function () {
|
|
671
|
+
var cleanUpError_2;
|
|
672
|
+
return __generator(this, function (_a) {
|
|
673
|
+
switch (_a.label) {
|
|
674
|
+
case 0:
|
|
675
|
+
if (!err) return [3 /*break*/, 5];
|
|
676
|
+
logger.debug('getting user data failed', err);
|
|
677
|
+
if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];
|
|
678
|
+
_a.label = 1;
|
|
679
|
+
case 1:
|
|
680
|
+
_a.trys.push([1, 3, , 4]);
|
|
681
|
+
return [4 /*yield*/, this.cleanUpInvalidSession(user)];
|
|
682
|
+
case 2:
|
|
683
|
+
_a.sent();
|
|
684
|
+
return [3 /*break*/, 4];
|
|
685
|
+
case 3:
|
|
686
|
+
cleanUpError_2 = _a.sent();
|
|
687
|
+
rej(new Error("Session is invalid due to: " + err.message + " and failed to clean up invalid session: " + cleanUpError_2.message));
|
|
688
|
+
return [2 /*return*/];
|
|
689
|
+
case 4:
|
|
690
|
+
rej(err);
|
|
691
|
+
return [2 /*return*/];
|
|
692
|
+
case 5:
|
|
693
|
+
res(data);
|
|
694
|
+
_a.label = 6;
|
|
695
|
+
case 6: return [2 /*return*/];
|
|
696
|
+
}
|
|
697
|
+
});
|
|
698
|
+
}); }, params);
|
|
660
699
|
});
|
|
661
700
|
};
|
|
662
701
|
/**
|
|
@@ -668,6 +707,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
668
707
|
AuthClass.prototype.setPreferredMFA = function (user, mfaMethod) {
|
|
669
708
|
return __awaiter(this, void 0, void 0, function () {
|
|
670
709
|
var clientMetadata, userData, smsMfaSettings, totpMfaSettings, _a, mfaList, currentMFAType, that;
|
|
710
|
+
var _this = this;
|
|
671
711
|
return __generator(this, function (_b) {
|
|
672
712
|
switch (_b.label) {
|
|
673
713
|
case 0:
|
|
@@ -758,15 +798,30 @@ var AuthClass = /** @class */ (function () {
|
|
|
758
798
|
logger.debug('Set user mfa success', result);
|
|
759
799
|
logger.debug('Caching the latest user data into local');
|
|
760
800
|
// cache the latest result into user data
|
|
761
|
-
user.getUserData(function (err, data) {
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
801
|
+
user.getUserData(function (err, data) { return __awaiter(_this, void 0, void 0, function () {
|
|
802
|
+
var cleanUpError_3;
|
|
803
|
+
return __generator(this, function (_a) {
|
|
804
|
+
switch (_a.label) {
|
|
805
|
+
case 0:
|
|
806
|
+
if (!err) return [3 /*break*/, 5];
|
|
807
|
+
logger.debug('getting user data failed', err);
|
|
808
|
+
if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];
|
|
809
|
+
_a.label = 1;
|
|
810
|
+
case 1:
|
|
811
|
+
_a.trys.push([1, 3, , 4]);
|
|
812
|
+
return [4 /*yield*/, this.cleanUpInvalidSession(user)];
|
|
813
|
+
case 2:
|
|
814
|
+
_a.sent();
|
|
815
|
+
return [3 /*break*/, 4];
|
|
816
|
+
case 3:
|
|
817
|
+
cleanUpError_3 = _a.sent();
|
|
818
|
+
rej(new Error("Session is invalid due to: " + err.message + " and failed to clean up invalid session: " + cleanUpError_3.message));
|
|
819
|
+
return [2 /*return*/];
|
|
820
|
+
case 4: return [2 /*return*/, rej(err)];
|
|
821
|
+
case 5: return [2 /*return*/, res(result)];
|
|
822
|
+
}
|
|
823
|
+
});
|
|
824
|
+
}); }, {
|
|
770
825
|
bypassCache: true,
|
|
771
826
|
clientMetadata: clientMetadata,
|
|
772
827
|
});
|
|
@@ -1053,39 +1108,54 @@ var AuthClass = /** @class */ (function () {
|
|
|
1053
1108
|
}
|
|
1054
1109
|
else {
|
|
1055
1110
|
user_1.getSession(function (err, session) { return __awaiter(_this, void 0, void 0, function () {
|
|
1111
|
+
var cleanUpError_4;
|
|
1056
1112
|
var _this = this;
|
|
1057
1113
|
return __generator(this, function (_a) {
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
_this.oAuthSignOutRedirect(res, rej);
|
|
1114
|
+
switch (_a.label) {
|
|
1115
|
+
case 0:
|
|
1116
|
+
if (!err) return [3 /*break*/, 5];
|
|
1117
|
+
logger.debug('Failed to get the user session', err);
|
|
1118
|
+
if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];
|
|
1119
|
+
_a.label = 1;
|
|
1120
|
+
case 1:
|
|
1121
|
+
_a.trys.push([1, 3, , 4]);
|
|
1122
|
+
return [4 /*yield*/, this.cleanUpInvalidSession(user_1)];
|
|
1123
|
+
case 2:
|
|
1124
|
+
_a.sent();
|
|
1125
|
+
return [3 /*break*/, 4];
|
|
1126
|
+
case 3:
|
|
1127
|
+
cleanUpError_4 = _a.sent();
|
|
1128
|
+
rej(new Error("Session is invalid due to: " + err.message + " and failed to clean up invalid session: " + cleanUpError_4.message));
|
|
1129
|
+
return [2 /*return*/];
|
|
1130
|
+
case 4: return [2 /*return*/, rej(err)];
|
|
1131
|
+
case 5:
|
|
1132
|
+
user_1.deleteUser(function (err, result) {
|
|
1133
|
+
if (err) {
|
|
1134
|
+
rej(err);
|
|
1080
1135
|
}
|
|
1081
1136
|
else {
|
|
1082
|
-
dispatchAuthEvent('
|
|
1083
|
-
|
|
1137
|
+
dispatchAuthEvent('userDeleted', result, 'The authenticated user has been deleted.');
|
|
1138
|
+
user_1.signOut();
|
|
1139
|
+
_this.user = null;
|
|
1140
|
+
try {
|
|
1141
|
+
_this.cleanCachedItems(); // clean aws credentials
|
|
1142
|
+
}
|
|
1143
|
+
catch (e) {
|
|
1144
|
+
// TODO: change to rejects in refactor
|
|
1145
|
+
logger.debug('failed to clear cached items');
|
|
1146
|
+
}
|
|
1147
|
+
if (isSignedInHostedUI) {
|
|
1148
|
+
_this.oAuthSignOutRedirect(res, rej);
|
|
1149
|
+
}
|
|
1150
|
+
else {
|
|
1151
|
+
dispatchAuthEvent('signOut', _this.user, "A user has been signed out");
|
|
1152
|
+
res(result);
|
|
1153
|
+
}
|
|
1084
1154
|
}
|
|
1085
|
-
}
|
|
1086
|
-
|
|
1155
|
+
});
|
|
1156
|
+
_a.label = 6;
|
|
1157
|
+
case 6: return [2 /*return*/];
|
|
1087
1158
|
}
|
|
1088
|
-
return [2 /*return*/];
|
|
1089
1159
|
});
|
|
1090
1160
|
}); });
|
|
1091
1161
|
}
|
|
@@ -1180,6 +1250,74 @@ var AuthClass = /** @class */ (function () {
|
|
|
1180
1250
|
};
|
|
1181
1251
|
});
|
|
1182
1252
|
};
|
|
1253
|
+
AuthClass.prototype.isErrorWithMessage = function (err) {
|
|
1254
|
+
return (typeof err === 'object' &&
|
|
1255
|
+
Object.prototype.hasOwnProperty.call(err, 'message'));
|
|
1256
|
+
};
|
|
1257
|
+
// Session revoked by another app
|
|
1258
|
+
AuthClass.prototype.isTokenRevokedError = function (err) {
|
|
1259
|
+
return (this.isErrorWithMessage(err) &&
|
|
1260
|
+
err.message === 'Access Token has been revoked');
|
|
1261
|
+
};
|
|
1262
|
+
AuthClass.prototype.isRefreshTokenRevokedError = function (err) {
|
|
1263
|
+
return (this.isErrorWithMessage(err) &&
|
|
1264
|
+
err.message === 'Refresh Token has been revoked');
|
|
1265
|
+
};
|
|
1266
|
+
AuthClass.prototype.isUserDisabledError = function (err) {
|
|
1267
|
+
return this.isErrorWithMessage(err) && err.message === 'User is disabled.';
|
|
1268
|
+
};
|
|
1269
|
+
AuthClass.prototype.isUserDoesNotExistError = function (err) {
|
|
1270
|
+
return (this.isErrorWithMessage(err) && err.message === 'User does not exist.');
|
|
1271
|
+
};
|
|
1272
|
+
AuthClass.prototype.isRefreshTokenExpiredError = function (err) {
|
|
1273
|
+
return (this.isErrorWithMessage(err) &&
|
|
1274
|
+
err.message === 'Refresh Token has expired');
|
|
1275
|
+
};
|
|
1276
|
+
AuthClass.prototype.isSignedInHostedUI = function () {
|
|
1277
|
+
return (this._oAuthHandler &&
|
|
1278
|
+
this._storage.getItem('amplify-signin-with-hostedUI') === 'true');
|
|
1279
|
+
};
|
|
1280
|
+
AuthClass.prototype.isSessionInvalid = function (err) {
|
|
1281
|
+
return (this.isUserDisabledError(err) ||
|
|
1282
|
+
this.isUserDoesNotExistError(err) ||
|
|
1283
|
+
this.isTokenRevokedError(err) ||
|
|
1284
|
+
this.isRefreshTokenRevokedError(err) ||
|
|
1285
|
+
this.isRefreshTokenExpiredError(err));
|
|
1286
|
+
};
|
|
1287
|
+
AuthClass.prototype.cleanUpInvalidSession = function (user) {
|
|
1288
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
1289
|
+
var e_6;
|
|
1290
|
+
var _this = this;
|
|
1291
|
+
return __generator(this, function (_a) {
|
|
1292
|
+
switch (_a.label) {
|
|
1293
|
+
case 0:
|
|
1294
|
+
user.signOut();
|
|
1295
|
+
this.user = null;
|
|
1296
|
+
_a.label = 1;
|
|
1297
|
+
case 1:
|
|
1298
|
+
_a.trys.push([1, 3, , 4]);
|
|
1299
|
+
return [4 /*yield*/, this.cleanCachedItems()];
|
|
1300
|
+
case 2:
|
|
1301
|
+
_a.sent(); // clean aws credentials
|
|
1302
|
+
return [3 /*break*/, 4];
|
|
1303
|
+
case 3:
|
|
1304
|
+
e_6 = _a.sent();
|
|
1305
|
+
logger.debug('failed to clear cached items');
|
|
1306
|
+
return [3 /*break*/, 4];
|
|
1307
|
+
case 4:
|
|
1308
|
+
if (this.isSignedInHostedUI()) {
|
|
1309
|
+
return [2 /*return*/, new Promise(function (res, rej) {
|
|
1310
|
+
_this.oAuthSignOutRedirect(res, rej);
|
|
1311
|
+
})];
|
|
1312
|
+
}
|
|
1313
|
+
else {
|
|
1314
|
+
dispatchAuthEvent('signOut', this.user, "A user has been signed out");
|
|
1315
|
+
}
|
|
1316
|
+
return [2 /*return*/];
|
|
1317
|
+
}
|
|
1318
|
+
});
|
|
1319
|
+
});
|
|
1320
|
+
};
|
|
1183
1321
|
/**
|
|
1184
1322
|
* Get current authenticated user
|
|
1185
1323
|
* @return - A promise resolves to current authenticated CognitoUser if success
|
|
@@ -1231,57 +1369,82 @@ var AuthClass = /** @class */ (function () {
|
|
|
1231
1369
|
clientMetadata = this._config.clientMetadata;
|
|
1232
1370
|
// refresh the session if the session expired.
|
|
1233
1371
|
user.getSession(function (err, session) { return __awaiter(_this, void 0, void 0, function () {
|
|
1234
|
-
var bypassCache, clientMetadata, _a, scope;
|
|
1372
|
+
var cleanUpError_5, bypassCache, clientMetadata, _a, scope;
|
|
1235
1373
|
var _this = this;
|
|
1236
1374
|
return __generator(this, function (_b) {
|
|
1237
1375
|
switch (_b.label) {
|
|
1238
1376
|
case 0:
|
|
1239
|
-
if (err)
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1377
|
+
if (!err) return [3 /*break*/, 5];
|
|
1378
|
+
logger.debug('Failed to get the user session', err);
|
|
1379
|
+
if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];
|
|
1380
|
+
_b.label = 1;
|
|
1381
|
+
case 1:
|
|
1382
|
+
_b.trys.push([1, 3, , 4]);
|
|
1383
|
+
return [4 /*yield*/, this.cleanUpInvalidSession(user)];
|
|
1384
|
+
case 2:
|
|
1385
|
+
_b.sent();
|
|
1386
|
+
return [3 /*break*/, 4];
|
|
1387
|
+
case 3:
|
|
1388
|
+
cleanUpError_5 = _b.sent();
|
|
1389
|
+
rej(new Error("Session is invalid due to: " + err.message + " and failed to clean up invalid session: " + cleanUpError_5.message));
|
|
1390
|
+
return [2 /*return*/];
|
|
1391
|
+
case 4:
|
|
1392
|
+
rej(err);
|
|
1393
|
+
return [2 /*return*/];
|
|
1394
|
+
case 5:
|
|
1244
1395
|
bypassCache = params ? params.bypassCache : false;
|
|
1245
|
-
if (!bypassCache) return [3 /*break*/,
|
|
1396
|
+
if (!bypassCache) return [3 /*break*/, 7];
|
|
1246
1397
|
return [4 /*yield*/, this.Credentials.clear()];
|
|
1247
|
-
case
|
|
1398
|
+
case 6:
|
|
1248
1399
|
_b.sent();
|
|
1249
|
-
_b.label =
|
|
1250
|
-
case
|
|
1400
|
+
_b.label = 7;
|
|
1401
|
+
case 7:
|
|
1251
1402
|
clientMetadata = this._config.clientMetadata;
|
|
1252
1403
|
_a = session.getAccessToken().decodePayload().scope, scope = _a === void 0 ? '' : _a;
|
|
1253
1404
|
if (scope.split(' ').includes(USER_ADMIN_SCOPE)) {
|
|
1254
|
-
user.getUserData(function (err, data) {
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1405
|
+
user.getUserData(function (err, data) { return __awaiter(_this, void 0, void 0, function () {
|
|
1406
|
+
var cleanUpError_6, preferredMFA, attributeList, i, attribute, userAttribute, attributes;
|
|
1407
|
+
return __generator(this, function (_a) {
|
|
1408
|
+
switch (_a.label) {
|
|
1409
|
+
case 0:
|
|
1410
|
+
if (!err) return [3 /*break*/, 7];
|
|
1411
|
+
logger.debug('getting user data failed', err);
|
|
1412
|
+
if (!this.isSessionInvalid(err)) return [3 /*break*/, 5];
|
|
1413
|
+
_a.label = 1;
|
|
1414
|
+
case 1:
|
|
1415
|
+
_a.trys.push([1, 3, , 4]);
|
|
1416
|
+
return [4 /*yield*/, this.cleanUpInvalidSession(user)];
|
|
1417
|
+
case 2:
|
|
1418
|
+
_a.sent();
|
|
1419
|
+
return [3 /*break*/, 4];
|
|
1420
|
+
case 3:
|
|
1421
|
+
cleanUpError_6 = _a.sent();
|
|
1422
|
+
rej(new Error("Session is invalid due to: " + err.message + " and failed to clean up invalid session: " + cleanUpError_6.message));
|
|
1423
|
+
return [2 /*return*/];
|
|
1424
|
+
case 4:
|
|
1425
|
+
rej(err);
|
|
1426
|
+
return [3 /*break*/, 6];
|
|
1427
|
+
case 5:
|
|
1428
|
+
res(user);
|
|
1429
|
+
_a.label = 6;
|
|
1430
|
+
case 6: return [2 /*return*/];
|
|
1431
|
+
case 7:
|
|
1432
|
+
preferredMFA = data.PreferredMfaSetting || 'NOMFA';
|
|
1433
|
+
attributeList = [];
|
|
1434
|
+
for (i = 0; i < data.UserAttributes.length; i++) {
|
|
1435
|
+
attribute = {
|
|
1436
|
+
Name: data.UserAttributes[i].Name,
|
|
1437
|
+
Value: data.UserAttributes[i].Value,
|
|
1438
|
+
};
|
|
1439
|
+
userAttribute = new CognitoUserAttribute(attribute);
|
|
1440
|
+
attributeList.push(userAttribute);
|
|
1441
|
+
}
|
|
1442
|
+
attributes = this.attributesToObject(attributeList);
|
|
1443
|
+
Object.assign(user, { attributes: attributes, preferredMFA: preferredMFA });
|
|
1444
|
+
return [2 /*return*/, res(user)];
|
|
1268
1445
|
}
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
var preferredMFA = data.PreferredMfaSetting || 'NOMFA';
|
|
1272
|
-
var attributeList = [];
|
|
1273
|
-
for (var i = 0; i < data.UserAttributes.length; i++) {
|
|
1274
|
-
var attribute = {
|
|
1275
|
-
Name: data.UserAttributes[i].Name,
|
|
1276
|
-
Value: data.UserAttributes[i].Value,
|
|
1277
|
-
};
|
|
1278
|
-
var userAttribute = new CognitoUserAttribute(attribute);
|
|
1279
|
-
attributeList.push(userAttribute);
|
|
1280
|
-
}
|
|
1281
|
-
var attributes = _this.attributesToObject(attributeList);
|
|
1282
|
-
Object.assign(user, { attributes: attributes, preferredMFA: preferredMFA });
|
|
1283
|
-
return res(user);
|
|
1284
|
-
}, { bypassCache: bypassCache, clientMetadata: clientMetadata });
|
|
1446
|
+
});
|
|
1447
|
+
}); }, { bypassCache: bypassCache, clientMetadata: clientMetadata });
|
|
1285
1448
|
}
|
|
1286
1449
|
else {
|
|
1287
1450
|
logger.debug("Unable to get the user data because the " + USER_ADMIN_SCOPE + " " +
|
|
@@ -1312,7 +1475,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1312
1475
|
*/
|
|
1313
1476
|
AuthClass.prototype.currentAuthenticatedUser = function (params) {
|
|
1314
1477
|
return __awaiter(this, void 0, void 0, function () {
|
|
1315
|
-
var federatedUser,
|
|
1478
|
+
var federatedUser, e_7, federatedInfo, user, e_8;
|
|
1316
1479
|
return __generator(this, function (_a) {
|
|
1317
1480
|
switch (_a.label) {
|
|
1318
1481
|
case 0:
|
|
@@ -1326,9 +1489,9 @@ var AuthClass = /** @class */ (function () {
|
|
|
1326
1489
|
_a.sent();
|
|
1327
1490
|
return [3 /*break*/, 4];
|
|
1328
1491
|
case 3:
|
|
1329
|
-
|
|
1330
|
-
logger.debug('Failed to sync cache info into memory',
|
|
1331
|
-
throw
|
|
1492
|
+
e_7 = _a.sent();
|
|
1493
|
+
logger.debug('Failed to sync cache info into memory', e_7);
|
|
1494
|
+
throw e_7;
|
|
1332
1495
|
case 4:
|
|
1333
1496
|
try {
|
|
1334
1497
|
federatedInfo = JSON.parse(this._storage.getItem('aws-amplify-federatedInfo'));
|
|
@@ -1354,12 +1517,12 @@ var AuthClass = /** @class */ (function () {
|
|
|
1354
1517
|
user = _a.sent();
|
|
1355
1518
|
return [3 /*break*/, 9];
|
|
1356
1519
|
case 8:
|
|
1357
|
-
|
|
1358
|
-
if (
|
|
1520
|
+
e_8 = _a.sent();
|
|
1521
|
+
if (e_8 === 'No userPool') {
|
|
1359
1522
|
logger.error('Cannot get the current user because the user pool is missing. ' +
|
|
1360
1523
|
'Please make sure the Auth module is configured with a valid Cognito User Pool ID');
|
|
1361
1524
|
}
|
|
1362
|
-
logger.debug('The user is not authenticated by the error',
|
|
1525
|
+
logger.debug('The user is not authenticated by the error', e_8);
|
|
1363
1526
|
return [2 /*return*/, Promise.reject('The user is not authenticated')];
|
|
1364
1527
|
case 9:
|
|
1365
1528
|
this.user = user;
|
|
@@ -1377,7 +1540,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1377
1540
|
logger.debug('Getting current session');
|
|
1378
1541
|
// Purposely not calling the reject method here because we don't need a console error
|
|
1379
1542
|
if (!this.userPool) {
|
|
1380
|
-
return
|
|
1543
|
+
return this.rejectNoUserPool();
|
|
1381
1544
|
}
|
|
1382
1545
|
return new Promise(function (res, rej) {
|
|
1383
1546
|
that
|
|
@@ -1408,25 +1571,43 @@ var AuthClass = /** @class */ (function () {
|
|
|
1408
1571
|
* @return - A promise resolves to the session
|
|
1409
1572
|
*/
|
|
1410
1573
|
AuthClass.prototype.userSession = function (user) {
|
|
1574
|
+
var _this = this;
|
|
1411
1575
|
if (!user) {
|
|
1412
1576
|
logger.debug('the user is null');
|
|
1413
1577
|
return this.rejectAuthError(AuthErrorTypes.NoUserSession);
|
|
1414
1578
|
}
|
|
1415
1579
|
var clientMetadata = this._config.clientMetadata; // TODO: verify behavior if this is override during signIn
|
|
1416
|
-
return new Promise(function (
|
|
1580
|
+
return new Promise(function (res, rej) {
|
|
1417
1581
|
logger.debug('Getting the session from this user:', user);
|
|
1418
|
-
user.getSession(function (err, session) {
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1582
|
+
user.getSession(function (err, session) { return __awaiter(_this, void 0, void 0, function () {
|
|
1583
|
+
var cleanUpError_7;
|
|
1584
|
+
return __generator(this, function (_a) {
|
|
1585
|
+
switch (_a.label) {
|
|
1586
|
+
case 0:
|
|
1587
|
+
if (!err) return [3 /*break*/, 5];
|
|
1588
|
+
logger.debug('Failed to get the session from user', user);
|
|
1589
|
+
if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];
|
|
1590
|
+
_a.label = 1;
|
|
1591
|
+
case 1:
|
|
1592
|
+
_a.trys.push([1, 3, , 4]);
|
|
1593
|
+
return [4 /*yield*/, this.cleanUpInvalidSession(user)];
|
|
1594
|
+
case 2:
|
|
1595
|
+
_a.sent();
|
|
1596
|
+
return [3 /*break*/, 4];
|
|
1597
|
+
case 3:
|
|
1598
|
+
cleanUpError_7 = _a.sent();
|
|
1599
|
+
rej(new Error("Session is invalid due to: " + err.message + " and failed to clean up invalid session: " + cleanUpError_7.message));
|
|
1600
|
+
return [2 /*return*/];
|
|
1601
|
+
case 4:
|
|
1602
|
+
rej(err);
|
|
1603
|
+
return [2 /*return*/];
|
|
1604
|
+
case 5:
|
|
1605
|
+
logger.debug('Succeed to get the user session', session);
|
|
1606
|
+
res(session);
|
|
1607
|
+
return [2 /*return*/];
|
|
1608
|
+
}
|
|
1609
|
+
});
|
|
1610
|
+
}); }, { clientMetadata: clientMetadata });
|
|
1430
1611
|
});
|
|
1431
1612
|
};
|
|
1432
1613
|
/**
|
|
@@ -1435,7 +1616,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1435
1616
|
*/
|
|
1436
1617
|
AuthClass.prototype.currentUserCredentials = function () {
|
|
1437
1618
|
return __awaiter(this, void 0, void 0, function () {
|
|
1438
|
-
var
|
|
1619
|
+
var e_9, federatedInfo;
|
|
1439
1620
|
var _this = this;
|
|
1440
1621
|
return __generator(this, function (_a) {
|
|
1441
1622
|
switch (_a.label) {
|
|
@@ -1449,9 +1630,9 @@ var AuthClass = /** @class */ (function () {
|
|
|
1449
1630
|
_a.sent();
|
|
1450
1631
|
return [3 /*break*/, 4];
|
|
1451
1632
|
case 3:
|
|
1452
|
-
|
|
1453
|
-
logger.debug('Failed to sync cache info into memory',
|
|
1454
|
-
throw
|
|
1633
|
+
e_9 = _a.sent();
|
|
1634
|
+
logger.debug('Failed to sync cache info into memory', e_9);
|
|
1635
|
+
throw e_9;
|
|
1455
1636
|
case 4:
|
|
1456
1637
|
federatedInfo = null;
|
|
1457
1638
|
try {
|
|
@@ -1470,8 +1651,8 @@ var AuthClass = /** @class */ (function () {
|
|
|
1470
1651
|
logger.debug('getting session success', session);
|
|
1471
1652
|
return _this.Credentials.set(session, 'session');
|
|
1472
1653
|
})
|
|
1473
|
-
.catch(function (
|
|
1474
|
-
logger.debug('getting
|
|
1654
|
+
.catch(function () {
|
|
1655
|
+
logger.debug('getting guest credentials');
|
|
1475
1656
|
return _this.Credentials.set(null, 'guest');
|
|
1476
1657
|
})];
|
|
1477
1658
|
}
|
|
@@ -1547,7 +1728,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1547
1728
|
};
|
|
1548
1729
|
AuthClass.prototype.cognitoIdentitySignOut = function (opts, user) {
|
|
1549
1730
|
return __awaiter(this, void 0, void 0, function () {
|
|
1550
|
-
var
|
|
1731
|
+
var e_10, isSignedInHostedUI;
|
|
1551
1732
|
var _this = this;
|
|
1552
1733
|
return __generator(this, function (_a) {
|
|
1553
1734
|
switch (_a.label) {
|
|
@@ -1558,9 +1739,9 @@ var AuthClass = /** @class */ (function () {
|
|
|
1558
1739
|
_a.sent();
|
|
1559
1740
|
return [3 /*break*/, 3];
|
|
1560
1741
|
case 2:
|
|
1561
|
-
|
|
1562
|
-
logger.debug('Failed to sync cache info into memory',
|
|
1563
|
-
throw
|
|
1742
|
+
e_10 = _a.sent();
|
|
1743
|
+
logger.debug('Failed to sync cache info into memory', e_10);
|
|
1744
|
+
throw e_10;
|
|
1564
1745
|
case 3:
|
|
1565
1746
|
isSignedInHostedUI = this._oAuthHandler &&
|
|
1566
1747
|
this._storage.getItem('amplify-signin-with-hostedUI') === 'true';
|
|
@@ -1570,27 +1751,47 @@ var AuthClass = /** @class */ (function () {
|
|
|
1570
1751
|
// in order to use global signout
|
|
1571
1752
|
// we must validate the user as an authenticated user by using getSession
|
|
1572
1753
|
var clientMetadata = _this._config.clientMetadata; // TODO: verify behavior if this is override during signIn
|
|
1573
|
-
user.getSession(function (err, result) {
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
return
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1754
|
+
user.getSession(function (err, result) { return __awaiter(_this, void 0, void 0, function () {
|
|
1755
|
+
var cleanUpError_8;
|
|
1756
|
+
var _this = this;
|
|
1757
|
+
return __generator(this, function (_a) {
|
|
1758
|
+
switch (_a.label) {
|
|
1759
|
+
case 0:
|
|
1760
|
+
if (!err) return [3 /*break*/, 5];
|
|
1761
|
+
logger.debug('failed to get the user session', err);
|
|
1762
|
+
if (!this.isSessionInvalid(err)) return [3 /*break*/, 4];
|
|
1763
|
+
_a.label = 1;
|
|
1764
|
+
case 1:
|
|
1765
|
+
_a.trys.push([1, 3, , 4]);
|
|
1766
|
+
return [4 /*yield*/, this.cleanUpInvalidSession(user)];
|
|
1767
|
+
case 2:
|
|
1768
|
+
_a.sent();
|
|
1769
|
+
return [3 /*break*/, 4];
|
|
1770
|
+
case 3:
|
|
1771
|
+
cleanUpError_8 = _a.sent();
|
|
1772
|
+
rej(new Error("Session is invalid due to: " + err.message + " and failed to clean up invalid session: " + cleanUpError_8.message));
|
|
1773
|
+
return [2 /*return*/];
|
|
1774
|
+
case 4: return [2 /*return*/, rej(err)];
|
|
1775
|
+
case 5:
|
|
1776
|
+
user.globalSignOut({
|
|
1777
|
+
onSuccess: function (data) {
|
|
1778
|
+
logger.debug('global sign out success');
|
|
1779
|
+
if (isSignedInHostedUI) {
|
|
1780
|
+
_this.oAuthSignOutRedirect(res, rej);
|
|
1781
|
+
}
|
|
1782
|
+
else {
|
|
1783
|
+
return res();
|
|
1784
|
+
}
|
|
1785
|
+
},
|
|
1786
|
+
onFailure: function (err) {
|
|
1787
|
+
logger.debug('global sign out failed', err);
|
|
1788
|
+
return rej(err);
|
|
1789
|
+
},
|
|
1790
|
+
});
|
|
1791
|
+
return [2 /*return*/];
|
|
1792
|
+
}
|
|
1592
1793
|
});
|
|
1593
|
-
}, { clientMetadata: clientMetadata });
|
|
1794
|
+
}); }, { clientMetadata: clientMetadata });
|
|
1594
1795
|
}
|
|
1595
1796
|
else {
|
|
1596
1797
|
logger.debug('user sign out', user);
|
|
@@ -1624,7 +1825,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1624
1825
|
AuthClass.prototype.oAuthSignOutRedirectOrReject = function (reject) {
|
|
1625
1826
|
this._oAuthHandler.signOut(); // this method redirects url
|
|
1626
1827
|
// App should be redirected to another url otherwise it will reject
|
|
1627
|
-
setTimeout(function () { return reject('Signout timeout fail'); }, 3000);
|
|
1828
|
+
setTimeout(function () { return reject(Error('Signout timeout fail')); }, 3000);
|
|
1628
1829
|
};
|
|
1629
1830
|
/**
|
|
1630
1831
|
* Sign out method
|
|
@@ -1633,7 +1834,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1633
1834
|
*/
|
|
1634
1835
|
AuthClass.prototype.signOut = function (opts) {
|
|
1635
1836
|
return __awaiter(this, void 0, void 0, function () {
|
|
1636
|
-
var
|
|
1837
|
+
var e_11, user;
|
|
1637
1838
|
return __generator(this, function (_a) {
|
|
1638
1839
|
switch (_a.label) {
|
|
1639
1840
|
case 0:
|
|
@@ -1643,7 +1844,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1643
1844
|
_a.sent();
|
|
1644
1845
|
return [3 /*break*/, 3];
|
|
1645
1846
|
case 2:
|
|
1646
|
-
|
|
1847
|
+
e_11 = _a.sent();
|
|
1647
1848
|
logger.debug('failed to clear cached items');
|
|
1648
1849
|
return [3 /*break*/, 3];
|
|
1649
1850
|
case 3:
|
|
@@ -1659,7 +1860,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1659
1860
|
_a.label = 6;
|
|
1660
1861
|
case 6: return [3 /*break*/, 8];
|
|
1661
1862
|
case 7:
|
|
1662
|
-
logger.debug('no
|
|
1863
|
+
logger.debug('no Cognito User pool');
|
|
1663
1864
|
_a.label = 8;
|
|
1664
1865
|
case 8:
|
|
1665
1866
|
/**
|
|
@@ -1792,7 +1993,7 @@ var AuthClass = /** @class */ (function () {
|
|
|
1792
1993
|
*/
|
|
1793
1994
|
AuthClass.prototype.currentUserInfo = function () {
|
|
1794
1995
|
return __awaiter(this, void 0, void 0, function () {
|
|
1795
|
-
var source, user, attributes, userAttrs, credentials,
|
|
1996
|
+
var source, user, attributes, userAttrs, credentials, e_12, info, err_1, user;
|
|
1796
1997
|
return __generator(this, function (_a) {
|
|
1797
1998
|
switch (_a.label) {
|
|
1798
1999
|
case 0:
|
|
@@ -1822,8 +2023,8 @@ var AuthClass = /** @class */ (function () {
|
|
|
1822
2023
|
credentials = _a.sent();
|
|
1823
2024
|
return [3 /*break*/, 7];
|
|
1824
2025
|
case 6:
|
|
1825
|
-
|
|
1826
|
-
logger.debug('Failed to retrieve credentials while getting current user info',
|
|
2026
|
+
e_12 = _a.sent();
|
|
2027
|
+
logger.debug('Failed to retrieve credentials while getting current user info', e_12);
|
|
1827
2028
|
return [3 /*break*/, 7];
|
|
1828
2029
|
case 7:
|
|
1829
2030
|
info = {
|