@aws-amplify/auth 4.5.8 → 4.5.9-auto-sign-in.10

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.
@@ -10710,6 +10710,7 @@ var dispatchAuthEvent = function dispatchAuthEvent(event, data, message) {
10710
10710
 
10711
10711
 
10712
10712
  var MAX_DEVICES = 60;
10713
+ var MAX_AUTOSIGNIN_POLLING_MS = 3 * 60 * 1000;
10713
10714
  /**
10714
10715
  * Provide authentication steps
10715
10716
  */
@@ -10727,6 +10728,7 @@ function () {
10727
10728
  this.userPool = null;
10728
10729
  this.user = null;
10729
10730
  this.oAuthFlowInProgress = false;
10731
+ this.autoSignInInitiated = false;
10730
10732
  this.Credentials = _aws_amplify_core__WEBPACK_IMPORTED_MODULE_1__["Credentials"];
10731
10733
 
10732
10734
  this.wrapRefreshSessionCallback = function (callback) {
@@ -10872,6 +10874,17 @@ function () {
10872
10874
  }
10873
10875
 
10874
10876
  dispatchAuthEvent('configured', null, "The Auth category has been configured successfully");
10877
+
10878
+ if (!this.autoSignInInitiated && typeof this._storage['getItem'] === 'function') {
10879
+ var pollingInitiated = this.isTrueStorageValue('amplify-polling-started');
10880
+
10881
+ if (pollingInitiated) {
10882
+ dispatchAuthEvent('autoSignIn_failure', null, _types_Auth__WEBPACK_IMPORTED_MODULE_7__["AuthErrorTypes"].AutoSignInError);
10883
+ }
10884
+
10885
+ this._storage.removeItem('amplify-polling-started');
10886
+ }
10887
+
10875
10888
  return this._config;
10876
10889
  };
10877
10890
  /**
@@ -10891,6 +10904,8 @@ function () {
10891
10904
  restOfAttrs[_i - 1] = arguments[_i];
10892
10905
  }
10893
10906
 
10907
+ var _a, _b, _c;
10908
+
10894
10909
  if (!this.userPool) {
10895
10910
  return this.rejectNoUserPool();
10896
10911
  }
@@ -10900,6 +10915,11 @@ function () {
10900
10915
  var attributes = [];
10901
10916
  var validationData = null;
10902
10917
  var clientMetadata;
10918
+ var autoSignIn = {
10919
+ enabled: false
10920
+ };
10921
+ var autoSignInValidationData = {};
10922
+ var autoSignInClientMetaData = {};
10903
10923
 
10904
10924
  if (params && typeof params === 'string') {
10905
10925
  username = params;
@@ -10946,6 +10966,17 @@ function () {
10946
10966
  }));
10947
10967
  });
10948
10968
  }
10969
+
10970
+ autoSignIn = (_a = params.autoSignIn) !== null && _a !== void 0 ? _a : {
10971
+ enabled: false
10972
+ };
10973
+
10974
+ if (autoSignIn.enabled) {
10975
+ this._storage.setItem('amplify-auto-sign-in', true);
10976
+
10977
+ autoSignInValidationData = (_b = autoSignIn.validationData) !== null && _b !== void 0 ? _b : {};
10978
+ autoSignInClientMetaData = (_c = autoSignIn.clientMetaData) !== null && _c !== void 0 ? _c : {};
10979
+ }
10949
10980
  } else {
10950
10981
  return this.rejectAuthError(_types_Auth__WEBPACK_IMPORTED_MODULE_7__["AuthErrorTypes"].SignUpError);
10951
10982
  }
@@ -10967,11 +10998,122 @@ function () {
10967
10998
  reject(err);
10968
10999
  } else {
10969
11000
  dispatchAuthEvent('signUp', data, username + " has signed up successfully");
11001
+
11002
+ if (autoSignIn.enabled) {
11003
+ _this.handleAutoSignIn(username, password, autoSignInValidationData, autoSignInClientMetaData, data);
11004
+ }
11005
+
10970
11006
  resolve(data);
10971
11007
  }
10972
11008
  }, clientMetadata);
10973
11009
  });
10974
11010
  };
11011
+
11012
+ AuthClass.prototype.handleAutoSignIn = function (username, password, validationData, clientMetadata, data) {
11013
+ this.autoSignInInitiated = true;
11014
+ var authDetails = new amazon_cognito_identity_js__WEBPACK_IMPORTED_MODULE_2__["AuthenticationDetails"]({
11015
+ Username: username,
11016
+ Password: password,
11017
+ ValidationData: validationData,
11018
+ ClientMetadata: clientMetadata
11019
+ });
11020
+
11021
+ if (data.userConfirmed) {
11022
+ this.signInAfterUserConfirmed(authDetails);
11023
+ } else if (this._config.signUpVerificationMethod === 'link') {
11024
+ this.handleLinkAutoSignIn(authDetails);
11025
+ } else {
11026
+ this.handleCodeAutoSignIn(authDetails);
11027
+ }
11028
+ };
11029
+
11030
+ AuthClass.prototype.handleCodeAutoSignIn = function (authDetails) {
11031
+ var _this = this;
11032
+
11033
+ var listenEvent = function listenEvent(_a) {
11034
+ var payload = _a.payload;
11035
+
11036
+ if (payload.event === 'confirmSignUp') {
11037
+ _this.signInAfterUserConfirmed(authDetails, listenEvent);
11038
+ }
11039
+ };
11040
+
11041
+ _aws_amplify_core__WEBPACK_IMPORTED_MODULE_1__["Hub"].listen('auth', listenEvent);
11042
+ };
11043
+
11044
+ AuthClass.prototype.handleLinkAutoSignIn = function (authDetails) {
11045
+ var _this = this;
11046
+
11047
+ this._storage.setItem('amplify-polling-started', true);
11048
+
11049
+ var start = Date.now();
11050
+ var autoSignInPollingIntervalId = setInterval(function () {
11051
+ if (Date.now() - start > MAX_AUTOSIGNIN_POLLING_MS) {
11052
+ clearInterval(autoSignInPollingIntervalId);
11053
+ dispatchAuthEvent('autoSignIn_failure', null, 'Please confirm your account and use your credentials to sign in.');
11054
+ } else {
11055
+ _this.signInAfterUserConfirmed(authDetails, null, autoSignInPollingIntervalId);
11056
+ }
11057
+ }, 5000);
11058
+ };
11059
+
11060
+ AuthClass.prototype.signInAfterUserConfirmed = function (authDetails, listenEvent, autoSignInPollingIntervalId) {
11061
+ return __awaiter(this, void 0, void 0, function () {
11062
+ var user, error_1;
11063
+
11064
+ var _this = this;
11065
+
11066
+ return __generator(this, function (_a) {
11067
+ switch (_a.label) {
11068
+ case 0:
11069
+ user = this.createCognitoUser(authDetails.getUsername());
11070
+ _a.label = 1;
11071
+
11072
+ case 1:
11073
+ _a.trys.push([1, 3,, 4]);
11074
+
11075
+ return [4
11076
+ /*yield*/
11077
+ , user.authenticateUser(authDetails, this.authCallbacks(user, function (value) {
11078
+ dispatchAuthEvent('autoSignIn', value, authDetails.getUsername() + " has signed in successfully");
11079
+
11080
+ if (listenEvent) {
11081
+ _aws_amplify_core__WEBPACK_IMPORTED_MODULE_1__["Hub"].remove('auth', listenEvent);
11082
+ }
11083
+
11084
+ if (autoSignInPollingIntervalId) {
11085
+ clearInterval(autoSignInPollingIntervalId);
11086
+
11087
+ _this._storage.removeItem('amplify-polling-started');
11088
+ }
11089
+
11090
+ _this._storage.removeItem('amplify-auto-sign-in');
11091
+ }, function (error) {
11092
+ logger.error(error);
11093
+ }))];
11094
+
11095
+ case 2:
11096
+ _a.sent();
11097
+
11098
+ return [3
11099
+ /*break*/
11100
+ , 4];
11101
+
11102
+ case 3:
11103
+ error_1 = _a.sent();
11104
+ logger.error(error_1);
11105
+ return [3
11106
+ /*break*/
11107
+ , 4];
11108
+
11109
+ case 4:
11110
+ return [2
11111
+ /*return*/
11112
+ ];
11113
+ }
11114
+ });
11115
+ });
11116
+ };
10975
11117
  /**
10976
11118
  * Send the verification code to confirm sign up
10977
11119
  * @param {String} username - The username to be confirmed
@@ -10982,6 +11124,8 @@ function () {
10982
11124
 
10983
11125
 
10984
11126
  AuthClass.prototype.confirmSignUp = function (username, code, options) {
11127
+ var _this = this;
11128
+
10985
11129
  if (!this.userPool) {
10986
11130
  return this.rejectNoUserPool();
10987
11131
  }
@@ -11009,11 +11153,25 @@ function () {
11009
11153
  if (err) {
11010
11154
  reject(err);
11011
11155
  } else {
11156
+ dispatchAuthEvent('confirmSignUp', data, username + " has been confirmed successfully");
11157
+
11158
+ var autoSignIn = _this.isTrueStorageValue('amplify-auto-sign-in');
11159
+
11160
+ if (autoSignIn && !_this.autoSignInInitiated) {
11161
+ dispatchAuthEvent('autoSignIn_failure', null, _types_Auth__WEBPACK_IMPORTED_MODULE_7__["AuthErrorTypes"].AutoSignInError);
11162
+ }
11163
+
11012
11164
  resolve(data);
11013
11165
  }
11014
11166
  }, clientMetadata);
11015
11167
  });
11016
11168
  };
11169
+
11170
+ AuthClass.prototype.isTrueStorageValue = function (value) {
11171
+ var item = this._storage.getItem(value);
11172
+
11173
+ return item ? item === 'true' : false;
11174
+ };
11017
11175
  /**
11018
11176
  * Resend the verification code
11019
11177
  * @param {String} username - The username to be confirmed
@@ -13056,7 +13214,7 @@ function () {
13056
13214
  };
13057
13215
 
13058
13216
  AuthClass.prototype.oAuthSignOutRedirect = function (resolve, reject) {
13059
- var isBrowser = _aws_amplify_core__WEBPACK_IMPORTED_MODULE_1__["JS"].browserOrNode().isBrowser;
13217
+ var isBrowser = Object(_aws_amplify_core__WEBPACK_IMPORTED_MODULE_1__["browserOrNode"])().isBrowser;
13060
13218
 
13061
13219
  if (isBrowser) {
13062
13220
  this.oAuthSignOutRedirectOrReject(reject);
@@ -13514,7 +13672,7 @@ function () {
13514
13672
  dispatchAuthEvent('parsingCallbackUrl', {
13515
13673
  url: URL
13516
13674
  }, "The callback url is being parsed");
13517
- currentUrl = URL || (_aws_amplify_core__WEBPACK_IMPORTED_MODULE_1__["JS"].browserOrNode().isBrowser ? window.location.href : '');
13675
+ currentUrl = URL || (Object(_aws_amplify_core__WEBPACK_IMPORTED_MODULE_1__["browserOrNode"])().isBrowser ? window.location.href : '');
13518
13676
  hasCodeOrError = !!(Object(url__WEBPACK_IMPORTED_MODULE_3__["parse"])(currentUrl).query || '').split('&').map(function (entry) {
13519
13677
  return entry.split('=');
13520
13678
  }).find(function (_a) {
@@ -13711,7 +13869,7 @@ function () {
13711
13869
 
13712
13870
  AuthClass.prototype.rememberDevice = function () {
13713
13871
  return __awaiter(this, void 0, void 0, function () {
13714
- var currUser, error_1;
13872
+ var currUser, error_2;
13715
13873
  return __generator(this, function (_a) {
13716
13874
  switch (_a.label) {
13717
13875
  case 0:
@@ -13728,8 +13886,8 @@ function () {
13728
13886
  , 3];
13729
13887
 
13730
13888
  case 2:
13731
- error_1 = _a.sent();
13732
- logger.debug('The user is not authenticated by the error', error_1);
13889
+ error_2 = _a.sent();
13890
+ logger.debug('The user is not authenticated by the error', error_2);
13733
13891
  return [2
13734
13892
  /*return*/
