@aws-amplify/auth
Version:
Auth category of aws-amplify
81 lines (78 loc) • 4.26 kB
JavaScript
import { createAssertionFunction, AmplifyError } from '@aws-amplify/core/internals/utils';
import { NOT_SUPPORTED_RECOVERY_SUGGESTION } from './passkeyErrorPlatformConstants.mjs';
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
class PasskeyError extends AmplifyError {
constructor(params) {
super(params);
// Hack for making the custom error class work when transpiled to es5
// TODO: Delete the following 2 lines after we change the build target to >= es2015
this.constructor = PasskeyError;
Object.setPrototypeOf(this, PasskeyError.prototype);
}
}
var PasskeyErrorCode;
(function (PasskeyErrorCode) {
// not supported
PasskeyErrorCode["PasskeyNotSupported"] = "PasskeyNotSupported";
// duplicate passkey
PasskeyErrorCode["PasskeyAlreadyExists"] = "PasskeyAlreadyExists";
// misconfigurations
PasskeyErrorCode["InvalidPasskeyRegistrationOptions"] = "InvalidPasskeyRegistrationOptions";
PasskeyErrorCode["InvalidPasskeyAuthenticationOptions"] = "InvalidPasskeyAuthenticationOptions";
PasskeyErrorCode["RelyingPartyMismatch"] = "RelyingPartyMismatch";
// failed credential creation / retrieval
PasskeyErrorCode["PasskeyRegistrationFailed"] = "PasskeyRegistrationFailed";
PasskeyErrorCode["PasskeyRetrievalFailed"] = "PasskeyRetrievalFailed";
// cancel / aborts
PasskeyErrorCode["PasskeyRegistrationCanceled"] = "PasskeyRegistrationCanceled";
PasskeyErrorCode["PasskeyAuthenticationCanceled"] = "PasskeyAuthenticationCanceled";
PasskeyErrorCode["PasskeyOperationAborted"] = "PasskeyOperationAborted";
})(PasskeyErrorCode || (PasskeyErrorCode = {}));
const ABORT_OR_CANCEL_RECOVERY_SUGGESTION = 'User may have canceled the ceremony or another interruption has occurred. Check underlying error for details.';
const MISCONFIGURATION_RECOVERY_SUGGESTION = 'Ensure your user pool is configured to support the WEB_AUTHN as an authentication factor.';
const passkeyErrorMap = {
[]: {
message: 'Passkeys may not be supported on this device.',
recoverySuggestion: NOT_SUPPORTED_RECOVERY_SUGGESTION,
},
[]: {
message: 'Invalid passkey registration options.',
recoverySuggestion: MISCONFIGURATION_RECOVERY_SUGGESTION,
},
[]: {
message: 'Invalid passkey authentication options.',
recoverySuggestion: MISCONFIGURATION_RECOVERY_SUGGESTION,
},
[]: {
message: 'Device failed to create passkey.',
recoverySuggestion: NOT_SUPPORTED_RECOVERY_SUGGESTION,
},
[]: {
message: 'Device failed to retrieve passkey.',
recoverySuggestion: 'Passkeys may not be available on this device. Try an alternative authentication factor like PASSWORD, EMAIL_OTP, or SMS_OTP.',
},
[]: {
message: 'Passkey already exists in authenticator.',
recoverySuggestion: 'Proceed with existing passkey or try again after deleting the credential.',
},
[]: {
message: 'Passkey registration ceremony has been canceled.',
recoverySuggestion: ABORT_OR_CANCEL_RECOVERY_SUGGESTION,
},
[]: {
message: 'Passkey authentication ceremony has been canceled.',
recoverySuggestion: ABORT_OR_CANCEL_RECOVERY_SUGGESTION,
},
[]: {
message: 'Passkey operation has been aborted.',
recoverySuggestion: ABORT_OR_CANCEL_RECOVERY_SUGGESTION,
},
[]: {
message: 'Relying party does not match current domain.',
recoverySuggestion: 'Ensure relying party identifier matches current domain.',
},
};
const assertPasskeyError = createAssertionFunction(passkeyErrorMap, PasskeyError);
export { PasskeyError, PasskeyErrorCode, assertPasskeyError, passkeyErrorMap };
//# sourceMappingURL=passkeyError.mjs.map