@aws-amplify/auth 6.17.3-unstable.a361dd1.0 → 6.18.0

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.
@@ -37,6 +37,18 @@ async function handleUserAuthFlow({ username, clientMetadata, config, tokenOrche
37
37
  });
38
38
  const authParameters = { USERNAME: username };
39
39
  if (preferredChallenge) {
40
+ // Validate that the preferred challenge is enabled in the backend config
41
+ // Only validate if passwordless config exists (for backward compatibility)
42
+ if (config.passwordless) {
43
+ const isInvalidChallenge = (preferredChallenge === 'EMAIL_OTP' &&
44
+ !config.passwordless.emailOtpEnabled) ||
45
+ (preferredChallenge === 'SMS_OTP' &&
46
+ !config.passwordless.smsOtpEnabled) ||
47
+ (preferredChallenge === 'WEB_AUTHN' && !config.passwordless.webAuthn);
48
+ if (isInvalidChallenge) {
49
+ (0, assertValidationError_1.assertValidationError)(false, validation_1.AuthValidationErrorCode.InvalidPreferredChallenge);
50
+ }
51
+ }
40
52
  if (preferredChallenge === 'PASSWORD_SRP') {
41
53
  (0, assertValidationError_1.assertValidationError)(!!password, validation_1.AuthValidationErrorCode.EmptySignInPassword);
42
54
  return (0, handlePasswordSRP_1.handlePasswordSRP)({
@@ -1 +1 @@
1
- {"version":3,"file":"handleUserAuthFlow.js","sources":["../../../../../src/client/flows/userAuth/handleUserAuthFlow.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.handleUserAuthFlow = handleUserAuthFlow;\nconst utils_1 = require(\"@aws-amplify/core/internals/utils\");\nconst userContextData_1 = require(\"../../../providers/cognito/utils/userContextData\");\nconst cognitoIdentityProvider_1 = require(\"../../../foundation/factories/serviceClients/cognitoIdentityProvider\");\nconst factories_1 = require(\"../../../providers/cognito/factories\");\nconst parsers_1 = require(\"../../../foundation/parsers\");\nconst utils_2 = require(\"../../../utils\");\nconst handlePasswordSRP_1 = require(\"../shared/handlePasswordSRP\");\nconst assertValidationError_1 = require(\"../../../errors/utils/assertValidationError\");\nconst validation_1 = require(\"../../../errors/types/validation\");\nconst setActiveSignInUsername_1 = require(\"../../../providers/cognito/utils/setActiveSignInUsername\");\n/**\n * Handles user authentication flow with configurable challenge preferences.\n * Supports AuthFactorType challenges through the USER_AUTH flow.\n *\n * @param {HandleUserAuthFlowInput} params - Authentication flow parameters\n * @param {string} params.username - The username for authentication\n * @param {Record<string, string>} [params.clientMetadata] - Optional metadata to pass to authentication service\n * @param {CognitoUserPoolConfig} params.config - Cognito User Pool configuration\n * @param {AuthTokenOrchestrator} params.tokenOrchestrator - Manages authentication tokens and device tracking\n * @param {AuthFactorType} [params.preferredChallenge] - Optional preferred authentication method\n * @param {string} [params.password] - Required when preferredChallenge is 'PASSWORD' or 'PASSWORD_SRP'\n *\n * @returns {Promise<InitiateAuthCommandOutput>} The authentication response from Cognito\n */\nasync function handleUserAuthFlow({ username, clientMetadata, config, tokenOrchestrator, preferredChallenge, password, session, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const UserContextData = (0, userContextData_1.getUserContextData)({\n username,\n userPoolId,\n userPoolClientId,\n });\n const authParameters = { USERNAME: username };\n if (preferredChallenge) {\n if (preferredChallenge === 'PASSWORD_SRP') {\n (0, assertValidationError_1.assertValidationError)(!!password, validation_1.AuthValidationErrorCode.EmptySignInPassword);\n return (0, handlePasswordSRP_1.handlePasswordSRP)({\n username,\n password,\n clientMetadata,\n config,\n tokenOrchestrator,\n authFlow: 'USER_AUTH',\n preferredChallenge,\n });\n }\n if (preferredChallenge === 'PASSWORD') {\n (0, assertValidationError_1.assertValidationError)(!!password, validation_1.AuthValidationErrorCode.EmptySignInPassword);\n authParameters.PASSWORD = password;\n }\n authParameters.PREFERRED_CHALLENGE = preferredChallenge;\n }\n const jsonReq = {\n AuthFlow: 'USER_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n if (session) {\n jsonReq.Session = session;\n }\n const initiateAuth = (0, cognitoIdentityProvider_1.createInitiateAuthClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const response = await initiateAuth({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.SignIn),\n }, jsonReq);\n // Set the active username immediately after successful authentication attempt\n // If a user starts a new sign-in while another sign-in is incomplete,\n // this ensures we're tracking the correct user for subsequent auth challenges.\n (0, setActiveSignInUsername_1.setActiveSignInUsername)(username);\n return response;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handleUserAuthFlow.js","sources":["../../../../../src/client/flows/userAuth/handleUserAuthFlow.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.handleUserAuthFlow = handleUserAuthFlow;\nconst utils_1 = require(\"@aws-amplify/core/internals/utils\");\nconst userContextData_1 = require(\"../../../providers/cognito/utils/userContextData\");\nconst cognitoIdentityProvider_1 = require(\"../../../foundation/factories/serviceClients/cognitoIdentityProvider\");\nconst factories_1 = require(\"../../../providers/cognito/factories\");\nconst parsers_1 = require(\"../../../foundation/parsers\");\nconst utils_2 = require(\"../../../utils\");\nconst handlePasswordSRP_1 = require(\"../shared/handlePasswordSRP\");\nconst assertValidationError_1 = require(\"../../../errors/utils/assertValidationError\");\nconst validation_1 = require(\"../../../errors/types/validation\");\nconst setActiveSignInUsername_1 = require(\"../../../providers/cognito/utils/setActiveSignInUsername\");\n/**\n * Handles user authentication flow with configurable challenge preferences.\n * Supports AuthFactorType challenges through the USER_AUTH flow.\n *\n * @param {HandleUserAuthFlowInput} params - Authentication flow parameters\n * @param {string} params.username - The username for authentication\n * @param {Record<string, string>} [params.clientMetadata] - Optional metadata to pass to authentication service\n * @param {CognitoUserPoolConfig} params.config - Cognito User Pool configuration\n * @param {AuthTokenOrchestrator} params.tokenOrchestrator - Manages authentication tokens and device tracking\n * @param {AuthFactorType} [params.preferredChallenge] - Optional preferred authentication method\n * @param {string} [params.password] - Required when preferredChallenge is 'PASSWORD' or 'PASSWORD_SRP'\n *\n * @returns {Promise<InitiateAuthCommandOutput>} The authentication response from Cognito\n */\nasync function handleUserAuthFlow({ username, clientMetadata, config, tokenOrchestrator, preferredChallenge, password, session, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const UserContextData = (0, userContextData_1.getUserContextData)({\n username,\n userPoolId,\n userPoolClientId,\n });\n const authParameters = { USERNAME: username };\n if (preferredChallenge) {\n // Validate that the preferred challenge is enabled in the backend config\n // Only validate if passwordless config exists (for backward compatibility)\n if (config.passwordless) {\n const isInvalidChallenge = (preferredChallenge === 'EMAIL_OTP' &&\n !config.passwordless.emailOtpEnabled) ||\n (preferredChallenge === 'SMS_OTP' &&\n !config.passwordless.smsOtpEnabled) ||\n (preferredChallenge === 'WEB_AUTHN' && !config.passwordless.webAuthn);\n if (isInvalidChallenge) {\n (0, assertValidationError_1.assertValidationError)(false, validation_1.AuthValidationErrorCode.InvalidPreferredChallenge);\n }\n }\n if (preferredChallenge === 'PASSWORD_SRP') {\n (0, assertValidationError_1.assertValidationError)(!!password, validation_1.AuthValidationErrorCode.EmptySignInPassword);\n return (0, handlePasswordSRP_1.handlePasswordSRP)({\n username,\n password,\n clientMetadata,\n config,\n tokenOrchestrator,\n authFlow: 'USER_AUTH',\n preferredChallenge,\n });\n }\n if (preferredChallenge === 'PASSWORD') {\n (0, assertValidationError_1.assertValidationError)(!!password, validation_1.AuthValidationErrorCode.EmptySignInPassword);\n authParameters.PASSWORD = password;\n }\n authParameters.PREFERRED_CHALLENGE = preferredChallenge;\n }\n const jsonReq = {\n AuthFlow: 'USER_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n if (session) {\n jsonReq.Session = session;\n }\n const initiateAuth = (0, cognitoIdentityProvider_1.createInitiateAuthClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const response = await initiateAuth({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.SignIn),\n }, jsonReq);\n // Set the active username immediately after successful authentication attempt\n // If a user starts a new sign-in while another sign-in is incomplete,\n // this ensures we're tracking the correct user for subsequent auth challenges.\n (0, setActiveSignInUsername_1.setActiveSignInUsername)(username);\n return response;\n}\n"],"names":[],"mappings":"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"}
@@ -59,6 +59,10 @@ exports.validationErrorMap = {
59
59
  [validation_1.AuthValidationErrorCode.EmptyConfirmUserAttributeCode]: {
60
60
  message: 'confirmation code is required to confirmUserAttribute',
61
61
  },
62
+ [validation_1.AuthValidationErrorCode.InvalidPreferredChallenge]: {
63
+ message: 'The preferred challenge is not enabled in your backend configuration',
64
+ recoverySuggestion: 'Ensure the authentication method is enabled in your Amplify backend configuration',
65
+ },
62
66
  };
63
67
  // TODO: delete this code when the Auth class is removed.
64
68
  var AuthErrorStrings;
@@ -1 +1 @@
1
- {"version":3,"file":"AuthErrorStrings.js","sources":["../../../src/common/AuthErrorStrings.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AuthErrorCodes = exports.AuthErrorStrings = exports.validationErrorMap = void 0;\nconst validation_1 = require(\"../errors/types/validation\");\nexports.validationErrorMap = {\n [validation_1.AuthValidationErrorCode.EmptyChallengeResponse]: {\n message: 'challengeResponse is required to confirmSignIn',\n },\n [validation_1.AuthValidationErrorCode.EmptyConfirmResetPasswordUsername]: {\n message: 'username is required to confirmResetPassword',\n },\n [validation_1.AuthValidationErrorCode.EmptyConfirmSignUpCode]: {\n message: 'code is required to confirmSignUp',\n },\n [validation_1.AuthValidationErrorCode.EmptyConfirmSignUpUsername]: {\n message: 'username is required to confirmSignUp',\n },\n [validation_1.AuthValidationErrorCode.EmptyConfirmResetPasswordConfirmationCode]: {\n message: 'confirmationCode is required to confirmResetPassword',\n },\n [validation_1.AuthValidationErrorCode.EmptyConfirmResetPasswordNewPassword]: {\n message: 'newPassword is required to confirmResetPassword',\n },\n [validation_1.AuthValidationErrorCode.EmptyResendSignUpCodeUsername]: {\n message: 'username is required to confirmSignUp',\n },\n [validation_1.AuthValidationErrorCode.EmptyResetPasswordUsername]: {\n message: 'username is required to resetPassword',\n },\n [validation_1.AuthValidationErrorCode.EmptySignInPassword]: {\n message: 'password is required to signIn',\n },\n [validation_1.AuthValidationErrorCode.EmptySignInUsername]: {\n message: 'username is required to signIn',\n },\n [validation_1.AuthValidationErrorCode.EmptySignUpPassword]: {\n message: 'password is required to signUp',\n },\n [validation_1.AuthValidationErrorCode.EmptySignUpUsername]: {\n message: 'username is required to signUp',\n },\n [validation_1.AuthValidationErrorCode.CustomAuthSignInPassword]: {\n message: 'A password is not needed when signing in with CUSTOM_WITHOUT_SRP',\n recoverySuggestion: 'Do not include a password in your signIn call.',\n },\n [validation_1.AuthValidationErrorCode.IncorrectMFAMethod]: {\n message: 'Incorrect MFA method was chosen. It should be either SMS, TOTP, or EMAIL',\n recoverySuggestion: 'Try to pass SMS, TOTP, or EMAIL as the challengeResponse',\n },\n [validation_1.AuthValidationErrorCode.EmptyVerifyTOTPSetupCode]: {\n message: 'code is required to verifyTotpSetup',\n },\n [validation_1.AuthValidationErrorCode.EmptyUpdatePassword]: {\n message: 'oldPassword and newPassword are required to changePassword',\n },\n [validation_1.AuthValidationErrorCode.EmptyConfirmUserAttributeCode]: {\n message: 'confirmation code is required to confirmUserAttribute',\n },\n};\n// TODO: delete this code when the Auth class is removed.\nvar AuthErrorStrings;\n(function (AuthErrorStrings) {\n AuthErrorStrings[\"DEFAULT_MSG\"] = \"Authentication Error\";\n AuthErrorStrings[\"EMPTY_EMAIL\"] = \"Email cannot be empty\";\n AuthErrorStrings[\"EMPTY_PHONE\"] = \"Phone number cannot be empty\";\n AuthErrorStrings[\"EMPTY_USERNAME\"] = \"Username cannot be empty\";\n AuthErrorStrings[\"INVALID_USERNAME\"] = \"The username should either be a string or one of the sign in types\";\n AuthErrorStrings[\"EMPTY_PASSWORD\"] = \"Password cannot be empty\";\n AuthErrorStrings[\"EMPTY_CODE\"] = \"Confirmation code cannot be empty\";\n AuthErrorStrings[\"SIGN_UP_ERROR\"] = \"Error creating account\";\n AuthErrorStrings[\"NO_MFA\"] = \"No valid MFA method provided\";\n AuthErrorStrings[\"INVALID_MFA\"] = \"Invalid MFA type\";\n AuthErrorStrings[\"EMPTY_CHALLENGE\"] = \"Challenge response cannot be empty\";\n AuthErrorStrings[\"NO_USER_SESSION\"] = \"Failed to get the session because the user is empty\";\n AuthErrorStrings[\"NETWORK_ERROR\"] = \"Network Error\";\n AuthErrorStrings[\"DEVICE_CONFIG\"] = \"Device tracking has not been configured in this User Pool\";\n AuthErrorStrings[\"AUTOSIGNIN_ERROR\"] = \"Please use your credentials to sign in\";\n AuthErrorStrings[\"OAUTH_ERROR\"] = \"Couldn't finish OAuth flow, check your User Pool HostedUI settings\";\n})(AuthErrorStrings || (exports.AuthErrorStrings = AuthErrorStrings = {}));\nvar AuthErrorCodes;\n(function (AuthErrorCodes) {\n AuthErrorCodes[\"SignInException\"] = \"SignInException\";\n AuthErrorCodes[\"OAuthSignInError\"] = \"OAuthSignInException\";\n})(AuthErrorCodes || (exports.AuthErrorCodes = AuthErrorCodes = {}));\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AuthErrorStrings.js","sources":["../../../src/common/AuthErrorStrings.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AuthErrorCodes = exports.AuthErrorStrings = exports.validationErrorMap = void 0;\nconst validation_1 = require(\"../errors/types/validation\");\nexports.validationErrorMap = {\n [validation_1.AuthValidationErrorCode.EmptyChallengeResponse]: {\n message: 'challengeResponse is required to confirmSignIn',\n },\n [validation_1.AuthValidationErrorCode.EmptyConfirmResetPasswordUsername]: {\n message: 'username is required to confirmResetPassword',\n },\n [validation_1.AuthValidationErrorCode.EmptyConfirmSignUpCode]: {\n message: 'code is required to confirmSignUp',\n },\n [validation_1.AuthValidationErrorCode.EmptyConfirmSignUpUsername]: {\n message: 'username is required to confirmSignUp',\n },\n [validation_1.AuthValidationErrorCode.EmptyConfirmResetPasswordConfirmationCode]: {\n message: 'confirmationCode is required to confirmResetPassword',\n },\n [validation_1.AuthValidationErrorCode.EmptyConfirmResetPasswordNewPassword]: {\n message: 'newPassword is required to confirmResetPassword',\n },\n [validation_1.AuthValidationErrorCode.EmptyResendSignUpCodeUsername]: {\n message: 'username is required to confirmSignUp',\n },\n [validation_1.AuthValidationErrorCode.EmptyResetPasswordUsername]: {\n message: 'username is required to resetPassword',\n },\n [validation_1.AuthValidationErrorCode.EmptySignInPassword]: {\n message: 'password is required to signIn',\n },\n [validation_1.AuthValidationErrorCode.EmptySignInUsername]: {\n message: 'username is required to signIn',\n },\n [validation_1.AuthValidationErrorCode.EmptySignUpPassword]: {\n message: 'password is required to signUp',\n },\n [validation_1.AuthValidationErrorCode.EmptySignUpUsername]: {\n message: 'username is required to signUp',\n },\n [validation_1.AuthValidationErrorCode.CustomAuthSignInPassword]: {\n message: 'A password is not needed when signing in with CUSTOM_WITHOUT_SRP',\n recoverySuggestion: 'Do not include a password in your signIn call.',\n },\n [validation_1.AuthValidationErrorCode.IncorrectMFAMethod]: {\n message: 'Incorrect MFA method was chosen. It should be either SMS, TOTP, or EMAIL',\n recoverySuggestion: 'Try to pass SMS, TOTP, or EMAIL as the challengeResponse',\n },\n [validation_1.AuthValidationErrorCode.EmptyVerifyTOTPSetupCode]: {\n message: 'code is required to verifyTotpSetup',\n },\n [validation_1.AuthValidationErrorCode.EmptyUpdatePassword]: {\n message: 'oldPassword and newPassword are required to changePassword',\n },\n [validation_1.AuthValidationErrorCode.EmptyConfirmUserAttributeCode]: {\n message: 'confirmation code is required to confirmUserAttribute',\n },\n [validation_1.AuthValidationErrorCode.InvalidPreferredChallenge]: {\n message: 'The preferred challenge is not enabled in your backend configuration',\n recoverySuggestion: 'Ensure the authentication method is enabled in your Amplify backend configuration',\n },\n};\n// TODO: delete this code when the Auth class is removed.\nvar AuthErrorStrings;\n(function (AuthErrorStrings) {\n AuthErrorStrings[\"DEFAULT_MSG\"] = \"Authentication Error\";\n AuthErrorStrings[\"EMPTY_EMAIL\"] = \"Email cannot be empty\";\n AuthErrorStrings[\"EMPTY_PHONE\"] = \"Phone number cannot be empty\";\n AuthErrorStrings[\"EMPTY_USERNAME\"] = \"Username cannot be empty\";\n AuthErrorStrings[\"INVALID_USERNAME\"] = \"The username should either be a string or one of the sign in types\";\n AuthErrorStrings[\"EMPTY_PASSWORD\"] = \"Password cannot be empty\";\n AuthErrorStrings[\"EMPTY_CODE\"] = \"Confirmation code cannot be empty\";\n AuthErrorStrings[\"SIGN_UP_ERROR\"] = \"Error creating account\";\n AuthErrorStrings[\"NO_MFA\"] = \"No valid MFA method provided\";\n AuthErrorStrings[\"INVALID_MFA\"] = \"Invalid MFA type\";\n AuthErrorStrings[\"EMPTY_CHALLENGE\"] = \"Challenge response cannot be empty\";\n AuthErrorStrings[\"NO_USER_SESSION\"] = \"Failed to get the session because the user is empty\";\n AuthErrorStrings[\"NETWORK_ERROR\"] = \"Network Error\";\n AuthErrorStrings[\"DEVICE_CONFIG\"] = \"Device tracking has not been configured in this User Pool\";\n AuthErrorStrings[\"AUTOSIGNIN_ERROR\"] = \"Please use your credentials to sign in\";\n AuthErrorStrings[\"OAUTH_ERROR\"] = \"Couldn't finish OAuth flow, check your User Pool HostedUI settings\";\n})(AuthErrorStrings || (exports.AuthErrorStrings = AuthErrorStrings = {}));\nvar AuthErrorCodes;\n(function (AuthErrorCodes) {\n AuthErrorCodes[\"SignInException\"] = \"SignInException\";\n AuthErrorCodes[\"OAuthSignInError\"] = \"OAuthSignInException\";\n})(AuthErrorCodes || (exports.AuthErrorCodes = AuthErrorCodes = {}));\n"],"names":[],"mappings":";;AACA;AACA;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,GAAG,MAAM;AACvF,MAAM,YAAY,GAAG,OAAO,CAAC,4BAA4B,CAAC;AAC1D,OAAO,CAAC,kBAAkB,GAAG;AAC7B,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,sBAAsB,GAAG;AACnE,QAAQ,OAAO,EAAE,gDAAgD;AACjE,KAAK;AACL,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,iCAAiC,GAAG;AAC9E,QAAQ,OAAO,EAAE,8CAA8C;AAC/D,KAAK;AACL,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,sBAAsB,GAAG;AACnE,QAAQ,OAAO,EAAE,mCAAmC;AACpD,KAAK;AACL,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,0BAA0B,GAAG;AACvE,QAAQ,OAAO,EAAE,uCAAuC;AACxD,KAAK;AACL,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,yCAAyC,GAAG;AACtF,QAAQ,OAAO,EAAE,sDAAsD;AACvE,KAAK;AACL,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,oCAAoC,GAAG;AACjF,QAAQ,OAAO,EAAE,iDAAiD;AAClE,KAAK;AACL,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,6BAA6B,GAAG;AAC1E,QAAQ,OAAO,EAAE,uCAAuC;AACxD,KAAK;AACL,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,0BAA0B,GAAG;AACvE,QAAQ,OAAO,EAAE,uCAAuC;AACxD,KAAK;AACL,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,mBAAmB,GAAG;AAChE,QAAQ,OAAO,EAAE,gCAAgC;AACjD,KAAK;AACL,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,mBAAmB,GAAG;AAChE,QAAQ,OAAO,EAAE,gCAAgC;AACjD,KAAK;AACL,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,mBAAmB,GAAG;AAChE,QAAQ,OAAO,EAAE,gCAAgC;AACjD,KAAK;AACL,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,mBAAmB,GAAG;AAChE,QAAQ,OAAO,EAAE,gCAAgC;AACjD,KAAK;AACL,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,wBAAwB,GAAG;AACrE,QAAQ,OAAO,EAAE,kEAAkE;AACnF,QAAQ,kBAAkB,EAAE,gDAAgD;AAC5E,KAAK;AACL,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,kBAAkB,GAAG;AAC/D,QAAQ,OAAO,EAAE,0EAA0E;AAC3F,QAAQ,kBAAkB,EAAE,0DAA0D;AACtF,KAAK;AACL,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,wBAAwB,GAAG;AACrE,QAAQ,OAAO,EAAE,qCAAqC;AACtD,KAAK;AACL,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,mBAAmB,GAAG;AAChE,QAAQ,OAAO,EAAE,4DAA4D;AAC7E,KAAK;AACL,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,6BAA6B,GAAG;AAC1E,QAAQ,OAAO,EAAE,uDAAuD;AACxE,KAAK;AACL,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,yBAAyB,GAAG;AACtE,QAAQ,OAAO,EAAE,sEAAsE;AACvF,QAAQ,kBAAkB,EAAE,mFAAmF;AAC/G,KAAK;AACL,CAAC;AACD;AACA,IAAI,gBAAgB;AACpB,CAAC,UAAU,gBAAgB,EAAE;AAC7B,IAAI,gBAAgB,CAAC,aAAa,CAAC,GAAG,sBAAsB;AAC5D,IAAI,gBAAgB,CAAC,aAAa,CAAC,GAAG,uBAAuB;AAC7D,IAAI,gBAAgB,CAAC,aAAa,CAAC,GAAG,8BAA8B;AACpE,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,0BAA0B;AACnE,IAAI,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,oEAAoE;AAC/G,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,0BAA0B;AACnE,IAAI,gBAAgB,CAAC,YAAY,CAAC,GAAG,mCAAmC;AACxE,IAAI,gBAAgB,CAAC,eAAe,CAAC,GAAG,wBAAwB;AAChE,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,8BAA8B;AAC/D,IAAI,gBAAgB,CAAC,aAAa,CAAC,GAAG,kBAAkB;AACxD,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,oCAAoC;AAC9E,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,qDAAqD;AAC/F,IAAI,gBAAgB,CAAC,eAAe,CAAC,GAAG,eAAe;AACvD,IAAI,gBAAgB,CAAC,eAAe,CAAC,GAAG,2DAA2D;AACnG,IAAI,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,wCAAwC;AACnF,IAAI,gBAAgB,CAAC,aAAa,CAAC,GAAG,oEAAoE;AAC1G,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,GAAG,EAAE,CAAC,CAAC;AAC1E,IAAI,cAAc;AAClB,CAAC,UAAU,cAAc,EAAE;AAC3B,IAAI,cAAc,CAAC,iBAAiB,CAAC,GAAG,iBAAiB;AACzD,IAAI,cAAc,CAAC,kBAAkB,CAAC,GAAG,sBAAsB;AAC/D,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,cAAc,GAAG,cAAc,GAAG,EAAE,CAAC,CAAC;;"}
@@ -23,5 +23,6 @@ var AuthValidationErrorCode;
23
23
  AuthValidationErrorCode["EmptyConfirmUserAttributeCode"] = "EmptyConfirmUserAttributeCode";
24
24
  AuthValidationErrorCode["IncorrectMFAMethod"] = "IncorrectMFAMethod";
25
25
  AuthValidationErrorCode["EmptyUpdatePassword"] = "EmptyUpdatePassword";
26
+ AuthValidationErrorCode["InvalidPreferredChallenge"] = "InvalidPreferredChallenge";
26
27
  })(AuthValidationErrorCode || (exports.AuthValidationErrorCode = AuthValidationErrorCode = {}));
27
28
  //# sourceMappingURL=validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sources":["../../../../src/errors/types/validation.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AuthValidationErrorCode = void 0;\nvar AuthValidationErrorCode;\n(function (AuthValidationErrorCode) {\n AuthValidationErrorCode[\"EmptySignInUsername\"] = \"EmptySignInUsername\";\n AuthValidationErrorCode[\"EmptySignInPassword\"] = \"EmptySignInPassword\";\n AuthValidationErrorCode[\"CustomAuthSignInPassword\"] = \"CustomAuthSignInPassword\";\n AuthValidationErrorCode[\"EmptySignUpUsername\"] = \"EmptySignUpUsername\";\n AuthValidationErrorCode[\"EmptySignUpPassword\"] = \"EmptySignUpPassword\";\n AuthValidationErrorCode[\"EmptyConfirmSignUpUsername\"] = \"EmptyConfirmSignUpUsername\";\n AuthValidationErrorCode[\"EmptyConfirmSignUpCode\"] = \"EmptyConfirmSignUpCode\";\n AuthValidationErrorCode[\"EmptyResendSignUpCodeUsername\"] = \"EmptyresendSignUpCodeUsername\";\n AuthValidationErrorCode[\"EmptyChallengeResponse\"] = \"EmptyChallengeResponse\";\n AuthValidationErrorCode[\"EmptyConfirmResetPasswordUsername\"] = \"EmptyConfirmResetPasswordUsername\";\n AuthValidationErrorCode[\"EmptyConfirmResetPasswordNewPassword\"] = \"EmptyConfirmResetPasswordNewPassword\";\n AuthValidationErrorCode[\"EmptyConfirmResetPasswordConfirmationCode\"] = \"EmptyConfirmResetPasswordConfirmationCode\";\n AuthValidationErrorCode[\"EmptyResetPasswordUsername\"] = \"EmptyResetPasswordUsername\";\n AuthValidationErrorCode[\"EmptyVerifyTOTPSetupCode\"] = \"EmptyVerifyTOTPSetupCode\";\n AuthValidationErrorCode[\"EmptyConfirmUserAttributeCode\"] = \"EmptyConfirmUserAttributeCode\";\n AuthValidationErrorCode[\"IncorrectMFAMethod\"] = \"IncorrectMFAMethod\";\n AuthValidationErrorCode[\"EmptyUpdatePassword\"] = \"EmptyUpdatePassword\";\n})(AuthValidationErrorCode || (exports.AuthValidationErrorCode = AuthValidationErrorCode = {}));\n"],"names":[],"mappings":";;AACA;AACA;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,OAAO,CAAC,uBAAuB,GAAG,MAAM;AACxC,IAAI,uBAAuB;AAC3B,CAAC,UAAU,uBAAuB,EAAE;AACpC,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,IAAI,uBAAuB,CAAC,0BAA0B,CAAC,GAAG,0BAA0B;AACpF,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,IAAI,uBAAuB,CAAC,4BAA4B,CAAC,GAAG,4BAA4B;AACxF,IAAI,uBAAuB,CAAC,wBAAwB,CAAC,GAAG,wBAAwB;AAChF,IAAI,uBAAuB,CAAC,+BAA+B,CAAC,GAAG,+BAA+B;AAC9F,IAAI,uBAAuB,CAAC,wBAAwB,CAAC,GAAG,wBAAwB;AAChF,IAAI,uBAAuB,CAAC,mCAAmC,CAAC,GAAG,mCAAmC;AACtG,IAAI,uBAAuB,CAAC,sCAAsC,CAAC,GAAG,sCAAsC;AAC5G,IAAI,uBAAuB,CAAC,2CAA2C,CAAC,GAAG,2CAA2C;AACtH,IAAI,uBAAuB,CAAC,4BAA4B,CAAC,GAAG,4BAA4B;AACxF,IAAI,uBAAuB,CAAC,0BAA0B,CAAC,GAAG,0BAA0B;AACpF,IAAI,uBAAuB,CAAC,+BAA+B,CAAC,GAAG,+BAA+B;AAC9F,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,GAAG,oBAAoB;AACxE,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,CAAC,EAAE,uBAAuB,KAAK,OAAO,CAAC,uBAAuB,GAAG,uBAAuB,GAAG,EAAE,CAAC,CAAC;;"}
1
+ {"version":3,"file":"validation.js","sources":["../../../../src/errors/types/validation.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AuthValidationErrorCode = void 0;\nvar AuthValidationErrorCode;\n(function (AuthValidationErrorCode) {\n AuthValidationErrorCode[\"EmptySignInUsername\"] = \"EmptySignInUsername\";\n AuthValidationErrorCode[\"EmptySignInPassword\"] = \"EmptySignInPassword\";\n AuthValidationErrorCode[\"CustomAuthSignInPassword\"] = \"CustomAuthSignInPassword\";\n AuthValidationErrorCode[\"EmptySignUpUsername\"] = \"EmptySignUpUsername\";\n AuthValidationErrorCode[\"EmptySignUpPassword\"] = \"EmptySignUpPassword\";\n AuthValidationErrorCode[\"EmptyConfirmSignUpUsername\"] = \"EmptyConfirmSignUpUsername\";\n AuthValidationErrorCode[\"EmptyConfirmSignUpCode\"] = \"EmptyConfirmSignUpCode\";\n AuthValidationErrorCode[\"EmptyResendSignUpCodeUsername\"] = \"EmptyresendSignUpCodeUsername\";\n AuthValidationErrorCode[\"EmptyChallengeResponse\"] = \"EmptyChallengeResponse\";\n AuthValidationErrorCode[\"EmptyConfirmResetPasswordUsername\"] = \"EmptyConfirmResetPasswordUsername\";\n AuthValidationErrorCode[\"EmptyConfirmResetPasswordNewPassword\"] = \"EmptyConfirmResetPasswordNewPassword\";\n AuthValidationErrorCode[\"EmptyConfirmResetPasswordConfirmationCode\"] = \"EmptyConfirmResetPasswordConfirmationCode\";\n AuthValidationErrorCode[\"EmptyResetPasswordUsername\"] = \"EmptyResetPasswordUsername\";\n AuthValidationErrorCode[\"EmptyVerifyTOTPSetupCode\"] = \"EmptyVerifyTOTPSetupCode\";\n AuthValidationErrorCode[\"EmptyConfirmUserAttributeCode\"] = \"EmptyConfirmUserAttributeCode\";\n AuthValidationErrorCode[\"IncorrectMFAMethod\"] = \"IncorrectMFAMethod\";\n AuthValidationErrorCode[\"EmptyUpdatePassword\"] = \"EmptyUpdatePassword\";\n AuthValidationErrorCode[\"InvalidPreferredChallenge\"] = \"InvalidPreferredChallenge\";\n})(AuthValidationErrorCode || (exports.AuthValidationErrorCode = AuthValidationErrorCode = {}));\n"],"names":[],"mappings":";;AACA;AACA;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,OAAO,CAAC,uBAAuB,GAAG,MAAM;AACxC,IAAI,uBAAuB;AAC3B,CAAC,UAAU,uBAAuB,EAAE;AACpC,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,IAAI,uBAAuB,CAAC,0BAA0B,CAAC,GAAG,0BAA0B;AACpF,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,IAAI,uBAAuB,CAAC,4BAA4B,CAAC,GAAG,4BAA4B;AACxF,IAAI,uBAAuB,CAAC,wBAAwB,CAAC,GAAG,wBAAwB;AAChF,IAAI,uBAAuB,CAAC,+BAA+B,CAAC,GAAG,+BAA+B;AAC9F,IAAI,uBAAuB,CAAC,wBAAwB,CAAC,GAAG,wBAAwB;AAChF,IAAI,uBAAuB,CAAC,mCAAmC,CAAC,GAAG,mCAAmC;AACtG,IAAI,uBAAuB,CAAC,sCAAsC,CAAC,GAAG,sCAAsC;AAC5G,IAAI,uBAAuB,CAAC,2CAA2C,CAAC,GAAG,2CAA2C;AACtH,IAAI,uBAAuB,CAAC,4BAA4B,CAAC,GAAG,4BAA4B;AACxF,IAAI,uBAAuB,CAAC,0BAA0B,CAAC,GAAG,0BAA0B;AACpF,IAAI,uBAAuB,CAAC,+BAA+B,CAAC,GAAG,+BAA+B;AAC9F,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,GAAG,oBAAoB;AACxE,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,IAAI,uBAAuB,CAAC,2BAA2B,CAAC,GAAG,2BAA2B;AACtF,CAAC,EAAE,uBAAuB,KAAK,OAAO,CAAC,uBAAuB,GAAG,uBAAuB,GAAG,EAAE,CAAC,CAAC;;"}
@@ -38,7 +38,7 @@ async function signInWithUserAuth(input) {
38
38
  };
39
39
  (0, utils_1.assertTokenProviderConfig)(authConfig);
40
40
  const clientMetaData = options?.clientMetadata;
41
- const preferredChallenge = options?.preferredChallenge;
41
+ const preferredChallenge = options?.preferredChallenge ?? authConfig?.passwordless?.preferredChallenge;
42
42
  (0, assertValidationError_1.assertValidationError)(!!username, validation_1.AuthValidationErrorCode.EmptySignInUsername);
43
43
  try {
44
44
  const handleUserAuthFlowInput = {
@@ -1 +1 @@
1
- {"version":3,"file":"signInWithUserAuth.js","sources":["../../../../../src/providers/cognito/apis/signInWithUserAuth.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.signInWithUserAuth = signInWithUserAuth;\nconst core_1 = require(\"@aws-amplify/core\");\nconst utils_1 = require(\"@aws-amplify/core/internals/utils\");\nconst validation_1 = require(\"../../../errors/types/validation\");\nconst assertValidationError_1 = require(\"../../../errors/utils/assertValidationError\");\nconst assertServiceError_1 = require(\"../../../errors/utils/assertServiceError\");\nconst signInHelpers_1 = require(\"../utils/signInHelpers\");\nconst store_1 = require(\"../../../client/utils/store\");\nconst signInStore_1 = require(\"../../../client/utils/store/signInStore\");\nconst cacheTokens_1 = require(\"../tokenProvider/cacheTokens\");\nconst dispatchSignedInHubEvent_1 = require(\"../utils/dispatchSignedInHubEvent\");\nconst tokenProvider_1 = require(\"../tokenProvider\");\nconst handleUserAuthFlow_1 = require(\"../../../client/flows/userAuth/handleUserAuthFlow\");\nconst getNewDeviceMetadata_1 = require(\"../utils/getNewDeviceMetadata\");\nconst autoSignIn_1 = require(\"./autoSignIn\");\n/**\n * Signs a user in through a registered email or phone number without a password by by receiving and entering an OTP.\n *\n * @param input - The SignInWithUserAuthInput object\n * @returns SignInWithUserAuthOutput\n * @throws service: {@link InitiateAuthException }, {@link RespondToAuthChallengeException } - Cognito service errors\n * thrown during the sign-in process.\n * @throws validation: {@link AuthValidationErrorCode } - Validation errors thrown when either username or password -- needs to change\n * are not defined.\n * @throws AuthTokenConfigException - Thrown when the token provider config is invalid.\n */\nasync function signInWithUserAuth(input) {\n const { username, password, options } = input;\n const authConfig = core_1.Amplify.getConfig().Auth?.Cognito;\n const signInDetails = {\n loginId: username,\n authFlowType: 'USER_AUTH',\n };\n (0, utils_1.assertTokenProviderConfig)(authConfig);\n const clientMetaData = options?.clientMetadata;\n const preferredChallenge = options?.preferredChallenge;\n (0, assertValidationError_1.assertValidationError)(!!username, validation_1.AuthValidationErrorCode.EmptySignInUsername);\n try {\n const handleUserAuthFlowInput = {\n username,\n config: authConfig,\n tokenOrchestrator: tokenProvider_1.tokenOrchestrator,\n clientMetadata: clientMetaData,\n preferredChallenge,\n password,\n };\n const autoSignInStoreState = store_1.autoSignInStore.getState();\n if (autoSignInStoreState.active &&\n autoSignInStoreState.username === username) {\n handleUserAuthFlowInput.session = autoSignInStoreState.session;\n }\n const response = await (0, handleUserAuthFlow_1.handleUserAuthFlow)(handleUserAuthFlowInput);\n const activeUsername = (0, signInHelpers_1.getActiveSignInUsername)(username);\n (0, signInStore_1.setActiveSignInState)({\n signInSession: response.Session,\n username: activeUsername,\n challengeName: response.ChallengeName,\n signInDetails,\n });\n if (response.AuthenticationResult) {\n await (0, cacheTokens_1.cacheCognitoTokens)({\n username: activeUsername,\n ...response.AuthenticationResult,\n NewDeviceMetadata: await (0, getNewDeviceMetadata_1.getNewDeviceMetadata)({\n userPoolId: authConfig.userPoolId,\n userPoolEndpoint: authConfig.userPoolEndpoint,\n newDeviceMetadata: response.AuthenticationResult.NewDeviceMetadata,\n accessToken: response.AuthenticationResult.AccessToken,\n }),\n signInDetails,\n });\n (0, signInStore_1.resetActiveSignInState)();\n await (0, dispatchSignedInHubEvent_1.dispatchSignedInHubEvent)();\n (0, autoSignIn_1.resetAutoSignIn)();\n return {\n isSignedIn: true,\n nextStep: { signInStep: 'DONE' },\n };\n }\n return (0, signInHelpers_1.getSignInResult)({\n challengeName: response.ChallengeName,\n challengeParameters: response.ChallengeParameters,\n availableChallenges: 'AvailableChallenges' in response\n ? response.AvailableChallenges\n : undefined,\n });\n }\n catch (error) {\n (0, signInStore_1.resetActiveSignInState)();\n (0, autoSignIn_1.resetAutoSignIn)();\n (0, assertServiceError_1.assertServiceError)(error);\n const result = (0, signInHelpers_1.getSignInResultFromError)(error.name);\n if (result)\n return result;\n throw error;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signInWithUserAuth.js","sources":["../../../../../src/providers/cognito/apis/signInWithUserAuth.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.signInWithUserAuth = signInWithUserAuth;\nconst core_1 = require(\"@aws-amplify/core\");\nconst utils_1 = require(\"@aws-amplify/core/internals/utils\");\nconst validation_1 = require(\"../../../errors/types/validation\");\nconst assertValidationError_1 = require(\"../../../errors/utils/assertValidationError\");\nconst assertServiceError_1 = require(\"../../../errors/utils/assertServiceError\");\nconst signInHelpers_1 = require(\"../utils/signInHelpers\");\nconst store_1 = require(\"../../../client/utils/store\");\nconst signInStore_1 = require(\"../../../client/utils/store/signInStore\");\nconst cacheTokens_1 = require(\"../tokenProvider/cacheTokens\");\nconst dispatchSignedInHubEvent_1 = require(\"../utils/dispatchSignedInHubEvent\");\nconst tokenProvider_1 = require(\"../tokenProvider\");\nconst handleUserAuthFlow_1 = require(\"../../../client/flows/userAuth/handleUserAuthFlow\");\nconst getNewDeviceMetadata_1 = require(\"../utils/getNewDeviceMetadata\");\nconst autoSignIn_1 = require(\"./autoSignIn\");\n/**\n * Signs a user in through a registered email or phone number without a password by by receiving and entering an OTP.\n *\n * @param input - The SignInWithUserAuthInput object\n * @returns SignInWithUserAuthOutput\n * @throws service: {@link InitiateAuthException }, {@link RespondToAuthChallengeException } - Cognito service errors\n * thrown during the sign-in process.\n * @throws validation: {@link AuthValidationErrorCode } - Validation errors thrown when either username or password -- needs to change\n * are not defined.\n * @throws AuthTokenConfigException - Thrown when the token provider config is invalid.\n */\nasync function signInWithUserAuth(input) {\n const { username, password, options } = input;\n const authConfig = core_1.Amplify.getConfig().Auth?.Cognito;\n const signInDetails = {\n loginId: username,\n authFlowType: 'USER_AUTH',\n };\n (0, utils_1.assertTokenProviderConfig)(authConfig);\n const clientMetaData = options?.clientMetadata;\n const preferredChallenge = options?.preferredChallenge ?? authConfig?.passwordless?.preferredChallenge;\n (0, assertValidationError_1.assertValidationError)(!!username, validation_1.AuthValidationErrorCode.EmptySignInUsername);\n try {\n const handleUserAuthFlowInput = {\n username,\n config: authConfig,\n tokenOrchestrator: tokenProvider_1.tokenOrchestrator,\n clientMetadata: clientMetaData,\n preferredChallenge,\n password,\n };\n const autoSignInStoreState = store_1.autoSignInStore.getState();\n if (autoSignInStoreState.active &&\n autoSignInStoreState.username === username) {\n handleUserAuthFlowInput.session = autoSignInStoreState.session;\n }\n const response = await (0, handleUserAuthFlow_1.handleUserAuthFlow)(handleUserAuthFlowInput);\n const activeUsername = (0, signInHelpers_1.getActiveSignInUsername)(username);\n (0, signInStore_1.setActiveSignInState)({\n signInSession: response.Session,\n username: activeUsername,\n challengeName: response.ChallengeName,\n signInDetails,\n });\n if (response.AuthenticationResult) {\n await (0, cacheTokens_1.cacheCognitoTokens)({\n username: activeUsername,\n ...response.AuthenticationResult,\n NewDeviceMetadata: await (0, getNewDeviceMetadata_1.getNewDeviceMetadata)({\n userPoolId: authConfig.userPoolId,\n userPoolEndpoint: authConfig.userPoolEndpoint,\n newDeviceMetadata: response.AuthenticationResult.NewDeviceMetadata,\n accessToken: response.AuthenticationResult.AccessToken,\n }),\n signInDetails,\n });\n (0, signInStore_1.resetActiveSignInState)();\n await (0, dispatchSignedInHubEvent_1.dispatchSignedInHubEvent)();\n (0, autoSignIn_1.resetAutoSignIn)();\n return {\n isSignedIn: true,\n nextStep: { signInStep: 'DONE' },\n };\n }\n return (0, signInHelpers_1.getSignInResult)({\n challengeName: response.ChallengeName,\n challengeParameters: response.ChallengeParameters,\n availableChallenges: 'AvailableChallenges' in response\n ? response.AvailableChallenges\n : undefined,\n });\n }\n catch (error) {\n (0, signInStore_1.resetActiveSignInState)();\n (0, autoSignIn_1.resetAutoSignIn)();\n (0, assertServiceError_1.assertServiceError)(error);\n const result = (0, signInHelpers_1.getSignInResultFromError)(error.name);\n if (result)\n return result;\n throw error;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -41,6 +41,18 @@ async function handleUserAuthFlow({ username, clientMetadata, config, tokenOrche
41
41
  });
42
42
  const authParameters = { USERNAME: username };
43
43
  if (preferredChallenge) {
44
+ // Validate that the preferred challenge is enabled in the backend config
45
+ // Only validate if passwordless config exists (for backward compatibility)
46
+ if (config.passwordless) {
47
+ const isInvalidChallenge = (preferredChallenge === 'EMAIL_OTP' &&
48
+ !config.passwordless.emailOtpEnabled) ||
49
+ (preferredChallenge === 'SMS_OTP' &&
50
+ !config.passwordless.smsOtpEnabled) ||
51
+ (preferredChallenge === 'WEB_AUTHN' && !config.passwordless.webAuthn);
52
+ if (isInvalidChallenge) {
53
+ assertValidationError(false, AuthValidationErrorCode.InvalidPreferredChallenge);
54
+ }
55
+ }
44
56
  if (preferredChallenge === 'PASSWORD_SRP') {
45
57
  assertValidationError(!!password, AuthValidationErrorCode.EmptySignInPassword);
46
58
  return handlePasswordSRP({
@@ -1 +1 @@
1
- {"version":3,"file":"handleUserAuthFlow.mjs","sources":["../../../../../src/client/flows/userAuth/handleUserAuthFlow.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AuthAction } from '@aws-amplify/core/internals/utils';\nimport { getUserContextData } from '../../../providers/cognito/utils/userContextData';\nimport { createInitiateAuthClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { createCognitoUserPoolEndpointResolver } from '../../../providers/cognito/factories';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\nimport { getAuthUserAgentValue } from '../../../utils';\nimport { handlePasswordSRP } from '../shared/handlePasswordSRP';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { setActiveSignInUsername } from '../../../providers/cognito/utils/setActiveSignInUsername';\n/**\n * Handles user authentication flow with configurable challenge preferences.\n * Supports AuthFactorType challenges through the USER_AUTH flow.\n *\n * @param {HandleUserAuthFlowInput} params - Authentication flow parameters\n * @param {string} params.username - The username for authentication\n * @param {Record<string, string>} [params.clientMetadata] - Optional metadata to pass to authentication service\n * @param {CognitoUserPoolConfig} params.config - Cognito User Pool configuration\n * @param {AuthTokenOrchestrator} params.tokenOrchestrator - Manages authentication tokens and device tracking\n * @param {AuthFactorType} [params.preferredChallenge] - Optional preferred authentication method\n * @param {string} [params.password] - Required when preferredChallenge is 'PASSWORD' or 'PASSWORD_SRP'\n *\n * @returns {Promise<InitiateAuthCommandOutput>} The authentication response from Cognito\n */\nexport async function handleUserAuthFlow({ username, clientMetadata, config, tokenOrchestrator, preferredChallenge, password, session, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const authParameters = { USERNAME: username };\n if (preferredChallenge) {\n if (preferredChallenge === 'PASSWORD_SRP') {\n assertValidationError(!!password, AuthValidationErrorCode.EmptySignInPassword);\n return handlePasswordSRP({\n username,\n password,\n clientMetadata,\n config,\n tokenOrchestrator,\n authFlow: 'USER_AUTH',\n preferredChallenge,\n });\n }\n if (preferredChallenge === 'PASSWORD') {\n assertValidationError(!!password, AuthValidationErrorCode.EmptySignInPassword);\n authParameters.PASSWORD = password;\n }\n authParameters.PREFERRED_CHALLENGE = preferredChallenge;\n }\n const jsonReq = {\n AuthFlow: 'USER_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n if (session) {\n jsonReq.Session = session;\n }\n const initiateAuth = createInitiateAuthClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const response = await initiateAuth({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.SignIn),\n }, jsonReq);\n // Set the active username immediately after successful authentication attempt\n // If a user starts a new sign-in while another sign-in is incomplete,\n // this ensures we're tracking the correct user for subsequent auth challenges.\n setActiveSignInUsername(username);\n return response;\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AACA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,kBAAkB,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE;AAC1I,IAAI,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,MAAM;AACrE,IAAI,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAC/C,QAAQ,QAAQ;AAChB,QAAQ,UAAU;AAClB,QAAQ,gBAAgB;AACxB,KAAK,CAAC;AACN,IAAI,MAAM,cAAc,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACjD,IAAI,IAAI,kBAAkB,EAAE;AAC5B,QAAQ,IAAI,kBAAkB,KAAK,cAAc,EAAE;AACnD,YAAY,qBAAqB,CAAC,CAAC,CAAC,QAAQ,EAAE,uBAAuB,CAAC,mBAAmB,CAAC;AAC1F,YAAY,OAAO,iBAAiB,CAAC;AACrC,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,cAAc;AAC9B,gBAAgB,MAAM;AACtB,gBAAgB,iBAAiB;AACjC,gBAAgB,QAAQ,EAAE,WAAW;AACrC,gBAAgB,kBAAkB;AAClC,aAAa,CAAC;AACd,QAAQ;AACR,QAAQ,IAAI,kBAAkB,KAAK,UAAU,EAAE;AAC/C,YAAY,qBAAqB,CAAC,CAAC,CAAC,QAAQ,EAAE,uBAAuB,CAAC,mBAAmB,CAAC;AAC1F,YAAY,cAAc,CAAC,QAAQ,GAAG,QAAQ;AAC9C,QAAQ;AACR,QAAQ,cAAc,CAAC,mBAAmB,GAAG,kBAAkB;AAC/D,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,QAAQ,EAAE,WAAW;AAC7B,QAAQ,cAAc,EAAE,cAAc;AACtC,QAAQ,cAAc,EAAE,cAAc;AACtC,QAAQ,QAAQ,EAAE,gBAAgB;AAClC,QAAQ,eAAe;AACvB,KAAK;AACL,IAAI,IAAI,OAAO,EAAE;AACjB,QAAQ,OAAO,CAAC,OAAO,GAAG,OAAO;AACjC,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG,wBAAwB,CAAC;AAClD,QAAQ,gBAAgB,EAAE,qCAAqC,CAAC;AAChE,YAAY,gBAAgB,EAAE,gBAAgB;AAC9C,SAAS,CAAC;AACV,KAAK,CAAC;AACN,IAAI,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;AACxC,QAAQ,MAAM,EAAE,uBAAuB,CAAC,UAAU,CAAC;AACnD,QAAQ,cAAc,EAAE,qBAAqB,CAAC,UAAU,CAAC,MAAM,CAAC;AAChE,KAAK,EAAE,OAAO,CAAC;AACf;AACA;AACA;AACA,IAAI,uBAAuB,CAAC,QAAQ,CAAC;AACrC,IAAI,OAAO,QAAQ;AACnB;;;;"}
1
+ {"version":3,"file":"handleUserAuthFlow.mjs","sources":["../../../../../src/client/flows/userAuth/handleUserAuthFlow.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AuthAction } from '@aws-amplify/core/internals/utils';\nimport { getUserContextData } from '../../../providers/cognito/utils/userContextData';\nimport { createInitiateAuthClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { createCognitoUserPoolEndpointResolver } from '../../../providers/cognito/factories';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\nimport { getAuthUserAgentValue } from '../../../utils';\nimport { handlePasswordSRP } from '../shared/handlePasswordSRP';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { setActiveSignInUsername } from '../../../providers/cognito/utils/setActiveSignInUsername';\n/**\n * Handles user authentication flow with configurable challenge preferences.\n * Supports AuthFactorType challenges through the USER_AUTH flow.\n *\n * @param {HandleUserAuthFlowInput} params - Authentication flow parameters\n * @param {string} params.username - The username for authentication\n * @param {Record<string, string>} [params.clientMetadata] - Optional metadata to pass to authentication service\n * @param {CognitoUserPoolConfig} params.config - Cognito User Pool configuration\n * @param {AuthTokenOrchestrator} params.tokenOrchestrator - Manages authentication tokens and device tracking\n * @param {AuthFactorType} [params.preferredChallenge] - Optional preferred authentication method\n * @param {string} [params.password] - Required when preferredChallenge is 'PASSWORD' or 'PASSWORD_SRP'\n *\n * @returns {Promise<InitiateAuthCommandOutput>} The authentication response from Cognito\n */\nexport async function handleUserAuthFlow({ username, clientMetadata, config, tokenOrchestrator, preferredChallenge, password, session, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const authParameters = { USERNAME: username };\n if (preferredChallenge) {\n // Validate that the preferred challenge is enabled in the backend config\n // Only validate if passwordless config exists (for backward compatibility)\n if (config.passwordless) {\n const isInvalidChallenge = (preferredChallenge === 'EMAIL_OTP' &&\n !config.passwordless.emailOtpEnabled) ||\n (preferredChallenge === 'SMS_OTP' &&\n !config.passwordless.smsOtpEnabled) ||\n (preferredChallenge === 'WEB_AUTHN' && !config.passwordless.webAuthn);\n if (isInvalidChallenge) {\n assertValidationError(false, AuthValidationErrorCode.InvalidPreferredChallenge);\n }\n }\n if (preferredChallenge === 'PASSWORD_SRP') {\n assertValidationError(!!password, AuthValidationErrorCode.EmptySignInPassword);\n return handlePasswordSRP({\n username,\n password,\n clientMetadata,\n config,\n tokenOrchestrator,\n authFlow: 'USER_AUTH',\n preferredChallenge,\n });\n }\n if (preferredChallenge === 'PASSWORD') {\n assertValidationError(!!password, AuthValidationErrorCode.EmptySignInPassword);\n authParameters.PASSWORD = password;\n }\n authParameters.PREFERRED_CHALLENGE = preferredChallenge;\n }\n const jsonReq = {\n AuthFlow: 'USER_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n if (session) {\n jsonReq.Session = session;\n }\n const initiateAuth = createInitiateAuthClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const response = await initiateAuth({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.SignIn),\n }, jsonReq);\n // Set the active username immediately after successful authentication attempt\n // If a user starts a new sign-in while another sign-in is incomplete,\n // this ensures we're tracking the correct user for subsequent auth challenges.\n setActiveSignInUsername(username);\n return response;\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AACA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,kBAAkB,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE;AAC1I,IAAI,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,MAAM;AACrE,IAAI,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAC/C,QAAQ,QAAQ;AAChB,QAAQ,UAAU;AAClB,QAAQ,gBAAgB;AACxB,KAAK,CAAC;AACN,IAAI,MAAM,cAAc,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACjD,IAAI,IAAI,kBAAkB,EAAE;AAC5B;AACA;AACA,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE;AACjC,YAAY,MAAM,kBAAkB,GAAG,CAAC,kBAAkB,KAAK,WAAW;AAC1E,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,eAAe;AACpD,iBAAiB,kBAAkB,KAAK,SAAS;AACjD,oBAAoB,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC;AACvD,iBAAiB,kBAAkB,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;AACrF,YAAY,IAAI,kBAAkB,EAAE;AACpC,gBAAgB,qBAAqB,CAAC,KAAK,EAAE,uBAAuB,CAAC,yBAAyB,CAAC;AAC/F,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,kBAAkB,KAAK,cAAc,EAAE;AACnD,YAAY,qBAAqB,CAAC,CAAC,CAAC,QAAQ,EAAE,uBAAuB,CAAC,mBAAmB,CAAC;AAC1F,YAAY,OAAO,iBAAiB,CAAC;AACrC,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,cAAc;AAC9B,gBAAgB,MAAM;AACtB,gBAAgB,iBAAiB;AACjC,gBAAgB,QAAQ,EAAE,WAAW;AACrC,gBAAgB,kBAAkB;AAClC,aAAa,CAAC;AACd,QAAQ;AACR,QAAQ,IAAI,kBAAkB,KAAK,UAAU,EAAE;AAC/C,YAAY,qBAAqB,CAAC,CAAC,CAAC,QAAQ,EAAE,uBAAuB,CAAC,mBAAmB,CAAC;AAC1F,YAAY,cAAc,CAAC,QAAQ,GAAG,QAAQ;AAC9C,QAAQ;AACR,QAAQ,cAAc,CAAC,mBAAmB,GAAG,kBAAkB;AAC/D,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,QAAQ,EAAE,WAAW;AAC7B,QAAQ,cAAc,EAAE,cAAc;AACtC,QAAQ,cAAc,EAAE,cAAc;AACtC,QAAQ,QAAQ,EAAE,gBAAgB;AAClC,QAAQ,eAAe;AACvB,KAAK;AACL,IAAI,IAAI,OAAO,EAAE;AACjB,QAAQ,OAAO,CAAC,OAAO,GAAG,OAAO;AACjC,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG,wBAAwB,CAAC;AAClD,QAAQ,gBAAgB,EAAE,qCAAqC,CAAC;AAChE,YAAY,gBAAgB,EAAE,gBAAgB;AAC9C,SAAS,CAAC;AACV,KAAK,CAAC;AACN,IAAI,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;AACxC,QAAQ,MAAM,EAAE,uBAAuB,CAAC,UAAU,CAAC;AACnD,QAAQ,cAAc,EAAE,qBAAqB,CAAC,UAAU,CAAC,MAAM,CAAC;AAChE,KAAK,EAAE,OAAO,CAAC;AACf;AACA;AACA;AACA,IAAI,uBAAuB,CAAC,QAAQ,CAAC;AACrC,IAAI,OAAO,QAAQ;AACnB;;;;"}
@@ -56,6 +56,10 @@ const validationErrorMap = {
56
56
  [AuthValidationErrorCode.EmptyConfirmUserAttributeCode]: {
57
57
  message: 'confirmation code is required to confirmUserAttribute',
58
58
  },
59
+ [AuthValidationErrorCode.InvalidPreferredChallenge]: {
60
+ message: 'The preferred challenge is not enabled in your backend configuration',
61
+ recoverySuggestion: 'Ensure the authentication method is enabled in your Amplify backend configuration',
62
+ },
59
63
  };
60
64
  // TODO: delete this code when the Auth class is removed.
61
65
  var AuthErrorStrings;
@@ -1 +1 @@
1
- {"version":3,"file":"AuthErrorStrings.mjs","sources":["../../../src/common/AuthErrorStrings.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AuthValidationErrorCode } from '../errors/types/validation';\nexport const validationErrorMap = {\n [AuthValidationErrorCode.EmptyChallengeResponse]: {\n message: 'challengeResponse is required to confirmSignIn',\n },\n [AuthValidationErrorCode.EmptyConfirmResetPasswordUsername]: {\n message: 'username is required to confirmResetPassword',\n },\n [AuthValidationErrorCode.EmptyConfirmSignUpCode]: {\n message: 'code is required to confirmSignUp',\n },\n [AuthValidationErrorCode.EmptyConfirmSignUpUsername]: {\n message: 'username is required to confirmSignUp',\n },\n [AuthValidationErrorCode.EmptyConfirmResetPasswordConfirmationCode]: {\n message: 'confirmationCode is required to confirmResetPassword',\n },\n [AuthValidationErrorCode.EmptyConfirmResetPasswordNewPassword]: {\n message: 'newPassword is required to confirmResetPassword',\n },\n [AuthValidationErrorCode.EmptyResendSignUpCodeUsername]: {\n message: 'username is required to confirmSignUp',\n },\n [AuthValidationErrorCode.EmptyResetPasswordUsername]: {\n message: 'username is required to resetPassword',\n },\n [AuthValidationErrorCode.EmptySignInPassword]: {\n message: 'password is required to signIn',\n },\n [AuthValidationErrorCode.EmptySignInUsername]: {\n message: 'username is required to signIn',\n },\n [AuthValidationErrorCode.EmptySignUpPassword]: {\n message: 'password is required to signUp',\n },\n [AuthValidationErrorCode.EmptySignUpUsername]: {\n message: 'username is required to signUp',\n },\n [AuthValidationErrorCode.CustomAuthSignInPassword]: {\n message: 'A password is not needed when signing in with CUSTOM_WITHOUT_SRP',\n recoverySuggestion: 'Do not include a password in your signIn call.',\n },\n [AuthValidationErrorCode.IncorrectMFAMethod]: {\n message: 'Incorrect MFA method was chosen. It should be either SMS, TOTP, or EMAIL',\n recoverySuggestion: 'Try to pass SMS, TOTP, or EMAIL as the challengeResponse',\n },\n [AuthValidationErrorCode.EmptyVerifyTOTPSetupCode]: {\n message: 'code is required to verifyTotpSetup',\n },\n [AuthValidationErrorCode.EmptyUpdatePassword]: {\n message: 'oldPassword and newPassword are required to changePassword',\n },\n [AuthValidationErrorCode.EmptyConfirmUserAttributeCode]: {\n message: 'confirmation code is required to confirmUserAttribute',\n },\n};\n// TODO: delete this code when the Auth class is removed.\nexport var AuthErrorStrings;\n(function (AuthErrorStrings) {\n AuthErrorStrings[\"DEFAULT_MSG\"] = \"Authentication Error\";\n AuthErrorStrings[\"EMPTY_EMAIL\"] = \"Email cannot be empty\";\n AuthErrorStrings[\"EMPTY_PHONE\"] = \"Phone number cannot be empty\";\n AuthErrorStrings[\"EMPTY_USERNAME\"] = \"Username cannot be empty\";\n AuthErrorStrings[\"INVALID_USERNAME\"] = \"The username should either be a string or one of the sign in types\";\n AuthErrorStrings[\"EMPTY_PASSWORD\"] = \"Password cannot be empty\";\n AuthErrorStrings[\"EMPTY_CODE\"] = \"Confirmation code cannot be empty\";\n AuthErrorStrings[\"SIGN_UP_ERROR\"] = \"Error creating account\";\n AuthErrorStrings[\"NO_MFA\"] = \"No valid MFA method provided\";\n AuthErrorStrings[\"INVALID_MFA\"] = \"Invalid MFA type\";\n AuthErrorStrings[\"EMPTY_CHALLENGE\"] = \"Challenge response cannot be empty\";\n AuthErrorStrings[\"NO_USER_SESSION\"] = \"Failed to get the session because the user is empty\";\n AuthErrorStrings[\"NETWORK_ERROR\"] = \"Network Error\";\n AuthErrorStrings[\"DEVICE_CONFIG\"] = \"Device tracking has not been configured in this User Pool\";\n AuthErrorStrings[\"AUTOSIGNIN_ERROR\"] = \"Please use your credentials to sign in\";\n AuthErrorStrings[\"OAUTH_ERROR\"] = \"Couldn't finish OAuth flow, check your User Pool HostedUI settings\";\n})(AuthErrorStrings || (AuthErrorStrings = {}));\nexport var AuthErrorCodes;\n(function (AuthErrorCodes) {\n AuthErrorCodes[\"SignInException\"] = \"SignInException\";\n AuthErrorCodes[\"OAuthSignInError\"] = \"OAuthSignInException\";\n})(AuthErrorCodes || (AuthErrorCodes = {}));\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AuthErrorStrings.mjs","sources":["../../../src/common/AuthErrorStrings.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AuthValidationErrorCode } from '../errors/types/validation';\nexport const validationErrorMap = {\n [AuthValidationErrorCode.EmptyChallengeResponse]: {\n message: 'challengeResponse is required to confirmSignIn',\n },\n [AuthValidationErrorCode.EmptyConfirmResetPasswordUsername]: {\n message: 'username is required to confirmResetPassword',\n },\n [AuthValidationErrorCode.EmptyConfirmSignUpCode]: {\n message: 'code is required to confirmSignUp',\n },\n [AuthValidationErrorCode.EmptyConfirmSignUpUsername]: {\n message: 'username is required to confirmSignUp',\n },\n [AuthValidationErrorCode.EmptyConfirmResetPasswordConfirmationCode]: {\n message: 'confirmationCode is required to confirmResetPassword',\n },\n [AuthValidationErrorCode.EmptyConfirmResetPasswordNewPassword]: {\n message: 'newPassword is required to confirmResetPassword',\n },\n [AuthValidationErrorCode.EmptyResendSignUpCodeUsername]: {\n message: 'username is required to confirmSignUp',\n },\n [AuthValidationErrorCode.EmptyResetPasswordUsername]: {\n message: 'username is required to resetPassword',\n },\n [AuthValidationErrorCode.EmptySignInPassword]: {\n message: 'password is required to signIn',\n },\n [AuthValidationErrorCode.EmptySignInUsername]: {\n message: 'username is required to signIn',\n },\n [AuthValidationErrorCode.EmptySignUpPassword]: {\n message: 'password is required to signUp',\n },\n [AuthValidationErrorCode.EmptySignUpUsername]: {\n message: 'username is required to signUp',\n },\n [AuthValidationErrorCode.CustomAuthSignInPassword]: {\n message: 'A password is not needed when signing in with CUSTOM_WITHOUT_SRP',\n recoverySuggestion: 'Do not include a password in your signIn call.',\n },\n [AuthValidationErrorCode.IncorrectMFAMethod]: {\n message: 'Incorrect MFA method was chosen. It should be either SMS, TOTP, or EMAIL',\n recoverySuggestion: 'Try to pass SMS, TOTP, or EMAIL as the challengeResponse',\n },\n [AuthValidationErrorCode.EmptyVerifyTOTPSetupCode]: {\n message: 'code is required to verifyTotpSetup',\n },\n [AuthValidationErrorCode.EmptyUpdatePassword]: {\n message: 'oldPassword and newPassword are required to changePassword',\n },\n [AuthValidationErrorCode.EmptyConfirmUserAttributeCode]: {\n message: 'confirmation code is required to confirmUserAttribute',\n },\n [AuthValidationErrorCode.InvalidPreferredChallenge]: {\n message: 'The preferred challenge is not enabled in your backend configuration',\n recoverySuggestion: 'Ensure the authentication method is enabled in your Amplify backend configuration',\n },\n};\n// TODO: delete this code when the Auth class is removed.\nexport var AuthErrorStrings;\n(function (AuthErrorStrings) {\n AuthErrorStrings[\"DEFAULT_MSG\"] = \"Authentication Error\";\n AuthErrorStrings[\"EMPTY_EMAIL\"] = \"Email cannot be empty\";\n AuthErrorStrings[\"EMPTY_PHONE\"] = \"Phone number cannot be empty\";\n AuthErrorStrings[\"EMPTY_USERNAME\"] = \"Username cannot be empty\";\n AuthErrorStrings[\"INVALID_USERNAME\"] = \"The username should either be a string or one of the sign in types\";\n AuthErrorStrings[\"EMPTY_PASSWORD\"] = \"Password cannot be empty\";\n AuthErrorStrings[\"EMPTY_CODE\"] = \"Confirmation code cannot be empty\";\n AuthErrorStrings[\"SIGN_UP_ERROR\"] = \"Error creating account\";\n AuthErrorStrings[\"NO_MFA\"] = \"No valid MFA method provided\";\n AuthErrorStrings[\"INVALID_MFA\"] = \"Invalid MFA type\";\n AuthErrorStrings[\"EMPTY_CHALLENGE\"] = \"Challenge response cannot be empty\";\n AuthErrorStrings[\"NO_USER_SESSION\"] = \"Failed to get the session because the user is empty\";\n AuthErrorStrings[\"NETWORK_ERROR\"] = \"Network Error\";\n AuthErrorStrings[\"DEVICE_CONFIG\"] = \"Device tracking has not been configured in this User Pool\";\n AuthErrorStrings[\"AUTOSIGNIN_ERROR\"] = \"Please use your credentials to sign in\";\n AuthErrorStrings[\"OAUTH_ERROR\"] = \"Couldn't finish OAuth flow, check your User Pool HostedUI settings\";\n})(AuthErrorStrings || (AuthErrorStrings = {}));\nexport var AuthErrorCodes;\n(function (AuthErrorCodes) {\n AuthErrorCodes[\"SignInException\"] = \"SignInException\";\n AuthErrorCodes[\"OAuthSignInError\"] = \"OAuthSignInException\";\n})(AuthErrorCodes || (AuthErrorCodes = {}));\n"],"names":[],"mappings":"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"}
@@ -15,5 +15,6 @@ export declare enum AuthValidationErrorCode {
15
15
  EmptyVerifyTOTPSetupCode = "EmptyVerifyTOTPSetupCode",
16
16
  EmptyConfirmUserAttributeCode = "EmptyConfirmUserAttributeCode",
17
17
  IncorrectMFAMethod = "IncorrectMFAMethod",
18
- EmptyUpdatePassword = "EmptyUpdatePassword"
18
+ EmptyUpdatePassword = "EmptyUpdatePassword",
19
+ InvalidPreferredChallenge = "InvalidPreferredChallenge"
19
20
  }
@@ -19,6 +19,7 @@ var AuthValidationErrorCode;
19
19
  AuthValidationErrorCode["EmptyConfirmUserAttributeCode"] = "EmptyConfirmUserAttributeCode";
20
20
  AuthValidationErrorCode["IncorrectMFAMethod"] = "IncorrectMFAMethod";
21
21
  AuthValidationErrorCode["EmptyUpdatePassword"] = "EmptyUpdatePassword";
22
+ AuthValidationErrorCode["InvalidPreferredChallenge"] = "InvalidPreferredChallenge";
22
23
  })(AuthValidationErrorCode || (AuthValidationErrorCode = {}));
23
24
 
24
25
  export { AuthValidationErrorCode };
@@ -1 +1 @@
1
- {"version":3,"file":"validation.mjs","sources":["../../../../src/errors/types/validation.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport var AuthValidationErrorCode;\n(function (AuthValidationErrorCode) {\n AuthValidationErrorCode[\"EmptySignInUsername\"] = \"EmptySignInUsername\";\n AuthValidationErrorCode[\"EmptySignInPassword\"] = \"EmptySignInPassword\";\n AuthValidationErrorCode[\"CustomAuthSignInPassword\"] = \"CustomAuthSignInPassword\";\n AuthValidationErrorCode[\"EmptySignUpUsername\"] = \"EmptySignUpUsername\";\n AuthValidationErrorCode[\"EmptySignUpPassword\"] = \"EmptySignUpPassword\";\n AuthValidationErrorCode[\"EmptyConfirmSignUpUsername\"] = \"EmptyConfirmSignUpUsername\";\n AuthValidationErrorCode[\"EmptyConfirmSignUpCode\"] = \"EmptyConfirmSignUpCode\";\n AuthValidationErrorCode[\"EmptyResendSignUpCodeUsername\"] = \"EmptyresendSignUpCodeUsername\";\n AuthValidationErrorCode[\"EmptyChallengeResponse\"] = \"EmptyChallengeResponse\";\n AuthValidationErrorCode[\"EmptyConfirmResetPasswordUsername\"] = \"EmptyConfirmResetPasswordUsername\";\n AuthValidationErrorCode[\"EmptyConfirmResetPasswordNewPassword\"] = \"EmptyConfirmResetPasswordNewPassword\";\n AuthValidationErrorCode[\"EmptyConfirmResetPasswordConfirmationCode\"] = \"EmptyConfirmResetPasswordConfirmationCode\";\n AuthValidationErrorCode[\"EmptyResetPasswordUsername\"] = \"EmptyResetPasswordUsername\";\n AuthValidationErrorCode[\"EmptyVerifyTOTPSetupCode\"] = \"EmptyVerifyTOTPSetupCode\";\n AuthValidationErrorCode[\"EmptyConfirmUserAttributeCode\"] = \"EmptyConfirmUserAttributeCode\";\n AuthValidationErrorCode[\"IncorrectMFAMethod\"] = \"IncorrectMFAMethod\";\n AuthValidationErrorCode[\"EmptyUpdatePassword\"] = \"EmptyUpdatePassword\";\n})(AuthValidationErrorCode || (AuthValidationErrorCode = {}));\n"],"names":[],"mappings":"AAAA;AACA;AACU,IAAC;AACX,CAAC,UAAU,uBAAuB,EAAE;AACpC,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,IAAI,uBAAuB,CAAC,0BAA0B,CAAC,GAAG,0BAA0B;AACpF,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,IAAI,uBAAuB,CAAC,4BAA4B,CAAC,GAAG,4BAA4B;AACxF,IAAI,uBAAuB,CAAC,wBAAwB,CAAC,GAAG,wBAAwB;AAChF,IAAI,uBAAuB,CAAC,+BAA+B,CAAC,GAAG,+BAA+B;AAC9F,IAAI,uBAAuB,CAAC,wBAAwB,CAAC,GAAG,wBAAwB;AAChF,IAAI,uBAAuB,CAAC,mCAAmC,CAAC,GAAG,mCAAmC;AACtG,IAAI,uBAAuB,CAAC,sCAAsC,CAAC,GAAG,sCAAsC;AAC5G,IAAI,uBAAuB,CAAC,2CAA2C,CAAC,GAAG,2CAA2C;AACtH,IAAI,uBAAuB,CAAC,4BAA4B,CAAC,GAAG,4BAA4B;AACxF,IAAI,uBAAuB,CAAC,0BAA0B,CAAC,GAAG,0BAA0B;AACpF,IAAI,uBAAuB,CAAC,+BAA+B,CAAC,GAAG,+BAA+B;AAC9F,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,GAAG,oBAAoB;AACxE,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,CAAC,EAAE,uBAAuB,KAAK,uBAAuB,GAAG,EAAE,CAAC,CAAC;;;;"}
1
+ {"version":3,"file":"validation.mjs","sources":["../../../../src/errors/types/validation.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport var AuthValidationErrorCode;\n(function (AuthValidationErrorCode) {\n AuthValidationErrorCode[\"EmptySignInUsername\"] = \"EmptySignInUsername\";\n AuthValidationErrorCode[\"EmptySignInPassword\"] = \"EmptySignInPassword\";\n AuthValidationErrorCode[\"CustomAuthSignInPassword\"] = \"CustomAuthSignInPassword\";\n AuthValidationErrorCode[\"EmptySignUpUsername\"] = \"EmptySignUpUsername\";\n AuthValidationErrorCode[\"EmptySignUpPassword\"] = \"EmptySignUpPassword\";\n AuthValidationErrorCode[\"EmptyConfirmSignUpUsername\"] = \"EmptyConfirmSignUpUsername\";\n AuthValidationErrorCode[\"EmptyConfirmSignUpCode\"] = \"EmptyConfirmSignUpCode\";\n AuthValidationErrorCode[\"EmptyResendSignUpCodeUsername\"] = \"EmptyresendSignUpCodeUsername\";\n AuthValidationErrorCode[\"EmptyChallengeResponse\"] = \"EmptyChallengeResponse\";\n AuthValidationErrorCode[\"EmptyConfirmResetPasswordUsername\"] = \"EmptyConfirmResetPasswordUsername\";\n AuthValidationErrorCode[\"EmptyConfirmResetPasswordNewPassword\"] = \"EmptyConfirmResetPasswordNewPassword\";\n AuthValidationErrorCode[\"EmptyConfirmResetPasswordConfirmationCode\"] = \"EmptyConfirmResetPasswordConfirmationCode\";\n AuthValidationErrorCode[\"EmptyResetPasswordUsername\"] = \"EmptyResetPasswordUsername\";\n AuthValidationErrorCode[\"EmptyVerifyTOTPSetupCode\"] = \"EmptyVerifyTOTPSetupCode\";\n AuthValidationErrorCode[\"EmptyConfirmUserAttributeCode\"] = \"EmptyConfirmUserAttributeCode\";\n AuthValidationErrorCode[\"IncorrectMFAMethod\"] = \"IncorrectMFAMethod\";\n AuthValidationErrorCode[\"EmptyUpdatePassword\"] = \"EmptyUpdatePassword\";\n AuthValidationErrorCode[\"InvalidPreferredChallenge\"] = \"InvalidPreferredChallenge\";\n})(AuthValidationErrorCode || (AuthValidationErrorCode = {}));\n"],"names":[],"mappings":"AAAA;AACA;AACU,IAAC;AACX,CAAC,UAAU,uBAAuB,EAAE;AACpC,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,IAAI,uBAAuB,CAAC,0BAA0B,CAAC,GAAG,0BAA0B;AACpF,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,IAAI,uBAAuB,CAAC,4BAA4B,CAAC,GAAG,4BAA4B;AACxF,IAAI,uBAAuB,CAAC,wBAAwB,CAAC,GAAG,wBAAwB;AAChF,IAAI,uBAAuB,CAAC,+BAA+B,CAAC,GAAG,+BAA+B;AAC9F,IAAI,uBAAuB,CAAC,wBAAwB,CAAC,GAAG,wBAAwB;AAChF,IAAI,uBAAuB,CAAC,mCAAmC,CAAC,GAAG,mCAAmC;AACtG,IAAI,uBAAuB,CAAC,sCAAsC,CAAC,GAAG,sCAAsC;AAC5G,IAAI,uBAAuB,CAAC,2CAA2C,CAAC,GAAG,2CAA2C;AACtH,IAAI,uBAAuB,CAAC,4BAA4B,CAAC,GAAG,4BAA4B;AACxF,IAAI,uBAAuB,CAAC,0BAA0B,CAAC,GAAG,0BAA0B;AACpF,IAAI,uBAAuB,CAAC,+BAA+B,CAAC,GAAG,+BAA+B;AAC9F,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,GAAG,oBAAoB;AACxE,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB;AAC1E,IAAI,uBAAuB,CAAC,2BAA2B,CAAC,GAAG,2BAA2B;AACtF,CAAC,EAAE,uBAAuB,KAAK,uBAAuB,GAAG,EAAE,CAAC,CAAC;;;;"}
@@ -38,7 +38,7 @@ async function signInWithUserAuth(input) {
38
38
  };
39
39
  assertTokenProviderConfig(authConfig);
40
40
  const clientMetaData = options?.clientMetadata;
41
- const preferredChallenge = options?.preferredChallenge;
41
+ const preferredChallenge = options?.preferredChallenge ?? authConfig?.passwordless?.preferredChallenge;
42
42
  assertValidationError(!!username, AuthValidationErrorCode.EmptySignInUsername);
43
43
  try {
44
44
  const handleUserAuthFlowInput = {
@@ -1 +1 @@
1
- {"version":3,"file":"signInWithUserAuth.mjs","sources":["../../../../../src/providers/cognito/apis/signInWithUserAuth.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { assertTokenProviderConfig } from '@aws-amplify/core/internals/utils';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { assertServiceError } from '../../../errors/utils/assertServiceError';\nimport { getActiveSignInUsername, getSignInResult, getSignInResultFromError, } from '../utils/signInHelpers';\nimport { autoSignInStore } from '../../../client/utils/store';\nimport { resetActiveSignInState, setActiveSignInState, } from '../../../client/utils/store/signInStore';\nimport { cacheCognitoTokens } from '../tokenProvider/cacheTokens';\nimport { dispatchSignedInHubEvent } from '../utils/dispatchSignedInHubEvent';\nimport { tokenOrchestrator } from '../tokenProvider';\nimport { handleUserAuthFlow, } from '../../../client/flows/userAuth/handleUserAuthFlow';\nimport { getNewDeviceMetadata } from '../utils/getNewDeviceMetadata';\nimport { resetAutoSignIn } from './autoSignIn';\n/**\n * Signs a user in through a registered email or phone number without a password by by receiving and entering an OTP.\n *\n * @param input - The SignInWithUserAuthInput object\n * @returns SignInWithUserAuthOutput\n * @throws service: {@link InitiateAuthException }, {@link RespondToAuthChallengeException } - Cognito service errors\n * thrown during the sign-in process.\n * @throws validation: {@link AuthValidationErrorCode } - Validation errors thrown when either username or password -- needs to change\n * are not defined.\n * @throws AuthTokenConfigException - Thrown when the token provider config is invalid.\n */\nexport async function signInWithUserAuth(input) {\n const { username, password, options } = input;\n const authConfig = Amplify.getConfig().Auth?.Cognito;\n const signInDetails = {\n loginId: username,\n authFlowType: 'USER_AUTH',\n };\n assertTokenProviderConfig(authConfig);\n const clientMetaData = options?.clientMetadata;\n const preferredChallenge = options?.preferredChallenge;\n assertValidationError(!!username, AuthValidationErrorCode.EmptySignInUsername);\n try {\n const handleUserAuthFlowInput = {\n username,\n config: authConfig,\n tokenOrchestrator,\n clientMetadata: clientMetaData,\n preferredChallenge,\n password,\n };\n const autoSignInStoreState = autoSignInStore.getState();\n if (autoSignInStoreState.active &&\n autoSignInStoreState.username === username) {\n handleUserAuthFlowInput.session = autoSignInStoreState.session;\n }\n const response = await handleUserAuthFlow(handleUserAuthFlowInput);\n const activeUsername = getActiveSignInUsername(username);\n setActiveSignInState({\n signInSession: response.Session,\n username: activeUsername,\n challengeName: response.ChallengeName,\n signInDetails,\n });\n if (response.AuthenticationResult) {\n await cacheCognitoTokens({\n username: activeUsername,\n ...response.AuthenticationResult,\n NewDeviceMetadata: await getNewDeviceMetadata({\n userPoolId: authConfig.userPoolId,\n userPoolEndpoint: authConfig.userPoolEndpoint,\n newDeviceMetadata: response.AuthenticationResult.NewDeviceMetadata,\n accessToken: response.AuthenticationResult.AccessToken,\n }),\n signInDetails,\n });\n resetActiveSignInState();\n await dispatchSignedInHubEvent();\n resetAutoSignIn();\n return {\n isSignedIn: true,\n nextStep: { signInStep: 'DONE' },\n };\n }\n return getSignInResult({\n challengeName: response.ChallengeName,\n challengeParameters: response.ChallengeParameters,\n availableChallenges: 'AvailableChallenges' in response\n ? response.AvailableChallenges\n : undefined,\n });\n }\n catch (error) {\n resetActiveSignInState();\n resetAutoSignIn();\n assertServiceError(error);\n const result = getSignInResultFromError(error.name);\n if (result)\n return result;\n throw error;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signInWithUserAuth.mjs","sources":["../../../../../src/providers/cognito/apis/signInWithUserAuth.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { assertTokenProviderConfig } from '@aws-amplify/core/internals/utils';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { assertServiceError } from '../../../errors/utils/assertServiceError';\nimport { getActiveSignInUsername, getSignInResult, getSignInResultFromError, } from '../utils/signInHelpers';\nimport { autoSignInStore } from '../../../client/utils/store';\nimport { resetActiveSignInState, setActiveSignInState, } from '../../../client/utils/store/signInStore';\nimport { cacheCognitoTokens } from '../tokenProvider/cacheTokens';\nimport { dispatchSignedInHubEvent } from '../utils/dispatchSignedInHubEvent';\nimport { tokenOrchestrator } from '../tokenProvider';\nimport { handleUserAuthFlow, } from '../../../client/flows/userAuth/handleUserAuthFlow';\nimport { getNewDeviceMetadata } from '../utils/getNewDeviceMetadata';\nimport { resetAutoSignIn } from './autoSignIn';\n/**\n * Signs a user in through a registered email or phone number without a password by by receiving and entering an OTP.\n *\n * @param input - The SignInWithUserAuthInput object\n * @returns SignInWithUserAuthOutput\n * @throws service: {@link InitiateAuthException }, {@link RespondToAuthChallengeException } - Cognito service errors\n * thrown during the sign-in process.\n * @throws validation: {@link AuthValidationErrorCode } - Validation errors thrown when either username or password -- needs to change\n * are not defined.\n * @throws AuthTokenConfigException - Thrown when the token provider config is invalid.\n */\nexport async function signInWithUserAuth(input) {\n const { username, password, options } = input;\n const authConfig = Amplify.getConfig().Auth?.Cognito;\n const signInDetails = {\n loginId: username,\n authFlowType: 'USER_AUTH',\n };\n assertTokenProviderConfig(authConfig);\n const clientMetaData = options?.clientMetadata;\n const preferredChallenge = options?.preferredChallenge ?? authConfig?.passwordless?.preferredChallenge;\n assertValidationError(!!username, AuthValidationErrorCode.EmptySignInUsername);\n try {\n const handleUserAuthFlowInput = {\n username,\n config: authConfig,\n tokenOrchestrator,\n clientMetadata: clientMetaData,\n preferredChallenge,\n password,\n };\n const autoSignInStoreState = autoSignInStore.getState();\n if (autoSignInStoreState.active &&\n autoSignInStoreState.username === username) {\n handleUserAuthFlowInput.session = autoSignInStoreState.session;\n }\n const response = await handleUserAuthFlow(handleUserAuthFlowInput);\n const activeUsername = getActiveSignInUsername(username);\n setActiveSignInState({\n signInSession: response.Session,\n username: activeUsername,\n challengeName: response.ChallengeName,\n signInDetails,\n });\n if (response.AuthenticationResult) {\n await cacheCognitoTokens({\n username: activeUsername,\n ...response.AuthenticationResult,\n NewDeviceMetadata: await getNewDeviceMetadata({\n userPoolId: authConfig.userPoolId,\n userPoolEndpoint: authConfig.userPoolEndpoint,\n newDeviceMetadata: response.AuthenticationResult.NewDeviceMetadata,\n accessToken: response.AuthenticationResult.AccessToken,\n }),\n signInDetails,\n });\n resetActiveSignInState();\n await dispatchSignedInHubEvent();\n resetAutoSignIn();\n return {\n isSignedIn: true,\n nextStep: { signInStep: 'DONE' },\n };\n }\n return getSignInResult({\n challengeName: response.ChallengeName,\n challengeParameters: response.ChallengeParameters,\n availableChallenges: 'AvailableChallenges' in response\n ? response.AvailableChallenges\n : undefined,\n });\n }\n catch (error) {\n resetActiveSignInState();\n resetAutoSignIn();\n assertServiceError(error);\n const result = getSignInResultFromError(error.name);\n if (result)\n return result;\n throw error;\n }\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,113 +1,113 @@
1
1
  {
2
- "name": "@aws-amplify/auth",
3
- "version": "6.17.3-unstable.a361dd1.0+a361dd1",
4
- "description": "Auth category of aws-amplify",
5
- "main": "./dist/cjs/index.js",
6
- "module": "./dist/esm/index.mjs",
7
- "typings": "./dist/esm/index.d.ts",
8
- "react-native": "./dist/cjs/index.js",
9
- "sideEffects": [
10
- "./dist/cjs/providers/cognito/apis/signInWithRedirect.js",
11
- "./dist/esm/providers/cognito/apis/signInWithRedirect.mjs",
12
- "./dist/cjs/providers/cognito/utils/oauth/enableOAuthListener.js",
13
- "./dist/esm/providers/cognito/utils/oauth/enableOAuthListener.mjs"
14
- ],
15
- "publishConfig": {
16
- "access": "public"
17
- },
18
- "scripts": {
19
- "test": "yarn lint --fix && jest -w 1 --coverage --logHeapUsage",
20
- "build-with-test": "npm test && npm run build",
21
- "build:umd": "webpack && webpack --config ./webpack.config.dev.js",
22
- "build:esm-cjs": "rollup --forceExit -c rollup.config.mjs",
23
- "build:watch": "npm run build:esm-cjs -- --watch",
24
- "build": "npm run clean && npm run build:esm-cjs && npm run build:umd",
25
- "clean": "npm run clean:size && rimraf lib-esm lib dist",
26
- "clean:size": "rimraf dual-publish-tmp tmp*",
27
- "format": "echo \"Not implemented\"",
28
- "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage",
29
- "lint:fix": "eslint '**/*.{ts,tsx}' --fix",
30
- "ts-coverage": "typescript-coverage-report -p ./tsconfig.build.json -t 91.18"
31
- },
32
- "typesVersions": {
33
- ">=4.2": {
34
- "cognito": [
35
- "./dist/esm/providers/cognito/index.d.ts"
36
- ],
37
- "cognito/server": [
38
- "./dist/esm/providers/cognito/apis/server/index.d.ts"
39
- ],
40
- "server": [
41
- "./dist/esm/server.d.ts"
42
- ]
43
- }
44
- },
45
- "exports": {
46
- ".": {
47
- "react-native": "./dist/cjs/index.js",
48
- "types": "./dist/esm/index.d.ts",
49
- "import": "./dist/esm/index.mjs",
50
- "require": "./dist/cjs/index.js"
51
- },
52
- "./cognito": {
53
- "react-native": "./dist/cjs/providers/cognito/index.js",
54
- "types": "./dist/esm/providers/cognito/index.d.ts",
55
- "import": "./dist/esm/providers/cognito/index.mjs",
56
- "require": "./dist/cjs/providers/cognito/index.js"
57
- },
58
- "./cognito/server": {
59
- "types": "./dist/esm/providers/cognito/apis/server/index.d.ts",
60
- "import": "./dist/esm/providers/cognito/apis/server/index.mjs",
61
- "require": "./dist/cjs/providers/cognito/apis/server/index.js"
62
- },
63
- "./server": {
64
- "types": "./dist/esm/server.d.ts",
65
- "import": "./dist/esm/server.mjs",
66
- "require": "./dist/cjs/server.js"
67
- },
68
- "./enable-oauth-listener": {
69
- "types": "./dist/esm/providers/cognito/utils/oauth/enableOAuthListener.d.ts",
70
- "import": "./dist/esm/providers/cognito/utils/oauth/enableOAuthListener.mjs",
71
- "require": "./dist/cjs/providers/cognito/utils/oauth/enableOAuthListener.js"
72
- },
73
- "./package.json": "./package.json"
74
- },
75
- "repository": {
76
- "type": "git",
77
- "url": "https://github.com/aws-amplify/amplify-js.git"
78
- },
79
- "author": "Amazon Web Services",
80
- "license": "Apache-2.0",
81
- "bugs": {
82
- "url": "https://github.com/aws/aws-amplify/issues"
83
- },
84
- "homepage": "https://aws-amplify.github.io/",
85
- "files": [
86
- "dist/cjs",
87
- "dist/esm",
88
- "src",
89
- "cognito",
90
- "server",
91
- "enable-oauth-listener"
92
- ],
93
- "dependencies": {
94
- "@aws-crypto/sha256-js": "5.2.0",
95
- "@smithy/types": "^3.3.0",
96
- "tslib": "^2.5.0"
97
- },
98
- "peerDependencies": {
99
- "@aws-amplify/core": "6.15.2-unstable.a361dd1.0+a361dd1",
100
- "@aws-amplify/react-native": "^1.1.10"
101
- },
102
- "peerDependenciesMeta": {
103
- "@aws-amplify/react-native": {
104
- "optional": true
105
- }
106
- },
107
- "devDependencies": {
108
- "@aws-amplify/core": "6.15.2-unstable.a361dd1.0+a361dd1",
109
- "@aws-amplify/react-native": "1.3.3-unstable.a361dd1.0+a361dd1",
110
- "@jest/test-sequencer": "^29.7.0"
111
- },
112
- "gitHead": "a361dd19828f6af3e6021727d2bf707b30fbe4a7"
2
+ "name": "@aws-amplify/auth",
3
+ "version": "6.18.0",
4
+ "description": "Auth category of aws-amplify",
5
+ "main": "./dist/cjs/index.js",
6
+ "module": "./dist/esm/index.mjs",
7
+ "typings": "./dist/esm/index.d.ts",
8
+ "react-native": "./dist/cjs/index.js",
9
+ "sideEffects": [
10
+ "./dist/cjs/providers/cognito/apis/signInWithRedirect.js",
11
+ "./dist/esm/providers/cognito/apis/signInWithRedirect.mjs",
12
+ "./dist/cjs/providers/cognito/utils/oauth/enableOAuthListener.js",
13
+ "./dist/esm/providers/cognito/utils/oauth/enableOAuthListener.mjs"
14
+ ],
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "scripts": {
19
+ "test": "yarn lint --fix && jest -w 1 --coverage --logHeapUsage",
20
+ "build-with-test": "npm test && npm run build",
21
+ "build:umd": "webpack && webpack --config ./webpack.config.dev.js",
22
+ "build:esm-cjs": "rollup --forceExit -c rollup.config.mjs",
23
+ "build:watch": "npm run build:esm-cjs -- --watch",
24
+ "build": "npm run clean && npm run build:esm-cjs && npm run build:umd",
25
+ "clean": "npm run clean:size && rimraf lib-esm lib dist",
26
+ "clean:size": "rimraf dual-publish-tmp tmp*",
27
+ "format": "echo \"Not implemented\"",
28
+ "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage",
29
+ "lint:fix": "eslint '**/*.{ts,tsx}' --fix",
30
+ "ts-coverage": "typescript-coverage-report -p ./tsconfig.build.json -t 91.18"
31
+ },
32
+ "typesVersions": {
33
+ ">=4.2": {
34
+ "cognito": [
35
+ "./dist/esm/providers/cognito/index.d.ts"
36
+ ],
37
+ "cognito/server": [
38
+ "./dist/esm/providers/cognito/apis/server/index.d.ts"
39
+ ],
40
+ "server": [
41
+ "./dist/esm/server.d.ts"
42
+ ]
43
+ }
44
+ },
45
+ "exports": {
46
+ ".": {
47
+ "react-native": "./dist/cjs/index.js",
48
+ "types": "./dist/esm/index.d.ts",
49
+ "import": "./dist/esm/index.mjs",
50
+ "require": "./dist/cjs/index.js"
51
+ },
52
+ "./cognito": {
53
+ "react-native": "./dist/cjs/providers/cognito/index.js",
54
+ "types": "./dist/esm/providers/cognito/index.d.ts",
55
+ "import": "./dist/esm/providers/cognito/index.mjs",
56
+ "require": "./dist/cjs/providers/cognito/index.js"
57
+ },
58
+ "./cognito/server": {
59
+ "types": "./dist/esm/providers/cognito/apis/server/index.d.ts",
60
+ "import": "./dist/esm/providers/cognito/apis/server/index.mjs",
61
+ "require": "./dist/cjs/providers/cognito/apis/server/index.js"
62
+ },
63
+ "./server": {
64
+ "types": "./dist/esm/server.d.ts",
65
+ "import": "./dist/esm/server.mjs",
66
+ "require": "./dist/cjs/server.js"
67
+ },
68
+ "./enable-oauth-listener": {
69
+ "types": "./dist/esm/providers/cognito/utils/oauth/enableOAuthListener.d.ts",
70
+ "import": "./dist/esm/providers/cognito/utils/oauth/enableOAuthListener.mjs",
71
+ "require": "./dist/cjs/providers/cognito/utils/oauth/enableOAuthListener.js"
72
+ },
73
+ "./package.json": "./package.json"
74
+ },
75
+ "repository": {
76
+ "type": "git",
77
+ "url": "https://github.com/aws-amplify/amplify-js.git"
78
+ },
79
+ "author": "Amazon Web Services",
80
+ "license": "Apache-2.0",
81
+ "bugs": {
82
+ "url": "https://github.com/aws/aws-amplify/issues"
83
+ },
84
+ "homepage": "https://aws-amplify.github.io/",
85
+ "files": [
86
+ "dist/cjs",
87
+ "dist/esm",
88
+ "src",
89
+ "cognito",
90
+ "server",
91
+ "enable-oauth-listener"
92
+ ],
93
+ "dependencies": {
94
+ "@aws-crypto/sha256-js": "5.2.0",
95
+ "@smithy/types": "^3.3.0",
96
+ "tslib": "^2.5.0"
97
+ },
98
+ "peerDependencies": {
99
+ "@aws-amplify/core": "^6.1.0",
100
+ "@aws-amplify/react-native": "^1.1.10"
101
+ },
102
+ "peerDependenciesMeta": {
103
+ "@aws-amplify/react-native": {
104
+ "optional": true
105
+ }
106
+ },
107
+ "devDependencies": {
108
+ "@aws-amplify/core": "6.16.0",
109
+ "@aws-amplify/react-native": "1.3.2",
110
+ "@jest/test-sequencer": "^29.7.0"
111
+ },
112
+ "gitHead": "07bd4bd1d05d07fa516fb596fb1712ef812ed20c"
113
113
  }
@@ -62,6 +62,24 @@ export async function handleUserAuthFlow({
62
62
  const authParameters: Record<string, string> = { USERNAME: username };
63
63
 
64
64
  if (preferredChallenge) {
65
+ // Validate that the preferred challenge is enabled in the backend config
66
+ // Only validate if passwordless config exists (for backward compatibility)
67
+ if (config.passwordless) {
68
+ const isInvalidChallenge =
69
+ (preferredChallenge === 'EMAIL_OTP' &&
70
+ !config.passwordless.emailOtpEnabled) ||
71
+ (preferredChallenge === 'SMS_OTP' &&
72
+ !config.passwordless.smsOtpEnabled) ||
73
+ (preferredChallenge === 'WEB_AUTHN' && !config.passwordless.webAuthn);
74
+
75
+ if (isInvalidChallenge) {
76
+ assertValidationError(
77
+ false,
78
+ AuthValidationErrorCode.InvalidPreferredChallenge,
79
+ );
80
+ }
81
+ }
82
+
65
83
  if (preferredChallenge === 'PASSWORD_SRP') {
66
84
  assertValidationError(
67
85
  !!password,
@@ -61,6 +61,12 @@ export const validationErrorMap: AmplifyErrorMap<AuthValidationErrorCode> = {
61
61
  [AuthValidationErrorCode.EmptyConfirmUserAttributeCode]: {
62
62
  message: 'confirmation code is required to confirmUserAttribute',
63
63
  },
64
+ [AuthValidationErrorCode.InvalidPreferredChallenge]: {
65
+ message:
66
+ 'The preferred challenge is not enabled in your backend configuration',
67
+ recoverySuggestion:
68
+ 'Ensure the authentication method is enabled in your Amplify backend configuration',
69
+ },
64
70
  };
65
71
 
66
72
  // TODO: delete this code when the Auth class is removed.
@@ -19,4 +19,5 @@ export enum AuthValidationErrorCode {
19
19
  EmptyConfirmUserAttributeCode = 'EmptyConfirmUserAttributeCode',
20
20
  IncorrectMFAMethod = 'IncorrectMFAMethod',
21
21
  EmptyUpdatePassword = 'EmptyUpdatePassword',
22
+ InvalidPreferredChallenge = 'InvalidPreferredChallenge',
22
23
  }
@@ -63,7 +63,8 @@ export async function signInWithUserAuth(
63
63
  };
64
64
  assertTokenProviderConfig(authConfig);
65
65
  const clientMetaData = options?.clientMetadata;
66
- const preferredChallenge = options?.preferredChallenge;
66
+ const preferredChallenge =
67
+ options?.preferredChallenge ?? authConfig?.passwordless?.preferredChallenge;
67
68
 
68
69
  assertValidationError(
69
70
  !!username,