13735
13893
  , Promise.reject('The user is not authenticated')];
@@ -13761,7 +13919,7 @@ function () {
13761
13919
 
13762
13920
  AuthClass.prototype.forgetDevice = function () {
13763
13921
  return __awaiter(this, void 0, void 0, function () {
13764
- var currUser, error_2;
13922
+ var currUser, error_3;
13765
13923
  return __generator(this, function (_a) {
13766
13924
  switch (_a.label) {
13767
13925
  case 0:
@@ -13778,8 +13936,8 @@ function () {
13778
13936
  , 3];
13779
13937
 
13780
13938
  case 2:
13781
- error_2 = _a.sent();
13782
- logger.debug('The user is not authenticated by the error', error_2);
13939
+ error_3 = _a.sent();
13940
+ logger.debug('The user is not authenticated by the error', error_3);
13783
13941
  return [2
13784
13942
  /*return*/
13785
13943
  , Promise.reject('The user is not authenticated')];
@@ -13811,7 +13969,7 @@ function () {
13811
13969
 
13812
13970
  AuthClass.prototype.fetchDevices = function () {
13813
13971
  return __awaiter(this, void 0, void 0, function () {
13814
- var currUser, error_3;
13972
+ var currUser, error_4;
13815
13973
  return __generator(this, function (_a) {
13816
13974
  switch (_a.label) {
13817
13975
  case 0:
@@ -13828,8 +13986,8 @@ function () {
13828
13986
  , 3];
13829
13987
 
13830
13988
  case 2:
13831
- error_3 = _a.sent();
13832
- logger.debug('The user is not authenticated by the error', error_3);
13989
+ error_4 = _a.sent();
13990
+ logger.debug('The user is not authenticated by the error', error_4);
13833
13991
  throw new Error('The user is not authenticated');
13834
13992
 
13835
13993
  case 3:
@@ -14026,6 +14184,9 @@ var authErrorMessages = {
14026
14184
  networkError: {
14027
14185
  message: _common_AuthErrorStrings__WEBPACK_IMPORTED_MODULE_1__["AuthErrorStrings"].NETWORK_ERROR
14028
14186
  },
14187
+ autoSignInError: {
14188
+ message: _common_AuthErrorStrings__WEBPACK_IMPORTED_MODULE_1__["AuthErrorStrings"].AUTOSIGNIN_ERROR
14189
+ },
14029
14190
  "default": {
14030
14191
  message: _common_AuthErrorStrings__WEBPACK_IMPORTED_MODULE_1__["AuthErrorStrings"].DEFAULT_MSG
14031
14192
  }
@@ -14753,6 +14914,7 @@ var AuthErrorStrings;
14753
14914
  AuthErrorStrings["NO_USER_SESSION"] = "Failed to get the session because the user is empty";
14754
14915
  AuthErrorStrings["NETWORK_ERROR"] = "Network Error";
14755
14916
  AuthErrorStrings["DEVICE_CONFIG"] = "Device tracking has not been configured in this User Pool";
14917
+ AuthErrorStrings["AUTOSIGNIN_ERROR"] = "Please use your credentials to sign in";
14756
14918
  })(AuthErrorStrings || (AuthErrorStrings = {}));
14757
14919
 
14758
14920
  /***/ }),
@@ -14886,6 +15048,7 @@ var AuthErrorTypes;
14886
15048
  AuthErrorTypes["Default"] = "default";
14887
15049
  AuthErrorTypes["DeviceConfig"] = "deviceConfig";
14888
15050
  AuthErrorTypes["NetworkError"] = "networkError";
15051
+ AuthErrorTypes["AutoSignInError"] = "autoSignInError";
14889
15052
  })(AuthErrorTypes || (AuthErrorTypes = {}));
14890
15053
 
14891
15054
  function isUsernamePasswordOpts(obj) {
@@ -14970,12 +15133,12 @@ __webpack_require__.r(__webpack_exports__);
14970
15133
  */
14971
15134
 
14972
15135
  /* harmony default export */ __webpack_exports__["default"] = (function (callback) {
14973
- if (_aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__["JS"].browserOrNode().isBrowser && window.location) {
15136
+ if (Object(_aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__["browserOrNode"])().isBrowser && window.location) {
14974
15137
  var url = window.location.href;
14975
15138
  callback({
14976
15139
  url: url
14977
15140
  });
14978
- } else if (_aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__["JS"].browserOrNode().isNode) {
15141
+ } else if (Object(_aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__["browserOrNode"])().isNode) {
14979
15142
  // continue building on ssr
14980
15143
  (function () {}); // noop
14981
15144