@okta/okta-auth-js 5.11.0 → 6.2.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.
- package/CHANGELOG.md +74 -0
- package/README.md +63 -29
- package/cjs/AuthStateManager.js +15 -6
- package/cjs/AuthStateManager.js.map +1 -1
- package/cjs/OktaAuth.js +168 -108
- package/cjs/OktaAuth.js.map +1 -1
- package/cjs/OktaUserAgent.js +2 -2
- package/cjs/OktaUserAgent.js.map +1 -1
- package/cjs/PromiseQueue.js +11 -2
- package/cjs/PromiseQueue.js.map +1 -1
- package/cjs/SavedObject.js +4 -2
- package/cjs/SavedObject.js.map +1 -1
- package/cjs/ServiceManager.js +195 -0
- package/cjs/ServiceManager.js.map +1 -0
- package/cjs/StorageManager.js +16 -9
- package/cjs/StorageManager.js.map +1 -1
- package/cjs/TokenManager.js +42 -34
- package/cjs/TokenManager.js.map +1 -1
- package/cjs/TransactionManager.js +26 -7
- package/cjs/TransactionManager.js.map +1 -1
- package/cjs/browser/browserStorage.js +36 -20
- package/cjs/browser/browserStorage.js.map +1 -1
- package/cjs/browser/fingerprint.js +12 -4
- package/cjs/browser/fingerprint.js.map +1 -1
- package/cjs/builderUtil.js +7 -19
- package/cjs/builderUtil.js.map +1 -1
- package/cjs/clock.js +5 -1
- package/cjs/clock.js.map +1 -1
- package/cjs/crypto/base64.js +18 -0
- package/cjs/crypto/base64.js.map +1 -1
- package/cjs/crypto/index.js +6 -4
- package/cjs/crypto/index.js.map +1 -1
- package/cjs/crypto/node.js +19 -13
- package/cjs/crypto/node.js.map +1 -1
- package/cjs/crypto/oidcHash.js +5 -1
- package/cjs/crypto/oidcHash.js.map +1 -1
- package/cjs/crypto/webauthn.js +101 -0
- package/cjs/crypto/webauthn.js.map +1 -0
- package/cjs/crypto/webcrypto.js +3 -1
- package/cjs/crypto/webcrypto.js.map +1 -1
- package/cjs/errors/AuthApiError.js +1 -1
- package/cjs/errors/AuthPollStopError.js +1 -1
- package/cjs/errors/AuthSdkError.js +1 -1
- package/cjs/errors/CustomError.js +5 -1
- package/cjs/errors/CustomError.js.map +1 -1
- package/cjs/errors/OAuthError.js +1 -1
- package/cjs/errors/index.js +1 -1
- package/cjs/features.js +9 -3
- package/cjs/features.js.map +1 -1
- package/cjs/fetch/fetchRequest.js +19 -6
- package/cjs/fetch/fetchRequest.js.map +1 -1
- package/cjs/http/headers.js.map +1 -1
- package/cjs/http/index.js +4 -2
- package/cjs/http/index.js.map +1 -1
- package/cjs/http/request.js +11 -5
- package/cjs/http/request.js.map +1 -1
- package/cjs/idx/authenticate.js +8 -5
- package/cjs/idx/authenticate.js.map +1 -1
- package/cjs/idx/authenticator/Authenticator.js.map +1 -1
- package/cjs/idx/authenticator/OktaPassword.js.map +1 -1
- package/cjs/idx/authenticator/SecurityQuestionEnrollment.js +1 -1
- package/cjs/idx/authenticator/SecurityQuestionEnrollment.js.map +1 -1
- package/cjs/idx/authenticator/SecurityQuestionVerification.js +2 -1
- package/cjs/idx/authenticator/SecurityQuestionVerification.js.map +1 -1
- package/cjs/idx/authenticator/VerificationCodeAuthenticator.js +2 -2
- package/cjs/idx/authenticator/VerificationCodeAuthenticator.js.map +1 -1
- package/cjs/idx/authenticator/WebauthnEnrollment.js +46 -0
- package/cjs/idx/authenticator/WebauthnEnrollment.js.map +1 -0
- package/cjs/idx/authenticator/WebauthnVerification.js +55 -0
- package/cjs/idx/authenticator/WebauthnVerification.js.map +1 -0
- package/cjs/idx/authenticator/getAuthenticator.js +17 -6
- package/cjs/idx/authenticator/getAuthenticator.js.map +1 -1
- package/cjs/idx/authenticator/index.js +34 -6
- package/cjs/idx/authenticator/index.js.map +1 -1
- package/cjs/idx/cancel.js.map +1 -1
- package/cjs/idx/emailVerify.js +73 -0
- package/cjs/idx/emailVerify.js.map +1 -0
- package/cjs/idx/flow/AccountUnlockFlow.js +30 -0
- package/cjs/idx/flow/AccountUnlockFlow.js.map +1 -0
- package/cjs/idx/flow/FlowSpecification.js +24 -4
- package/cjs/idx/flow/FlowSpecification.js.map +1 -1
- package/cjs/idx/flow/PasswordRecoveryFlow.js +4 -1
- package/cjs/idx/flow/PasswordRecoveryFlow.js.map +1 -1
- package/cjs/idx/flow/RegistrationFlow.js +2 -0
- package/cjs/idx/flow/RegistrationFlow.js.map +1 -1
- package/cjs/idx/flow/index.js +20 -5
- package/cjs/idx/flow/index.js.map +1 -1
- package/cjs/idx/handleInteractionCodeRedirect.js +6 -1
- package/cjs/idx/handleInteractionCodeRedirect.js.map +1 -1
- package/cjs/idx/headers.js +21 -5
- package/cjs/idx/headers.js.map +1 -1
- package/cjs/idx/idx-js/client.js +91 -0
- package/cjs/idx/idx-js/client.js.map +1 -0
- package/cjs/idx/idx-js/index.js +162 -0
- package/cjs/idx/idx-js/index.js.map +1 -0
- package/cjs/idx/idx-js/interact.js +83 -0
- package/cjs/idx/idx-js/interact.js.map +1 -0
- package/cjs/idx/idx-js/introspect.js +58 -0
- package/cjs/idx/idx-js/introspect.js.map +1 -0
- package/cjs/idx/idx-js/parsers.js +41 -0
- package/cjs/idx/idx-js/parsers.js.map +1 -0
- package/cjs/idx/idx-js/util.js +34 -0
- package/cjs/idx/idx-js/util.js.map +1 -0
- package/cjs/idx/idx-js/v1/actionParser.js +90 -0
- package/cjs/idx/idx-js/v1/actionParser.js.map +1 -0
- package/cjs/idx/idx-js/v1/generateIdxAction.js +117 -0
- package/cjs/idx/idx-js/v1/generateIdxAction.js.map +1 -0
- package/cjs/idx/idx-js/v1/idxResponseParser.js +137 -0
- package/cjs/idx/idx-js/v1/idxResponseParser.js.map +1 -0
- package/cjs/idx/idx-js/v1/makeIdxState.js +64 -0
- package/cjs/idx/idx-js/v1/makeIdxState.js.map +1 -0
- package/cjs/idx/idx-js/v1/parsers.js +24 -0
- package/cjs/idx/idx-js/v1/parsers.js.map +1 -0
- package/cjs/idx/idx-js/v1/remediationParser.js +32 -0
- package/cjs/idx/idx-js/v1/remediationParser.js.map +1 -0
- package/cjs/idx/index.js +121 -109
- package/cjs/idx/index.js.map +1 -1
- package/cjs/idx/interact.js +53 -36
- package/cjs/idx/interact.js.map +1 -1
- package/cjs/idx/introspect.js +17 -19
- package/cjs/idx/introspect.js.map +1 -1
- package/cjs/idx/poll.js +13 -3
- package/cjs/idx/poll.js.map +1 -1
- package/cjs/idx/proceed.js +4 -7
- package/cjs/idx/proceed.js.map +1 -1
- package/cjs/idx/recoverPassword.js +1 -1
- package/cjs/idx/recoverPassword.js.map +1 -1
- package/cjs/idx/register.js +11 -16
- package/cjs/idx/register.js.map +1 -1
- package/cjs/idx/remediate.js +74 -27
- package/cjs/idx/remediate.js.map +1 -1
- package/cjs/idx/remediators/AuthenticatorEnrollmentData.js +12 -4
- package/cjs/idx/remediators/AuthenticatorEnrollmentData.js.map +1 -1
- package/cjs/idx/remediators/AuthenticatorVerificationData.js +52 -9
- package/cjs/idx/remediators/AuthenticatorVerificationData.js.map +1 -1
- package/cjs/idx/remediators/Base/AuthenticatorData.js +31 -13
- package/cjs/idx/remediators/Base/AuthenticatorData.js.map +1 -1
- package/cjs/idx/remediators/Base/Remediator.js +67 -31
- package/cjs/idx/remediators/Base/Remediator.js.map +1 -1
- package/cjs/idx/remediators/Base/SelectAuthenticator.js +46 -30
- package/cjs/idx/remediators/Base/SelectAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/Base/VerifyAuthenticator.js +16 -4
- package/cjs/idx/remediators/Base/VerifyAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/ChallengeAuthenticator.js +2 -2
- package/cjs/idx/remediators/ChallengeAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/ChallengePoll.js +2 -2
- package/cjs/idx/remediators/EnrollAuthenticator.js +2 -2
- package/cjs/idx/remediators/EnrollAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/EnrollPoll.js +18 -9
- package/cjs/idx/remediators/EnrollPoll.js.map +1 -1
- package/cjs/idx/remediators/EnrollProfile.js +24 -9
- package/cjs/idx/remediators/EnrollProfile.js.map +1 -1
- package/cjs/idx/remediators/EnrollmentChannelData.js +96 -0
- package/cjs/idx/remediators/EnrollmentChannelData.js.map +1 -0
- package/cjs/idx/remediators/Identify.js +5 -3
- package/cjs/idx/remediators/Identify.js.map +1 -1
- package/cjs/idx/remediators/ReEnrollAuthenticator.js +6 -3
- package/cjs/idx/remediators/ReEnrollAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/RedirectIdp.js +2 -2
- package/cjs/idx/remediators/ResetAuthenticator.js +2 -2
- package/cjs/idx/remediators/ResetAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js +7 -5
- package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js.map +1 -1
- package/cjs/idx/remediators/SelectAuthenticatorEnroll.js +2 -2
- package/cjs/idx/remediators/SelectAuthenticatorEnroll.js.map +1 -1
- package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js +72 -0
- package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js.map +1 -0
- package/cjs/idx/remediators/SelectEnrollProfile.js +2 -2
- package/cjs/idx/remediators/SelectEnrollProfile.js.map +1 -1
- package/cjs/idx/remediators/SelectEnrollmentChannel.js +86 -0
- package/cjs/idx/remediators/SelectEnrollmentChannel.js.map +1 -0
- package/cjs/idx/remediators/Skip.js +5 -3
- package/cjs/idx/remediators/Skip.js.map +1 -1
- package/cjs/idx/remediators/index.js +57 -16
- package/cjs/idx/remediators/index.js.map +1 -1
- package/cjs/idx/remediators/util.js +18 -3
- package/cjs/idx/remediators/util.js.map +1 -1
- package/cjs/idx/run.js +145 -49
- package/cjs/idx/run.js.map +1 -1
- package/cjs/idx/startTransaction.js +4 -2
- package/cjs/idx/startTransaction.js.map +1 -1
- package/cjs/idx/transactionMeta.js +82 -69
- package/cjs/idx/transactionMeta.js.map +1 -1
- package/cjs/idx/types/idx-js.js.map +1 -1
- package/cjs/idx/types/index.js +59 -7
- package/cjs/idx/types/index.js.map +1 -1
- package/cjs/idx/unlockAccount.js +48 -0
- package/cjs/idx/unlockAccount.js.map +1 -0
- package/cjs/index.js +33 -13
- package/cjs/index.js.map +1 -1
- package/cjs/oidc/endpoints/authorize.js +10 -2
- package/cjs/oidc/endpoints/authorize.js.map +1 -1
- package/cjs/oidc/endpoints/index.js +5 -3
- package/cjs/oidc/endpoints/index.js.map +1 -1
- package/cjs/oidc/endpoints/token.js +16 -3
- package/cjs/oidc/endpoints/token.js.map +1 -1
- package/cjs/oidc/endpoints/well-known.js +7 -3
- package/cjs/oidc/endpoints/well-known.js.map +1 -1
- package/cjs/oidc/exchangeCodeForTokens.js +12 -4
- package/cjs/oidc/exchangeCodeForTokens.js.map +1 -1
- package/cjs/oidc/getToken.js +12 -6
- package/cjs/oidc/getToken.js.map +1 -1
- package/cjs/oidc/getUserInfo.js +7 -3
- package/cjs/oidc/getUserInfo.js.map +1 -1
- package/cjs/oidc/getWithPopup.js +8 -2
- package/cjs/oidc/getWithPopup.js.map +1 -1
- package/cjs/oidc/getWithRedirect.js +15 -38
- package/cjs/oidc/getWithRedirect.js.map +1 -1
- package/cjs/oidc/getWithoutPrompt.js +8 -2
- package/cjs/oidc/getWithoutPrompt.js.map +1 -1
- package/cjs/oidc/handleOAuthResponse.js +87 -87
- package/cjs/oidc/handleOAuthResponse.js.map +1 -1
- package/cjs/oidc/index.js +4 -2
- package/cjs/oidc/index.js.map +1 -1
- package/cjs/oidc/parseFromUrl.js +9 -3
- package/cjs/oidc/parseFromUrl.js.map +1 -1
- package/cjs/oidc/renewToken.js.map +1 -1
- package/cjs/oidc/renewTokens.js +6 -2
- package/cjs/oidc/renewTokens.js.map +1 -1
- package/cjs/oidc/renewTokensWithRefresh.js +5 -1
- package/cjs/oidc/renewTokensWithRefresh.js.map +1 -1
- package/cjs/oidc/revokeToken.js +34 -31
- package/cjs/oidc/revokeToken.js.map +1 -1
- package/cjs/oidc/util/browser.js +5 -1
- package/cjs/oidc/util/browser.js.map +1 -1
- package/cjs/oidc/util/defaultTokenParams.js.map +1 -1
- package/cjs/oidc/util/errors.js.map +1 -1
- package/cjs/oidc/util/index.js +27 -11
- package/cjs/oidc/util/index.js.map +1 -1
- package/cjs/oidc/util/loginRedirect.js +10 -1
- package/cjs/oidc/util/loginRedirect.js.map +1 -1
- package/cjs/oidc/util/oauth.js +4 -2
- package/cjs/oidc/util/oauth.js.map +1 -1
- package/cjs/oidc/util/oauthMeta.js +36 -0
- package/cjs/oidc/util/oauthMeta.js.map +1 -0
- package/cjs/oidc/util/pkce.js +11 -3
- package/cjs/oidc/util/pkce.js.map +1 -1
- package/cjs/oidc/util/prepareTokenParams.js +62 -39
- package/cjs/oidc/util/prepareTokenParams.js.map +1 -1
- package/cjs/oidc/util/validateClaims.js +3 -1
- package/cjs/oidc/util/validateClaims.js.map +1 -1
- package/cjs/oidc/verifyToken.js +13 -4
- package/cjs/oidc/verifyToken.js.map +1 -1
- package/cjs/options/browser.js +81 -0
- package/cjs/options/browser.js.map +1 -0
- package/cjs/options/index.js +94 -0
- package/cjs/options/index.js.map +1 -0
- package/cjs/options/node.js +46 -0
- package/cjs/options/node.js.map +1 -0
- package/cjs/server/serverStorage.js +9 -5
- package/cjs/server/serverStorage.js.map +1 -1
- package/cjs/services/AutoRenewService.js +94 -0
- package/cjs/services/AutoRenewService.js.map +1 -0
- package/cjs/services/SyncStorageService.js +93 -0
- package/cjs/services/SyncStorageService.js.map +1 -0
- package/cjs/services/index.js +30 -0
- package/cjs/services/index.js.map +1 -0
- package/cjs/tx/AuthTransaction.js +18 -9
- package/cjs/tx/AuthTransaction.js.map +1 -1
- package/cjs/tx/TransactionState.js +0 -17
- package/cjs/tx/TransactionState.js.map +1 -1
- package/cjs/tx/api.js +11 -6
- package/cjs/tx/api.js.map +1 -1
- package/cjs/tx/index.js +7 -5
- package/cjs/tx/index.js.map +1 -1
- package/cjs/tx/poll.js +6 -4
- package/cjs/tx/poll.js.map +1 -1
- package/cjs/tx/util.js +5 -1
- package/cjs/tx/util.js.map +1 -1
- package/cjs/types/Service.js +2 -0
- package/cjs/types/Service.js.map +1 -0
- package/cjs/types/Transaction.js +10 -2
- package/cjs/types/Transaction.js.map +1 -1
- package/cjs/types/index.js +29 -14
- package/cjs/types/index.js.map +1 -1
- package/cjs/util/index.js +7 -18
- package/cjs/util/index.js.map +1 -1
- package/cjs/util/misc.js +5 -1
- package/cjs/util/misc.js.map +1 -1
- package/cjs/util/object.js +16 -6
- package/cjs/util/object.js.map +1 -1
- package/cjs/util/sharedStorage.js +5 -1
- package/cjs/util/sharedStorage.js.map +1 -1
- package/cjs/util/url.js.map +1 -1
- package/dist/okta-auth-js.min.js +1 -1
- package/dist/okta-auth-js.min.js.LICENSE.txt +0 -20
- package/dist/okta-auth-js.min.js.map +1 -1
- package/dist/okta-auth-js.polyfill.js +1 -1
- package/dist/okta-auth-js.polyfill.js.map +1 -1
- package/dist/okta-auth-js.umd.js +1 -1
- package/dist/okta-auth-js.umd.js.LICENSE.txt +1 -19
- package/dist/okta-auth-js.umd.js.map +1 -1
- package/esm/{index.js → esm.browser.js} +3283 -2698
- package/esm/esm.browser.js.map +1 -0
- package/esm/esm.node.mjs +9277 -0
- package/esm/esm.node.mjs.map +1 -0
- package/lib/AuthStateManager.d.ts +2 -5
- package/lib/OktaAuth.d.ts +14 -16
- package/lib/ServiceManager.d.ts +38 -0
- package/lib/StorageManager.d.ts +2 -2
- package/lib/TokenManager.d.ts +4 -5
- package/lib/TransactionManager.d.ts +4 -3
- package/lib/browser/fingerprint.d.ts +2 -3
- package/lib/builderUtil.d.ts +1 -2
- package/lib/crypto/base64.d.ts +2 -0
- package/lib/crypto/browser.d.ts +1 -1
- package/lib/crypto/webauthn.d.ts +25 -0
- package/lib/features.d.ts +1 -1
- package/lib/http/headers.d.ts +2 -2
- package/lib/http/request.d.ts +4 -4
- package/lib/idx/authenticate.d.ts +2 -2
- package/lib/idx/authenticator/Authenticator.d.ts +4 -5
- package/lib/idx/authenticator/OktaPassword.d.ts +7 -9
- package/lib/idx/authenticator/SecurityQuestionEnrollment.d.ts +9 -8
- package/lib/idx/authenticator/SecurityQuestionVerification.d.ts +7 -7
- package/lib/idx/authenticator/VerificationCodeAuthenticator.d.ts +6 -2
- package/lib/idx/authenticator/WebauthnEnrollment.d.ts +16 -0
- package/lib/idx/authenticator/WebauthnVerification.d.ts +17 -0
- package/lib/idx/authenticator/getAuthenticator.d.ts +1 -1
- package/lib/idx/authenticator/index.d.ts +9 -0
- package/lib/idx/cancel.d.ts +2 -2
- package/lib/idx/emailVerify.d.ts +26 -0
- package/lib/{util/emailVerify.d.ts → idx/flow/AccountUnlockFlow.d.ts} +2 -6
- package/lib/idx/flow/FlowSpecification.d.ts +3 -2
- package/lib/idx/flow/index.d.ts +1 -0
- package/lib/idx/headers.d.ts +3 -2
- package/lib/idx/idx-js/client.d.ts +36 -0
- package/lib/idx/idx-js/index.d.ts +51 -0
- package/lib/idx/idx-js/interact.d.ts +25 -0
- package/lib/idx/idx-js/introspect.d.ts +20 -0
- package/lib/idx/idx-js/parsers.d.ts +15 -0
- package/lib/idx/idx-js/util.d.ts +12 -0
- package/lib/idx/idx-js/v1/actionParser.d.ts +16 -0
- package/lib/idx/idx-js/v1/generateIdxAction.d.ts +13 -0
- package/lib/idx/idx-js/v1/idxResponseParser.d.ts +20 -0
- package/lib/idx/idx-js/v1/makeIdxState.d.ts +13 -0
- package/lib/idx/idx-js/v1/parsers.d.ts +16 -0
- package/lib/idx/idx-js/v1/remediationParser.d.ts +12 -0
- package/lib/idx/index.d.ts +12 -10
- package/lib/idx/interact.d.ts +7 -13
- package/lib/idx/introspect.d.ts +4 -3
- package/lib/idx/poll.d.ts +2 -2
- package/lib/idx/proceed.d.ts +8 -5
- package/lib/idx/recoverPassword.d.ts +2 -2
- package/lib/idx/register.d.ts +2 -2
- package/lib/idx/remediate.d.ts +10 -4
- package/lib/idx/remediators/AuthenticatorEnrollmentData.d.ts +3 -3
- package/lib/idx/remediators/AuthenticatorVerificationData.d.ts +5 -5
- package/lib/idx/remediators/Base/AuthenticatorData.d.ts +10 -10
- package/lib/idx/remediators/Base/SelectAuthenticator.d.ts +10 -7
- package/lib/idx/remediators/Base/VerifyAuthenticator.d.ts +8 -12
- package/lib/idx/remediators/EnrollProfile.d.ts +1 -1
- package/lib/idx/remediators/EnrollmentChannelData.d.ts +54 -0
- package/lib/idx/remediators/Identify.d.ts +2 -2
- package/lib/idx/remediators/ReEnrollAuthenticator.d.ts +2 -2
- package/lib/idx/remediators/RedirectIdp.d.ts +3 -3
- package/lib/idx/remediators/SelectAuthenticatorUnlockAccount.d.ts +38 -0
- package/lib/idx/remediators/SelectEnrollmentChannel.d.ts +40 -0
- package/lib/idx/remediators/index.d.ts +3 -0
- package/lib/idx/remediators/util.d.ts +2 -2
- package/lib/idx/run.d.ts +5 -3
- package/lib/idx/startTransaction.d.ts +3 -2
- package/lib/idx/transactionMeta.d.ts +10 -31
- package/lib/idx/types/FlowIdentifier.d.ts +1 -1
- package/lib/idx/types/idx-js.d.ts +44 -1
- package/lib/idx/types/index.d.ts +36 -9
- package/lib/idx/unlockAccount.d.ts +15 -0
- package/lib/index.d.ts +1 -0
- package/lib/oidc/endpoints/well-known.d.ts +3 -3
- package/lib/oidc/exchangeCodeForTokens.d.ts +14 -2
- package/lib/oidc/getToken.d.ts +2 -2
- package/lib/oidc/getWithPopup.d.ts +2 -2
- package/lib/oidc/getWithRedirect.d.ts +2 -2
- package/lib/oidc/getWithoutPrompt.d.ts +2 -2
- package/lib/oidc/handleOAuthResponse.d.ts +2 -2
- package/lib/oidc/parseFromUrl.d.ts +1 -1
- package/lib/oidc/renewToken.d.ts +2 -2
- package/lib/oidc/renewTokens.d.ts +1 -1
- package/lib/oidc/renewTokensWithRefresh.d.ts +2 -2
- package/lib/oidc/revokeToken.d.ts +2 -2
- package/lib/oidc/util/browser.d.ts +3 -3
- package/lib/oidc/util/defaultTokenParams.d.ts +2 -2
- package/lib/oidc/util/errors.d.ts +2 -2
- package/lib/oidc/util/index.d.ts +1 -0
- package/lib/oidc/util/loginRedirect.d.ts +4 -4
- package/lib/oidc/util/oauth.d.ts +4 -11
- package/lib/oidc/util/oauthMeta.d.ts +2 -0
- package/lib/oidc/util/prepareTokenParams.d.ts +5 -2
- package/lib/oidc/util/validateClaims.d.ts +2 -2
- package/lib/oidc/verifyToken.d.ts +2 -2
- package/lib/options/browser.d.ts +16 -0
- package/lib/{options.d.ts → options/index.d.ts} +1 -1
- package/lib/options/node.d.ts +16 -0
- package/lib/server/serverStorage.d.ts +1 -1
- package/lib/services/AutoRenewService.d.ts +27 -0
- package/lib/services/{TokenService.d.ts → SyncStorageService.d.ts} +8 -5
- package/lib/services/index.d.ts +13 -0
- package/lib/tx/AuthTransaction.d.ts +2 -2
- package/lib/tx/TransactionState.d.ts +11 -1
- package/lib/tx/api.d.ts +6 -6
- package/lib/types/OktaAuthOptions.d.ts +11 -8
- package/lib/types/Service.d.ts +23 -0
- package/lib/types/Storage.d.ts +3 -3
- package/lib/types/Transaction.d.ts +10 -7
- package/lib/types/UserClaims.d.ts +3 -3
- package/lib/types/api.d.ts +49 -22
- package/lib/types/index.d.ts +1 -1
- package/lib/util/console.d.ts +1 -1
- package/lib/util/index.d.ts +0 -1
- package/lib/util/sharedStorage.d.ts +1 -1
- package/lib/util/types.d.ts +1 -1
- package/lib/util/url.d.ts +2 -2
- package/package.json +30 -13
- package/polyfill/index.js +1 -0
- package/cjs/options.js +0 -154
- package/cjs/options.js.map +0 -1
- package/cjs/services/TokenService.js +0 -108
- package/cjs/services/TokenService.js.map +0 -1
- package/cjs/util/emailVerify.js +0 -28
- package/cjs/util/emailVerify.js.map +0 -1
- package/esm/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../lib/idx/introspect.ts"],"names":["introspect","authClient","options","
|
|
1
|
+
{"version":3,"sources":["../../../lib/idx/introspect.ts"],"names":["introspect","authClient","options","rawIdxResponse","transactionManager","loadIdxResponse","version","IDX_API_VERSION","domain","idx","err","withCredentials","makeIdxState"],"mappings":";;;;;;AAYA;;AAEA;;AACA;;AACA;;AAhBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAeO,eAAeA,UAAf,CACLC,UADK,EAELC,OAA0B,GAAG,EAFxB,EAGiB;AACtB;AACA,MAAIC,cAAc,GAAGF,UAAU,CAACG,kBAAX,CAA8BC,eAA9B,EAArB,CAFsB,CAItB;;AACA,MAAI,CAACF,cAAL,EAAqB;AACnB,UAAMG,OAAO,GAAGJ,OAAO,CAACI,OAAR,IAAmBC,0BAAnC;AACA,UAAMC,MAAM,GAAG,0BAAeP,UAAf,CAAf;;AACA,QAAI;AACFE,MAAAA,cAAc,GAAG,MAAMM,eAAIT,UAAJ,CAAe;AAAEQ,QAAAA,MAAF;AAAU,WAAGN,OAAb;AAAsBI,QAAAA;AAAtB,OAAf,CAAvB;AACD,KAFD,CAEE,OAAOI,GAAP,EAAY;AACZ,UAAI,8BAAiBA,GAAjB,CAAJ,EAA2B;AACzBP,QAAAA,cAAc,GAAGO,GAAjB;AACD,OAFD,MAEO;AACL,cAAMA,GAAN;AACD;AACF;AACF;;AAED,QAAM;AAAEC,IAAAA;AAAF,MAAsBT,OAA5B;AACA,SAAOO,eAAIG,YAAJ,CAAiBT,cAAjB,EAAiC;AAAEQ,IAAAA;AAAF,GAAjC,CAAP;AACD","sourcesContent":["/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport idx from './idx-js';\nimport { OktaAuthInterface } from '../types';\nimport { IdxResponse, isRawIdxResponse } from './types/idx-js';\nimport { getOAuthDomain } from '../oidc';\nimport { IDX_API_VERSION } from '../constants';\n\nexport interface IntrospectOptions {\n withCredentials?: boolean;\n interactionHandle?: string;\n stateHandle?: string;\n version?: string;\n}\n\nexport async function introspect (\n authClient: OktaAuthInterface, \n options: IntrospectOptions = {}\n): Promise<IdxResponse> {\n // try load from storage first\n let rawIdxResponse = authClient.transactionManager.loadIdxResponse();\n \n // call idx.introspect if no existing idx response available in storage\n if (!rawIdxResponse) {\n const version = options.version || IDX_API_VERSION;\n const domain = getOAuthDomain(authClient);\n try {\n rawIdxResponse = await idx.introspect({ domain, ...options, version });\n } catch (err) {\n if (isRawIdxResponse(err)) {\n rawIdxResponse = err;\n } else {\n throw err;\n }\n }\n }\n\n const { withCredentials } = options;\n return idx.makeIdxState(rawIdxResponse, { withCredentials });\n}\n"],"file":"introspect.js"}
|
package/cjs/idx/poll.js
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
exports.poll = poll;
|
|
4
6
|
|
|
7
|
+
var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
|
|
8
|
+
|
|
9
|
+
var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
|
|
10
|
+
|
|
11
|
+
var _isInteger = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/number/is-integer"));
|
|
12
|
+
|
|
13
|
+
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
14
|
+
|
|
5
15
|
var _proceed = require("./proceed");
|
|
6
16
|
|
|
7
17
|
var _transactionMeta = require("./transactionMeta");
|
|
@@ -26,14 +36,14 @@ async function poll(authClient, options = {}) {
|
|
|
26
36
|
startPolling: true
|
|
27
37
|
});
|
|
28
38
|
const meta = (0, _transactionMeta.getSavedTransactionMeta)(authClient);
|
|
29
|
-
let availablePollingRemeditaions = meta === null || meta === void 0 ? void 0 : (_meta$remediations = meta.remediations) === null || _meta$remediations === void 0 ? void 0 : _meta$remediations.
|
|
39
|
+
let availablePollingRemeditaions = meta === null || meta === void 0 ? void 0 : (_meta$remediations = meta.remediations) === null || _meta$remediations === void 0 ? void 0 : (0, _find.default)(_meta$remediations).call(_meta$remediations, remediation => (0, _includes.default)(remediation).call(remediation, 'poll'));
|
|
30
40
|
|
|
31
41
|
if (!(availablePollingRemeditaions !== null && availablePollingRemeditaions !== void 0 && availablePollingRemeditaions.length)) {
|
|
32
42
|
(0, _util.warn)('No polling remediations available at the current IDX flow stage');
|
|
33
43
|
}
|
|
34
44
|
|
|
35
|
-
if (
|
|
36
|
-
return new
|
|
45
|
+
if ((0, _isInteger.default)(options.refresh)) {
|
|
46
|
+
return new _promise.default(function (resolve, reject) {
|
|
37
47
|
setTimeout(async function () {
|
|
38
48
|
try {
|
|
39
49
|
var _transaction$nextStep, _transaction$nextStep2;
|
package/cjs/idx/poll.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../lib/idx/poll.ts"],"names":["poll","authClient","options","transaction","startPolling","meta","availablePollingRemeditaions","remediations","
|
|
1
|
+
{"version":3,"sources":["../../../lib/idx/poll.ts"],"names":["poll","authClient","options","transaction","startPolling","meta","availablePollingRemeditaions","remediations","remediation","length","refresh","resolve","reject","setTimeout","nextStep","err"],"mappings":";;;;;;;;;;;;;;AAYA;;AAOA;;AACA;;AApBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYO,eAAeA,IAAf,CAAoBC,UAApB,EAAmDC,OAAuB,GAAG,EAA7E,EAA0G;AAAA;;AAC/G,MAAIC,WAAW,GAAG,MAAM,sBAAQF,UAAR,EAAoB;AAC1CG,IAAAA,YAAY,EAAE;AAD4B,GAApB,CAAxB;AAIA,QAAMC,IAAI,GAAG,8CAAwBJ,UAAxB,CAAb;AACA,MAAIK,4BAA4B,GAAGD,IAAH,aAAGA,IAAH,6CAAGA,IAAI,CAAEE,YAAT,uDAAG,gEAAyBC,WAAW,IAAI,uBAAAA,WAAW,MAAX,CAAAA,WAAW,EAAU,MAAV,CAAnD,CAAnC;;AACA,MAAI,EAACF,4BAAD,aAACA,4BAAD,eAACA,4BAA4B,CAAEG,MAA/B,CAAJ,EAA2C;AACzC,oBAAK,iEAAL;AACD;;AAED,MAAI,wBAAiBP,OAAO,CAACQ,OAAzB,CAAJ,EAAuC;AACrC,WAAO,qBAAY,UAAUC,OAAV,EAAmBC,MAAnB,EAA2B;AAC5CC,MAAAA,UAAU,CAAC,kBAAkB;AAC3B,YAAI;AAAA;;AACF,gBAAMH,OAAO,4BAAGP,WAAW,CAACW,QAAf,oFAAG,sBAAsBd,IAAzB,2DAAG,uBAA4BU,OAA5C;;AACA,cAAIA,OAAJ,EAAa;AACXC,YAAAA,OAAO,CAACX,IAAI,CAACC,UAAD,EAAa;AACvBS,cAAAA;AADuB,aAAb,CAAL,CAAP;AAGD,WAJD,MAIO;AACLC,YAAAA,OAAO,CAACR,WAAD,CAAP;AACD;AACF,SATD,CASE,OAAOY,GAAP,EAAY;AACZH,UAAAA,MAAM,CAACG,GAAD,CAAN;AACD;AACF,OAbS,EAaPb,OAAO,CAACQ,OAbD,CAAV;AAcD,KAfM,CAAP;AAgBD;;AAED,SAAOP,WAAP;AACD","sourcesContent":["/*!\n * Copyright (c) 2021-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { proceed } from './proceed';\n\nimport { \n IdxPollOptions,\n IdxTransaction,\n OktaAuthInterface,\n} from '../types';\nimport { getSavedTransactionMeta } from './transactionMeta';\nimport { warn } from '../util';\n\nexport async function poll(authClient: OktaAuthInterface, options: IdxPollOptions = {}): Promise<IdxTransaction> {\n let transaction = await proceed(authClient, {\n startPolling: true\n });\n\n const meta = getSavedTransactionMeta(authClient);\n let availablePollingRemeditaions = meta?.remediations?.find(remediation => remediation.includes('poll'));\n if (!availablePollingRemeditaions?.length) {\n warn('No polling remediations available at the current IDX flow stage');\n }\n\n if (Number.isInteger(options.refresh)) {\n return new Promise(function (resolve, reject) {\n setTimeout(async function () {\n try {\n const refresh = transaction.nextStep?.poll?.refresh;\n if (refresh) {\n resolve(poll(authClient, {\n refresh\n }));\n } else {\n resolve(transaction);\n }\n } catch (err) {\n reject(err);\n }\n }, options.refresh);\n });\n }\n\n return transaction;\n}\n"],"file":"poll.js"}
|
package/cjs/idx/proceed.js
CHANGED
|
@@ -7,8 +7,6 @@ var _run = require("./run");
|
|
|
7
7
|
|
|
8
8
|
var _transactionMeta = require("./transactionMeta");
|
|
9
9
|
|
|
10
|
-
var _flow = require("./flow");
|
|
11
|
-
|
|
12
10
|
var _errors = require("../errors");
|
|
13
11
|
|
|
14
12
|
/*!
|
|
@@ -29,21 +27,20 @@ function canProceed(authClient, options) {
|
|
|
29
27
|
|
|
30
28
|
async function proceed(authClient, options = {}) {
|
|
31
29
|
const {
|
|
32
|
-
stateTokenExternalId,
|
|
33
30
|
state
|
|
34
31
|
} = options;
|
|
35
32
|
const meta = (0, _transactionMeta.getSavedTransactionMeta)(authClient, {
|
|
36
33
|
state
|
|
37
|
-
}); // Proceed always needs saved transaction meta
|
|
34
|
+
}); // Proceed always needs saved transaction meta
|
|
38
35
|
|
|
39
|
-
if (!meta
|
|
36
|
+
if (!meta) {
|
|
40
37
|
throw new _errors.AuthSdkError('Unable to proceed: saved transaction could not be loaded');
|
|
41
38
|
} // Determine the flow specification based on the saved flow
|
|
42
39
|
|
|
43
40
|
|
|
44
|
-
const
|
|
41
|
+
const flow = meta === null || meta === void 0 ? void 0 : meta.flow;
|
|
45
42
|
return (0, _run.run)(authClient, { ...options,
|
|
46
|
-
|
|
43
|
+
flow
|
|
47
44
|
});
|
|
48
45
|
}
|
|
49
46
|
//# sourceMappingURL=proceed.js.map
|
package/cjs/idx/proceed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../lib/idx/proceed.ts"],"names":["canProceed","authClient","options","meta","proceed","
|
|
1
|
+
{"version":3,"sources":["../../../lib/idx/proceed.ts"],"names":["canProceed","authClient","options","meta","proceed","state","AuthSdkError","flow"],"mappings":";;;;;AAiBA;;AASA;;AACA;;AA3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA2BO,SAASA,UAAT,CAAoBC,UAApB,EAAmDC,OAAnD,EAAiF;AACtF,QAAMC,IAAI,GAAG,8CAAwBF,UAAxB,EAAoCC,OAApC,CAAb;AACA,SAAO,CAAC,CAACC,IAAT;AACD;;AAEM,eAAeC,OAAf,CACLH,UADK,EAELC,OAAuB,GAAG,EAFrB,EAGoB;AACzB,QAAM;AAAEG,IAAAA;AAAF,MAAYH,OAAlB;AACA,QAAMC,IAAI,GAAG,8CAAwBF,UAAxB,EAAoC;AAAEI,IAAAA;AAAF,GAApC,CAAb,CAFyB,CAIzB;;AACA,MAAI,CAACF,IAAL,EAAW;AACT,UAAM,IAAIG,oBAAJ,CAAiB,0DAAjB,CAAN;AACD,GAPwB,CASzB;;;AACA,QAAMC,IAAI,GAAGJ,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAEI,IAAnB;AAEA,SAAO,cAAIN,UAAJ,EAAgB,EACrB,GAAGC,OADkB;AAErBK,IAAAA;AAFqB,GAAhB,CAAP;AAID","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { \n OktaAuthInterface,\n IdxTransaction,\n} from '../types';\nimport { run } from './run';\nimport { AuthenticationOptions } from './authenticate';\nimport {\n EnrollPollValues as EnrollPollOptions,\n SelectEnrollmentChannelValues as SelectEnrollmentChannelOptions\n} from './remediators';\nimport { RegistrationOptions } from './register';\nimport { PasswordRecoveryOptions } from './recoverPassword';\nimport { AccountUnlockOptions } from './unlockAccount';\nimport { getSavedTransactionMeta } from './transactionMeta';\nimport { AuthSdkError } from '../errors';\n\nexport type ProceedOptions = AuthenticationOptions\n & RegistrationOptions\n & PasswordRecoveryOptions\n & AccountUnlockOptions\n & EnrollPollOptions\n & SelectEnrollmentChannelOptions\n & { step?: string };\n\nexport function canProceed(authClient: OktaAuthInterface, options?: { state?: string }) {\n const meta = getSavedTransactionMeta(authClient, options);\n return !!meta;\n}\n\nexport async function proceed(\n authClient: OktaAuthInterface,\n options: ProceedOptions = {}\n): Promise<IdxTransaction> {\n const { state } = options;\n const meta = getSavedTransactionMeta(authClient, { state });\n\n // Proceed always needs saved transaction meta\n if (!meta) {\n throw new AuthSdkError('Unable to proceed: saved transaction could not be loaded');\n }\n\n // Determine the flow specification based on the saved flow\n const flow = meta?.flow;\n\n return run(authClient, { \n ...options, \n flow\n });\n}\n"],"file":"proceed.js"}
|
|
@@ -17,7 +17,7 @@ var _flow = require("./flow");
|
|
|
17
17
|
*
|
|
18
18
|
* See the License for the specific language governing permissions and limitations under the License.
|
|
19
19
|
*/
|
|
20
|
-
async function recoverPassword(authClient, options) {
|
|
20
|
+
async function recoverPassword(authClient, options = {}) {
|
|
21
21
|
const flowSpec = (0, _flow.getFlowSpecification)(authClient, 'recoverPassword');
|
|
22
22
|
return (0, _run.run)(authClient, { ...options,
|
|
23
23
|
...flowSpec
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../lib/idx/recoverPassword.ts"],"names":["recoverPassword","authClient","options","flowSpec"],"mappings":";;;;AAaA;;AASA;;AAtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA2BO,eAAeA,eAAf,CACLC,UADK,
|
|
1
|
+
{"version":3,"sources":["../../../lib/idx/recoverPassword.ts"],"names":["recoverPassword","authClient","options","flowSpec"],"mappings":";;;;AAaA;;AASA;;AAtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA2BO,eAAeA,eAAf,CACLC,UADK,EAC0BC,OAAgC,GAAG,EAD7D,EAEoB;AACzB,QAAMC,QAAQ,GAAG,gCAAqBF,UAArB,EAAiC,iBAAjC,CAAjB;AACA,SAAO,cACLA,UADK,EAEL,EACE,GAAGC,OADL;AAEE,OAAGC;AAFL,GAFK,CAAP;AAOD","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { run } from './run';\nimport {\n IdentifyValues,\n SelectAuthenticatorAuthenticateValues,\n ChallengeAuthenticatorValues,\n AuthenticatorVerificationDataValues,\n ResetAuthenticatorValues,\n ReEnrollAuthenticatorValues,\n} from './remediators';\nimport { getFlowSpecification } from './flow';\nimport { \n OktaAuthInterface, \n IdxOptions, \n IdxTransaction,\n} from '../types';\n\nexport type PasswordRecoveryOptions = IdxOptions \n & IdentifyValues \n & SelectAuthenticatorAuthenticateValues \n & ChallengeAuthenticatorValues \n & ResetAuthenticatorValues\n & AuthenticatorVerificationDataValues\n & ReEnrollAuthenticatorValues;\n\nexport async function recoverPassword(\n authClient: OktaAuthInterface, options: PasswordRecoveryOptions = {}\n): Promise<IdxTransaction> {\n const flowSpec = getFlowSpecification(authClient, 'recoverPassword');\n return run(\n authClient, \n { \n ...options,\n ...flowSpec,\n }\n );\n}\n"],"file":"recoverPassword.js"}
|
package/cjs/idx/register.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
exports.register = register;
|
|
4
6
|
|
|
7
|
+
var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
|
|
8
|
+
|
|
5
9
|
var _run = require("./run");
|
|
6
10
|
|
|
7
11
|
var _transactionMeta = require("./transactionMeta");
|
|
8
12
|
|
|
9
13
|
var _startTransaction = require("./startTransaction");
|
|
10
14
|
|
|
11
|
-
var _flow = require("./flow");
|
|
12
|
-
|
|
13
15
|
var _errors = require("../errors");
|
|
14
16
|
|
|
15
17
|
var _types = require("../types");
|
|
@@ -27,37 +29,30 @@ var _types = require("../types");
|
|
|
27
29
|
*/
|
|
28
30
|
async function register(authClient, options = {}) {
|
|
29
31
|
// Only check at the beginning of the transaction
|
|
30
|
-
if (!(0, _transactionMeta.
|
|
32
|
+
if (!(0, _transactionMeta.hasSavedInteractionHandle)(authClient)) {
|
|
31
33
|
const {
|
|
32
34
|
enabledFeatures,
|
|
33
35
|
availableSteps
|
|
34
|
-
} = await (0, _startTransaction.startTransaction)(authClient, {
|
|
36
|
+
} = await (0, _startTransaction.startTransaction)(authClient, { ...options,
|
|
35
37
|
flow: 'register',
|
|
36
|
-
|
|
38
|
+
autoRemediate: false
|
|
37
39
|
});
|
|
38
40
|
|
|
39
|
-
if (!options.activationToken && enabledFeatures && !enabledFeatures.
|
|
41
|
+
if (!options.activationToken && enabledFeatures && !(0, _includes.default)(enabledFeatures).call(enabledFeatures, _types.IdxFeature.REGISTRATION)) {
|
|
40
42
|
const error = new _errors.AuthSdkError('Registration is not supported based on your current org configuration.');
|
|
41
|
-
return {
|
|
42
|
-
status: _types.IdxStatus.FAILURE,
|
|
43
|
-
error
|
|
44
|
-
};
|
|
43
|
+
throw error; // return { status: IdxStatus.FAILURE, error } as unknown as IdxTransaction; // TODO: wny not just throw the error?
|
|
45
44
|
}
|
|
46
45
|
|
|
47
46
|
if (options.activationToken && availableSteps !== null && availableSteps !== void 0 && availableSteps.some(({
|
|
48
47
|
name
|
|
49
48
|
}) => name === 'identify')) {
|
|
50
49
|
const error = new _errors.AuthSdkError('activationToken is not supported based on your current org configuration.');
|
|
51
|
-
return {
|
|
52
|
-
status: _types.IdxStatus.FAILURE,
|
|
53
|
-
error
|
|
54
|
-
};
|
|
50
|
+
throw error; // return { status: IdxStatus.FAILURE, error } as unknown as IdxTransaction; // TODO: wny not just throw the error?
|
|
55
51
|
}
|
|
56
52
|
}
|
|
57
53
|
|
|
58
|
-
const flowSpec = (0, _flow.getFlowSpecification)(authClient, 'register');
|
|
59
54
|
return (0, _run.run)(authClient, { ...options,
|
|
60
|
-
|
|
55
|
+
flow: 'register'
|
|
61
56
|
});
|
|
62
57
|
}
|
|
63
58
|
//# sourceMappingURL=register.js.map
|
package/cjs/idx/register.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../lib/idx/register.ts"],"names":["register","authClient","options","enabledFeatures","availableSteps","flow","
|
|
1
|
+
{"version":3,"sources":["../../../lib/idx/register.ts"],"names":["register","authClient","options","enabledFeatures","availableSteps","flow","autoRemediate","activationToken","IdxFeature","REGISTRATION","error","AuthSdkError","some","name"],"mappings":";;;;;;;;AAaA;;AACA;;AACA;;AAQA;;AACA;;AAxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA4BO,eAAeA,QAAf,CACLC,UADK,EAC0BC,OAA4B,GAAG,EADzD,EAEoB;AAEzB;AACA,MAAI,CAAC,gDAA0BD,UAA1B,CAAL,EAA4C;AAC1C,UAAM;AAAEE,MAAAA,eAAF;AAAmBC,MAAAA;AAAnB,QAAsC,MAAM,wCAAiBH,UAAjB,EAA6B,EAC7E,GAAGC,OAD0E;AAE7EG,MAAAA,IAAI,EAAE,UAFuE;AAG7EC,MAAAA,aAAa,EAAE;AAH8D,KAA7B,CAAlD;;AAKA,QAAI,CAACJ,OAAO,CAACK,eAAT,IAA4BJ,eAA5B,IAA+C,CAAC,uBAAAA,eAAe,MAAf,CAAAA,eAAe,EAAUK,kBAAWC,YAArB,CAAnE,EAAuG;AACrG,YAAMC,KAAK,GAAG,IAAIC,oBAAJ,CAAiB,wEAAjB,CAAd;AACA,YAAMD,KAAN,CAFqG,CAGvG;AACC;;AACD,QAAIR,OAAO,CAACK,eAAR,IAA2BH,cAA3B,aAA2BA,cAA3B,eAA2BA,cAAc,CAAEQ,IAAhB,CAAqB,CAAC;AAAEC,MAAAA;AAAF,KAAD,KAAcA,IAAI,KAAK,UAA5C,CAA/B,EAAwF;AACtF,YAAMH,KAAK,GAAG,IAAIC,oBAAJ,CAAiB,2EAAjB,CAAd;AACA,YAAMD,KAAN,CAFsF,CAGxF;AACC;AACF;;AAED,SAAO,cAAIT,UAAJ,EAAgB,EACrB,GAAGC,OADkB;AAErBG,IAAAA,IAAI,EAAE;AAFe,GAAhB,CAAP;AAID","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { run } from './run';\nimport { hasSavedInteractionHandle } from './transactionMeta';\nimport { startTransaction } from './startTransaction';\nimport { \n EnrollProfileValues,\n SelectAuthenticatorEnrollValues,\n EnrollAuthenticatorValues,\n AuthenticatorEnrollmentDataValues,\n SkipValues,\n} from './remediators';\nimport { AuthSdkError } from '../errors';\nimport { \n IdxOptions, \n IdxTransaction, \n OktaAuthInterface, \n IdxFeature,\n} from '../types';\n\nexport type RegistrationOptions = IdxOptions \n & EnrollProfileValues \n & SelectAuthenticatorEnrollValues \n & EnrollAuthenticatorValues \n & AuthenticatorEnrollmentDataValues \n & SkipValues;\n\nexport async function register(\n authClient: OktaAuthInterface, options: RegistrationOptions = {}\n): Promise<IdxTransaction> {\n\n // Only check at the beginning of the transaction\n if (!hasSavedInteractionHandle(authClient)) {\n const { enabledFeatures, availableSteps } = await startTransaction(authClient, {\n ...options,\n flow: 'register',\n autoRemediate: false\n });\n if (!options.activationToken && enabledFeatures && !enabledFeatures.includes(IdxFeature.REGISTRATION)) {\n const error = new AuthSdkError('Registration is not supported based on your current org configuration.');\n throw error;\n // return { status: IdxStatus.FAILURE, error } as unknown as IdxTransaction; // TODO: wny not just throw the error?\n }\n if (options.activationToken && availableSteps?.some(({ name }) => name === 'identify')) {\n const error = new AuthSdkError('activationToken is not supported based on your current org configuration.');\n throw error;\n // return { status: IdxStatus.FAILURE, error } as unknown as IdxTransaction; // TODO: wny not just throw the error?\n }\n }\n\n return run(authClient, {\n ...options,\n flow: 'register'\n });\n}\n"],"file":"register.js"}
|
package/cjs/idx/remediate.js
CHANGED
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
exports.getRemediator = getRemediator;
|
|
4
6
|
exports.remediate = remediate;
|
|
5
7
|
|
|
8
|
+
var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
|
|
9
|
+
|
|
10
|
+
var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
|
|
11
|
+
|
|
12
|
+
var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
|
|
13
|
+
|
|
14
|
+
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
15
|
+
|
|
16
|
+
var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
|
|
17
|
+
|
|
6
18
|
var _errors = require("../errors");
|
|
7
19
|
|
|
8
20
|
var _remediators = require("./remediators");
|
|
@@ -24,14 +36,25 @@ var _idxJs = require("./types/idx-js");
|
|
|
24
36
|
/* eslint-disable max-statements, max-depth, complexity */
|
|
25
37
|
// Return first match idxRemediation in allowed remediators
|
|
26
38
|
function getRemediator(idxRemediations, values, options) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
39
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
40
|
+
const remediators = options.remediators;
|
|
41
|
+
let remediator; // remediation name specified by caller - fast-track remediator lookup
|
|
42
|
+
|
|
43
|
+
if (options.step) {
|
|
44
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
45
|
+
const remediation = (0, _find.default)(idxRemediations).call(idxRemediations, ({
|
|
46
|
+
name
|
|
47
|
+
}) => name === options.step);
|
|
48
|
+
const T = remediators[remediation.name];
|
|
49
|
+
return new T(remediation, values);
|
|
50
|
+
}
|
|
51
|
+
|
|
31
52
|
const remediatorCandidates = [];
|
|
32
53
|
|
|
33
54
|
for (let remediation of idxRemediations) {
|
|
34
|
-
|
|
55
|
+
var _context;
|
|
56
|
+
|
|
57
|
+
const isRemeditionInFlow = (0, _includes.default)(_context = (0, _keys.default)(remediators)).call(_context, remediation.name);
|
|
35
58
|
|
|
36
59
|
if (!isRemeditionInFlow) {
|
|
37
60
|
continue;
|
|
@@ -68,11 +91,11 @@ function canSkipFn(idxResponse) {
|
|
|
68
91
|
}
|
|
69
92
|
|
|
70
93
|
function canResendFn(idxResponse) {
|
|
71
|
-
return
|
|
94
|
+
return (0, _keys.default)(idxResponse.actions).some(actionName => (0, _includes.default)(actionName).call(actionName, 'resend'));
|
|
72
95
|
}
|
|
73
96
|
|
|
74
97
|
function getIdxMessages(idxResponse) {
|
|
75
|
-
var _rawIdxState$messages;
|
|
98
|
+
var _rawIdxState$messages, _context2;
|
|
76
99
|
|
|
77
100
|
let messages = [];
|
|
78
101
|
const {
|
|
@@ -80,7 +103,7 @@ function getIdxMessages(idxResponse) {
|
|
|
80
103
|
neededToProceed
|
|
81
104
|
} = idxResponse; // Handle global messages
|
|
82
105
|
|
|
83
|
-
const globalMessages = (_rawIdxState$messages = rawIdxState.messages) === null || _rawIdxState$messages === void 0 ? void 0 : _rawIdxState$messages.value.
|
|
106
|
+
const globalMessages = (_rawIdxState$messages = rawIdxState.messages) === null || _rawIdxState$messages === void 0 ? void 0 : (0, _map.default)(_context2 = _rawIdxState$messages.value).call(_context2, message => message);
|
|
84
107
|
|
|
85
108
|
if (globalMessages) {
|
|
86
109
|
messages = [...messages, ...globalMessages];
|
|
@@ -141,8 +164,10 @@ function handleIdxError(e, remediator) {
|
|
|
141
164
|
}
|
|
142
165
|
|
|
143
166
|
function getActionFromValues(values, idxResponse) {
|
|
167
|
+
var _context3;
|
|
168
|
+
|
|
144
169
|
// Currently support resend actions only
|
|
145
|
-
return
|
|
170
|
+
return (0, _find.default)(_context3 = (0, _keys.default)(idxResponse.actions)).call(_context3, action => !!values.resend && (0, _includes.default)(action).call(action, '-resend'));
|
|
146
171
|
}
|
|
147
172
|
|
|
148
173
|
function removeActionFromValues(values) {
|
|
@@ -158,7 +183,8 @@ async function remediate(idxResponse, values, options) {
|
|
|
158
183
|
interactionCode
|
|
159
184
|
} = idxResponse;
|
|
160
185
|
const {
|
|
161
|
-
remediators
|
|
186
|
+
remediators,
|
|
187
|
+
flow
|
|
162
188
|
} = options; // If the response contains an interaction code, there is no need to remediate
|
|
163
189
|
|
|
164
190
|
if (interactionCode) {
|
|
@@ -176,23 +202,6 @@ async function remediate(idxResponse, values, options) {
|
|
|
176
202
|
terminal,
|
|
177
203
|
messages
|
|
178
204
|
};
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
const remediator = getRemediator(neededToProceed, values, options);
|
|
182
|
-
|
|
183
|
-
if (!remediator) {
|
|
184
|
-
throw new _errors.AuthSdkError(`
|
|
185
|
-
No remediation can match current flow, check policy settings in your org.
|
|
186
|
-
Remediations: [${neededToProceed.reduce((acc, curr) => acc ? acc + ' ,' + curr.name : curr.name, '')}]
|
|
187
|
-
`);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
if (messages.length) {
|
|
191
|
-
const nextStep = getNextStep(remediator, idxResponse);
|
|
192
|
-
return {
|
|
193
|
-
nextStep,
|
|
194
|
-
messages
|
|
195
|
-
};
|
|
196
205
|
} // Try actions in idxResponse first
|
|
197
206
|
|
|
198
207
|
|
|
@@ -217,8 +226,46 @@ async function remediate(idxResponse, values, options) {
|
|
|
217
226
|
}
|
|
218
227
|
|
|
219
228
|
return remediate(idxResponse, valuesWithoutExecutedAction, options); // recursive call
|
|
229
|
+
} // search for action in remediation list
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
const remediationAction = (0, _find.default)(neededToProceed).call(neededToProceed, ({
|
|
233
|
+
name
|
|
234
|
+
}) => name === action);
|
|
235
|
+
|
|
236
|
+
if (remediationAction) {
|
|
237
|
+
try {
|
|
238
|
+
idxResponse = await idxResponse.proceed(action, {});
|
|
239
|
+
} catch (e) {
|
|
240
|
+
return handleIdxError(e, remediators);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
return remediate(idxResponse, values, options); // recursive call
|
|
220
244
|
}
|
|
221
245
|
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
const remediator = getRemediator(neededToProceed, values, options);
|
|
249
|
+
|
|
250
|
+
if (!remediator && flow === 'default') {
|
|
251
|
+
return {
|
|
252
|
+
idxResponse
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
if (!remediator) {
|
|
257
|
+
throw new _errors.AuthSdkError(`
|
|
258
|
+
No remediation can match current flow, check policy settings in your org.
|
|
259
|
+
Remediations: [${(0, _reduce.default)(neededToProceed).call(neededToProceed, (acc, curr) => acc ? acc + ' ,' + curr.name : curr.name, '')}]
|
|
260
|
+
`);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
if (messages.length) {
|
|
264
|
+
const nextStep = getNextStep(remediator, idxResponse);
|
|
265
|
+
return {
|
|
266
|
+
nextStep,
|
|
267
|
+
messages
|
|
268
|
+
};
|
|
222
269
|
} // Return next step to the caller
|
|
223
270
|
|
|
224
271
|
|
package/cjs/idx/remediate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../lib/idx/remediate.ts"],"names":["getRemediator","idxRemediations","values","options","remediators","remediator","remediatorCandidates","remediation","isRemeditionInFlow","Object","keys","includes","name","T","canRemediate","push","isTerminalResponse","idxResponse","neededToProceed","interactionCode","length","canSkipFn","some","canResendFn","actions","actionName","getIdxMessages","messages","rawIdxState","globalMessages","value","map","message","fieldMessages","Remediator","getMessages","getNextStep","nextStep","context","canSkip","canResend","handleIdxError","e","idxState","terminal","getActionFromValues","find","action","resend","removeActionFromValues","undefined","remediate","AuthSdkError","reduce","acc","curr","actionFromValues","valuesWithoutExecutedAction","canceled","getName","data","getData","proceed","getValuesAfterProceed"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable max-statements, max-depth, complexity */\nimport { AuthSdkError } from '../errors';\nimport { Remediator, RemediationValues } from './remediators';\nimport { RunOptions } from './run';\nimport { NextStep, IdxMessage } from './types';\nimport { \n IdxResponse, \n IdxRemediation,\n isIdxResponse, \n} from './types/idx-js';\n\ninterface RemediationResponse {\n idxResponse?: IdxResponse;\n nextStep?: NextStep;\n messages?: IdxMessage[];\n terminal?: boolean;\n canceled?: boolean;\n}\n// Return first match idxRemediation in allowed remediators\nexport function getRemediator(\n idxRemediations: IdxRemediation[],\n values: RemediationValues,\n options: RunOptions,\n): Remediator {\n const { remediators } = options;\n\n let remediator;\n const remediatorCandidates = [];\n for (let remediation of idxRemediations) {\n const isRemeditionInFlow = Object.keys(remediators).includes(remediation.name);\n if (!isRemeditionInFlow) {\n continue;\n }\n\n const T = remediators[remediation.name];\n remediator = new T(remediation, values);\n if (remediator.canRemediate()) {\n // found the remediator\n return remediator;\n }\n // remediator cannot handle the current values\n // maybe return for next step\n remediatorCandidates.push(remediator); \n }\n \n return remediatorCandidates[0];\n}\n\nfunction isTerminalResponse(idxResponse: IdxResponse) {\n const { neededToProceed, interactionCode } = idxResponse;\n return !neededToProceed.length && !interactionCode;\n}\n\nfunction canSkipFn(idxResponse: IdxResponse) {\n return idxResponse.neededToProceed.some(({ name }) => name === 'skip');\n}\n\nfunction canResendFn(idxResponse: IdxResponse) {\n return Object.keys(idxResponse.actions).some(actionName => actionName.includes('resend'));\n}\n\nfunction getIdxMessages(idxResponse: IdxResponse): IdxMessage[] {\n let messages = [];\n const { rawIdxState, neededToProceed } = idxResponse;\n\n // Handle global messages\n const globalMessages = rawIdxState.messages?.value.map(message => message);\n if (globalMessages) {\n messages = [...messages, ...globalMessages];\n }\n\n // Handle field messages for current flow\n for (let remediation of neededToProceed) {\n const fieldMessages = Remediator.getMessages(remediation);\n if (fieldMessages) {\n messages = [...messages, ...fieldMessages];\n }\n }\n\n return messages;\n}\n\nfunction getNextStep(\n remediator: Remediator, idxResponse: IdxResponse\n): NextStep {\n const nextStep = remediator.getNextStep(idxResponse.context);\n const canSkip = canSkipFn(idxResponse);\n const canResend = canResendFn(idxResponse);\n return {\n ...nextStep,\n ...(canSkip && {canSkip}),\n ...(canResend && {canResend}),\n };\n}\n\nfunction handleIdxError(e, remediator?) {\n // Handle idx messages\n const idxState: IdxResponse = isIdxResponse(e) ? e : null;\n if (!idxState) {\n // Thrown error terminates the interaction with idx\n throw e;\n }\n const terminal = isTerminalResponse(idxState);\n const messages = getIdxMessages(idxState);\n if (terminal) {\n return { terminal, messages };\n } else {\n const nextStep = remediator && getNextStep(remediator, idxState);\n return { \n messages, \n ...(nextStep && { nextStep }) \n };\n }\n}\n\nfunction getActionFromValues(values, idxResponse: IdxResponse): string | undefined {\n // Currently support resend actions only\n return Object.keys(idxResponse.actions).find(action => !!values.resend && action.includes('-resend'));\n}\n\nfunction removeActionFromValues(values) {\n // Currently support resend actions only\n values.resend = undefined;\n return values;\n}\n\n// This function is called recursively until it reaches success or cannot be remediated\nexport async function remediate(\n idxResponse: IdxResponse,\n values: RemediationValues,\n options: RunOptions\n): Promise<RemediationResponse> {\n let { neededToProceed, interactionCode } = idxResponse;\n const { remediators } = options;\n\n // If the response contains an interaction code, there is no need to remediate\n if (interactionCode) {\n return { idxResponse };\n }\n\n // Reach to terminal state\n const terminal = isTerminalResponse(idxResponse);\n const messages = getIdxMessages(idxResponse);\n if (terminal) {\n return { terminal, messages };\n }\n\n const remediator = getRemediator(neededToProceed, values, options);\n \n if (!remediator) {\n throw new AuthSdkError(`\n No remediation can match current flow, check policy settings in your org.\n Remediations: [${neededToProceed.reduce((acc, curr) => acc ? acc + ' ,' + curr.name : curr.name, '')}]\n `);\n }\n\n if (messages.length) {\n const nextStep = getNextStep(remediator, idxResponse);\n return { nextStep, messages };\n }\n \n // Try actions in idxResponse first\n const actionFromValues = getActionFromValues(values, idxResponse);\n const actions = [\n ...options.actions || [],\n ...(actionFromValues && [actionFromValues] || []),\n ];\n if (actions) {\n for (let action of actions) {\n let valuesWithoutExecutedAction = removeActionFromValues(values);\n if (typeof idxResponse.actions[action] === 'function') {\n try {\n idxResponse = await idxResponse.actions[action]();\n } catch (e) {\n return handleIdxError(e, remediators);\n }\n if (action === 'cancel') {\n return { canceled: true };\n }\n return remediate(idxResponse, valuesWithoutExecutedAction, options); // recursive call\n }\n }\n }\n\n // Return next step to the caller\n if (!remediator.canRemediate()) {\n const nextStep = getNextStep(remediator, idxResponse);\n return { idxResponse, nextStep };\n }\n\n const name = remediator.getName();\n const data = remediator.getData();\n try {\n idxResponse = await idxResponse.proceed(name, data);\n\n // We may want to trim the values bag for the next remediation\n // Let the remediator decide what the values should be (default to current values)\n values = remediator.getValuesAfterProceed();\n return remediate(idxResponse, values, options); // recursive call\n } catch (e) {\n return handleIdxError(e, remediator);\n }\n}\n"],"file":"remediate.js"}
|
|
1
|
+
{"version":3,"sources":["../../../lib/idx/remediate.ts"],"names":["getRemediator","idxRemediations","values","options","remediators","remediator","step","remediation","name","T","remediatorCandidates","isRemeditionInFlow","canRemediate","push","isTerminalResponse","idxResponse","neededToProceed","interactionCode","length","canSkipFn","some","canResendFn","actions","actionName","getIdxMessages","messages","rawIdxState","globalMessages","value","message","fieldMessages","Remediator","getMessages","getNextStep","nextStep","context","canSkip","canResend","handleIdxError","e","idxState","terminal","getActionFromValues","action","resend","removeActionFromValues","undefined","remediate","flow","actionFromValues","valuesWithoutExecutedAction","canceled","remediationAction","proceed","AuthSdkError","acc","curr","getName","data","getData","getValuesAfterProceed"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable max-statements, max-depth, complexity */\nimport { AuthSdkError } from '../errors';\nimport { Remediator, RemediationValues } from './remediators';\nimport { NextStep, IdxMessage, FlowIdentifier } from './types';\nimport { RemediationFlow } from './flow';\nimport { \n IdxResponse, \n IdxRemediation,\n isIdxResponse, \n} from './types/idx-js';\n\ninterface RemediationResponse {\n idxResponse?: IdxResponse;\n nextStep?: NextStep;\n messages?: IdxMessage[];\n terminal?: boolean;\n canceled?: boolean;\n}\nexport interface RemediateOptions {\n remediators?: RemediationFlow;\n actions?: string[];\n flow?: FlowIdentifier;\n step?: string;\n}\n\n// Return first match idxRemediation in allowed remediators\nexport function getRemediator(\n idxRemediations: IdxRemediation[],\n values: RemediationValues,\n options: RemediateOptions,\n): Remediator {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediators = options.remediators!;\n\n let remediator;\n // remediation name specified by caller - fast-track remediator lookup \n if (options.step) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediation = idxRemediations.find(({ name }) => name === options.step)!;\n const T = remediators[remediation.name];\n return new T(remediation, values);\n }\n\n const remediatorCandidates = [];\n for (let remediation of idxRemediations) {\n const isRemeditionInFlow = Object.keys(remediators as object).includes(remediation.name);\n if (!isRemeditionInFlow) {\n continue;\n }\n\n const T = remediators[remediation.name];\n remediator = new T(remediation, values);\n if (remediator.canRemediate()) {\n // found the remediator\n return remediator;\n }\n // remediator cannot handle the current values\n // maybe return for next step\n remediatorCandidates.push(remediator as never); \n }\n \n return remediatorCandidates[0];\n}\n\nfunction isTerminalResponse(idxResponse: IdxResponse) {\n const { neededToProceed, interactionCode } = idxResponse;\n return !neededToProceed.length && !interactionCode;\n}\n\nfunction canSkipFn(idxResponse: IdxResponse) {\n return idxResponse.neededToProceed.some(({ name }) => name === 'skip');\n}\n\nfunction canResendFn(idxResponse: IdxResponse) {\n return Object.keys(idxResponse.actions).some(actionName => actionName.includes('resend'));\n}\n\nfunction getIdxMessages(idxResponse: IdxResponse): IdxMessage[] {\n let messages = [];\n const { rawIdxState, neededToProceed } = idxResponse;\n\n // Handle global messages\n const globalMessages = rawIdxState.messages?.value.map(message => message);\n if (globalMessages) {\n messages = [...messages, ...globalMessages] as never;\n }\n\n // Handle field messages for current flow\n for (let remediation of neededToProceed) {\n const fieldMessages = Remediator.getMessages(remediation);\n if (fieldMessages) {\n messages = [...messages, ...fieldMessages] as never;\n }\n }\n\n return messages;\n}\n\nfunction getNextStep(\n remediator: Remediator, idxResponse: IdxResponse\n): NextStep {\n const nextStep = remediator.getNextStep(idxResponse.context);\n const canSkip = canSkipFn(idxResponse);\n const canResend = canResendFn(idxResponse);\n return {\n ...nextStep,\n ...(canSkip && {canSkip}),\n ...(canResend && {canResend}),\n };\n}\n\nfunction handleIdxError(e, remediator?) {\n // Handle idx messages\n const idxState = isIdxResponse(e) ? e : null;\n if (!idxState) {\n // Thrown error terminates the interaction with idx\n throw e;\n }\n const terminal = isTerminalResponse(idxState);\n const messages = getIdxMessages(idxState);\n if (terminal) {\n return { terminal, messages };\n } else {\n const nextStep = remediator && getNextStep(remediator, idxState);\n return { \n messages, \n ...(nextStep && { nextStep }) \n };\n }\n}\n\nfunction getActionFromValues(values, idxResponse: IdxResponse): string | undefined {\n // Currently support resend actions only\n return Object.keys(idxResponse.actions).find(action => !!values.resend && action.includes('-resend'));\n}\n\nfunction removeActionFromValues(values) {\n // Currently support resend actions only\n values.resend = undefined;\n return values;\n}\n\n// This function is called recursively until it reaches success or cannot be remediated\nexport async function remediate(\n idxResponse: IdxResponse,\n values: RemediationValues,\n options: RemediateOptions\n): Promise<RemediationResponse> {\n let { neededToProceed, interactionCode } = idxResponse;\n const { remediators, flow } = options;\n\n // If the response contains an interaction code, there is no need to remediate\n if (interactionCode) {\n return { idxResponse };\n }\n\n // Reach to terminal state\n const terminal = isTerminalResponse(idxResponse);\n const messages = getIdxMessages(idxResponse);\n if (terminal) {\n return { terminal, messages };\n }\n \n // Try actions in idxResponse first\n const actionFromValues = getActionFromValues(values, idxResponse);\n const actions = [\n ...options.actions || [],\n ...(actionFromValues && [actionFromValues] || []),\n ];\n if (actions) {\n for (let action of actions) {\n let valuesWithoutExecutedAction = removeActionFromValues(values);\n if (typeof idxResponse.actions[action] === 'function') {\n try {\n idxResponse = await idxResponse.actions[action]();\n } catch (e) {\n return handleIdxError(e, remediators);\n }\n if (action === 'cancel') {\n return { canceled: true };\n }\n return remediate(idxResponse, valuesWithoutExecutedAction, options); // recursive call\n }\n\n // search for action in remediation list\n const remediationAction = neededToProceed.find(({ name }) => name === action);\n if (remediationAction) {\n try {\n idxResponse = await idxResponse.proceed(action, {});\n }\n catch (e) {\n return handleIdxError(e, remediators);\n }\n\n return remediate(idxResponse, values, options); // recursive call\n }\n }\n }\n\n const remediator = getRemediator(neededToProceed, values, options);\n if (!remediator && flow === 'default') {\n return { idxResponse };\n }\n\n if (!remediator) {\n throw new AuthSdkError(`\n No remediation can match current flow, check policy settings in your org.\n Remediations: [${neededToProceed.reduce((acc, curr) => acc ? acc + ' ,' + curr.name : curr.name, '')}]\n `);\n }\n\n if (messages.length) {\n const nextStep = getNextStep(remediator, idxResponse);\n return { nextStep, messages };\n }\n\n // Return next step to the caller\n if (!remediator.canRemediate()) {\n const nextStep = getNextStep(remediator, idxResponse);\n return { idxResponse, nextStep };\n }\n\n const name = remediator.getName();\n const data = remediator.getData();\n try {\n idxResponse = await idxResponse.proceed(name, data);\n\n // We may want to trim the values bag for the next remediation\n // Let the remediator decide what the values should be (default to current values)\n values = remediator.getValuesAfterProceed();\n return remediate(idxResponse, values, options); // recursive call\n } catch (e) {\n return handleIdxError(e, remediator);\n }\n}\n"],"file":"remediate.js"}
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
5
|
exports.AuthenticatorEnrollmentData = void 0;
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
|
|
8
|
+
|
|
9
|
+
var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/values"));
|
|
10
|
+
|
|
11
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
8
12
|
|
|
9
13
|
var _AuthenticatorData = require("./Base/AuthenticatorData");
|
|
10
14
|
|
|
11
15
|
var _util = require("./util");
|
|
12
16
|
|
|
17
|
+
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
18
|
+
|
|
13
19
|
/*!
|
|
14
20
|
* Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
15
21
|
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
|
|
@@ -23,10 +29,12 @@ var _util = require("./util");
|
|
|
23
29
|
*/
|
|
24
30
|
class AuthenticatorEnrollmentData extends _AuthenticatorData.AuthenticatorData {
|
|
25
31
|
mapAuthenticator() {
|
|
32
|
+
var _context;
|
|
33
|
+
|
|
26
34
|
const authenticatorData = this.getAuthenticatorData();
|
|
27
35
|
const authenticatorFromRemediation = (0, _util.getAuthenticatorFromRemediation)(this.remediation);
|
|
28
36
|
return {
|
|
29
|
-
id: authenticatorFromRemediation.form.value.
|
|
37
|
+
id: (0, _find.default)(_context = authenticatorFromRemediation.form.value).call(_context, ({
|
|
30
38
|
name
|
|
31
39
|
}) => name === 'id').value,
|
|
32
40
|
methodType: authenticatorData.methodType,
|
|
@@ -53,7 +61,7 @@ class AuthenticatorEnrollmentData extends _AuthenticatorData.AuthenticatorData {
|
|
|
53
61
|
|
|
54
62
|
const {
|
|
55
63
|
phoneNumber
|
|
56
|
-
} = this
|
|
64
|
+
} = (0, _values.default)(this);
|
|
57
65
|
data = { ...(data && data),
|
|
58
66
|
...(phoneNumber && {
|
|
59
67
|
phoneNumber
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../lib/idx/remediators/AuthenticatorEnrollmentData.ts"],"names":["AuthenticatorEnrollmentData","AuthenticatorData","mapAuthenticator","authenticatorData","getAuthenticatorData","authenticatorFromRemediation","remediation","id","form","value","
|
|
1
|
+
{"version":3,"sources":["../../../../lib/idx/remediators/AuthenticatorEnrollmentData.ts"],"names":["AuthenticatorEnrollmentData","AuthenticatorData","mapAuthenticator","authenticatorData","getAuthenticatorData","authenticatorFromRemediation","remediation","id","form","value","name","methodType","phoneNumber","getInputAuthenticator","type","required","label","mapAuthenticatorDataFromValues","data"],"mappings":";;;;;;;;;;;;AAcA;;AACA;;AAfA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUO,MAAMA,2BAAN,SAA0CC,oCAA1C,CAA4D;AAKjEC,EAAAA,gBAAgB,GAAG;AAAA;;AACjB,UAAMC,iBAAiB,GAAG,KAAKC,oBAAL,EAA1B;AACA,UAAMC,4BAA4B,GAAG,2CAAgC,KAAKC,WAArC,CAArC;AACA,WAAO;AACLC,MAAAA,EAAE,EAAE,8BAAAF,4BAA4B,CAACG,IAA7B,CAAmCC,KAAnC,iBACI,CAAC;AAAEC,QAAAA;AAAF,OAAD,KAAcA,IAAI,KAAK,IAD3B,EACkCD,KAFjC;AAGLE,MAAAA,UAAU,EAAER,iBAAiB,CAAEQ,UAH1B;AAILC,MAAAA,WAAW,EAAET,iBAAiB,CAAES;AAJ3B,KAAP;AAMD;;AAEDC,EAAAA,qBAAqB,GAAG;AACtB,WAAO,CACL;AAAEH,MAAAA,IAAI,EAAE,YAAR;AAAsBI,MAAAA,IAAI,EAAE,QAA5B;AAAsCC,MAAAA,QAAQ,EAAE;AAAhD,KADK,EAEL;AAAEL,MAAAA,IAAI,EAAE,aAAR;AAAuBI,MAAAA,IAAI,EAAE,QAA7B;AAAuCC,MAAAA,QAAQ,EAAE,IAAjD;AAAuDC,MAAAA,KAAK,EAAE;AAA9D,KAFK,CAAP;AAID;;AAESC,EAAAA,8BAA8B,CAACC,IAAD,EAAQ;AAC9C;AACAA,IAAAA,IAAI,GAAG,MAAMD,8BAAN,CAAqCC,IAArC,CAAP,CAF8C,CAG9C;;AACA,UAAM;AAAEN,MAAAA;AAAF,6BAAkB,IAAlB,CAAN;AACAM,IAAAA,IAAI,GAAG,EACL,IAAIA,IAAI,IAAIA,IAAZ,CADK;AAEL,UAAIN,WAAW,IAAI;AAAEA,QAAAA;AAAF,OAAnB;AAFK,KAAP;AAKA,WAAQM,IAAI,CAACN,WAAL,IAAoBM,IAAI,CAACP,UAA1B,GAAwCO,IAAxC,GAA+C,IAAtD;AACD;;AAlCgE;;;8BAAtDlB,2B,qBACc,+B","sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthenticatorData, AuthenticatorDataValues } from './Base/AuthenticatorData';\nimport { getAuthenticatorFromRemediation } from './util';\n\nexport type AuthenticatorEnrollmentDataValues = AuthenticatorDataValues & {\n phoneNumber?: string;\n resend?: boolean; // resend is not a remediator value - revise when IdxResponse structure is updated\n}\nexport class AuthenticatorEnrollmentData extends AuthenticatorData {\n static remediationName = 'authenticator-enrollment-data';\n\n values!: AuthenticatorEnrollmentDataValues;\n\n mapAuthenticator() {\n const authenticatorData = this.getAuthenticatorData();\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation)!;\n return { \n id: authenticatorFromRemediation.form!.value\n .find(({ name }) => name === 'id')!.value,\n methodType: authenticatorData!.methodType,\n phoneNumber: authenticatorData!.phoneNumber,\n };\n }\n\n getInputAuthenticator() {\n return [\n { name: 'methodType', type: 'string', required: true },\n { name: 'phoneNumber', type: 'string', required: true, label: 'Phone Number' },\n ];\n }\n\n protected mapAuthenticatorDataFromValues(data?) {\n // get mapped authenticator from base class\n data = super.mapAuthenticatorDataFromValues(data);\n // add phoneNumber to authenticator if it exists in values\n const { phoneNumber } = this.values;\n data = { \n ...(data && data), \n ...(phoneNumber && { phoneNumber }) \n };\n\n return (data.phoneNumber && data.methodType) ? data : null;\n }\n\n}\n"],"file":"AuthenticatorEnrollmentData.js"}
|