UNPKG

supertokens-auth-react

Version:

ReactJS SDK that provides login functionality with SuperTokens.

941 lines (928 loc) 77.2 kB
"use strict"; var genericComponentOverrideContext = require("./genericComponentOverrideContext.js"); var jsxRuntime = require("react/jsx-runtime"); var NormalisedURLPath = require("supertokens-web-js/utils/normalisedURLPath"); var uiEntry = require("./index2.js"); require("./multifactorauth.js"); var componentOverrideContext = require("./emailpassword-shared2.js"); var React = require("react"); var translations = require("./emailverification-shared2.js"); var translationContext = require("./translationContext.js"); var arrowLeftIcon = require("./arrowLeftIcon.js"); var formBase = require("./emailpassword-shared6.js"); var STGeneralError = require("supertokens-web-js/utils/error"); var button = require("./emailpassword-shared.js"); var authCompWrapper = require("./authCompWrapper.js"); var emailverification = require("./emailverification.js"); var recipe$1 = require("./emailverification-shared.js"); var session = require("./session.js"); var types = require("./multifactorauth-shared.js"); var recipe = require("./emailpassword-shared3.js"); var STGeneralError$1 = require("supertokens-web-js/lib/build/error"); var constants = require("./emailpassword-shared4.js"); require("supertokens-web-js"); require("supertokens-web-js/utils/cookieHandler"); require("supertokens-web-js/utils/postSuperTokensInitCallbacks"); require("supertokens-web-js/utils/windowHandler"); require("supertokens-web-js/recipe/multitenancy"); require("supertokens-web-js/utils"); require("supertokens-web-js/utils/normalisedURLDomain"); require("react-dom"); require("./multitenancy-shared.js"); require("./multifactorauth-shared2.js"); require("supertokens-web-js/recipe/multifactorauth"); require("supertokens-web-js/utils/sessionClaimValidatorStore"); require("./recipeModule-shared.js"); require("./oauth2provider-shared.js"); require("supertokens-web-js/recipe/oauth2provider"); require("./authRecipe-shared.js"); require("supertokens-web-js/lib/build/normalisedURLPath"); require("./multifactorauth-shared3.js"); require("supertokens-web-js/recipe/emailverification"); require("supertokens-web-js/recipe/session"); require("./session-shared.js"); require("supertokens-web-js/recipe/emailpassword"); require("./authRecipe-shared2.js"); require("./emailpassword-shared5.js"); function _interopDefault(e) { return e && e.__esModule ? e : { default: e }; } function _interopNamespace(e) { if (e && e.__esModule) return e; var n = Object.create(null); if (e) { Object.keys(e).forEach(function (k) { if (k !== "default") { var d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty( n, k, d.get ? d : { enumerable: true, get: function () { return e[k]; }, } ); } }); } n.default = e; return Object.freeze(n); } var NormalisedURLPath__default = /*#__PURE__*/ _interopDefault(NormalisedURLPath); var React__namespace = /*#__PURE__*/ _interopNamespace(React); var STGeneralError__default = /*#__PURE__*/ _interopDefault(STGeneralError); var STGeneralError__default$1 = /*#__PURE__*/ _interopDefault(STGeneralError$1); /* * Component. */ function BackToSignInButton(_a) { var onClick = _a.onClick; var t = translationContext.useTranslation(); return jsxRuntime.jsxs( "div", genericComponentOverrideContext.__assign( { "data-supertokens": "secondaryText secondaryLinkWithLeftArrow", onClick: onClick }, { children: [ jsxRuntime.jsx(arrowLeftIcon.ArrowLeftIcon, { color: "rgb(var(--palette-secondaryText))" }), t("EMAIL_PASSWORD_RESET_SIGN_IN_LINK"), ], } ) ); } var EmailPasswordResetPasswordEmail = function (props) { var t = translationContext.useTranslation(); var userContext = uiEntry.useUserContext(); var _a = React.useState("READY"), status = _a[0], setStatus = _a[1]; var _b = React.useState(""), emailFieldValue = _b[0], setEmailFieldValue = _b[1]; var onSuccess = function () { setStatus("SENT"); }; var resend = function () { setStatus("READY"); }; var formFields = props.formFields; var emailSuccessText = t("EMAIL_PASSWORD_RESET_SEND_BEFORE_EMAIL") + (emailFieldValue !== undefined && emailFieldValue.length > 0 ? emailFieldValue : t("EMAIL_PASSWORD_RESET_SEND_FALLBACK_EMAIL")) + t("EMAIL_PASSWORD_RESET_SEND_AFTER_EMAIL"); if (status === "SENT") { return jsxRuntime.jsx( "div", genericComponentOverrideContext.__assign( { "data-supertokens": "container" }, { children: jsxRuntime.jsxs( "div", genericComponentOverrideContext.__assign( { "data-supertokens": "row" }, { children: [ jsxRuntime.jsxs( "div", genericComponentOverrideContext.__assign( { "data-supertokens": "primaryText enterEmailSuccessMessage" }, { children: [ emailSuccessText, jsxRuntime.jsx( "span", genericComponentOverrideContext.__assign( { "data-supertokens": "link resendEmailLink", onClick: resend, }, { children: t("EMAIL_PASSWORD_RESET_RESEND_LINK") } ) ), ], } ) ), jsxRuntime.jsx(BackToSignInButton, { onClick: props.onBackButtonClicked }), ], } ) ), } ) ); } // Otherwise, return Form. return jsxRuntime.jsx( "div", genericComponentOverrideContext.__assign( { "data-supertokens": "container resetPasswordEmailForm" }, { children: jsxRuntime.jsxs( "div", genericComponentOverrideContext.__assign( { "data-supertokens": "row" }, { children: [ jsxRuntime.jsxs( "div", genericComponentOverrideContext.__assign( { "data-supertokens": "headerTitle withBackButton" }, { children: [ jsxRuntime.jsx(uiEntry.BackButton, { onClick: props.onBackButtonClicked, }), t("EMAIL_PASSWORD_RESET_HEADER_TITLE"), jsxRuntime.jsx("span", { "data-supertokens": "backButtonPlaceholder backButtonCommon", }), ], } ) ), jsxRuntime.jsx( "div", genericComponentOverrideContext.__assign( { "data-supertokens": "headerSubtitle secondaryText" }, { children: t("EMAIL_PASSWORD_RESET_HEADER_SUBTITLE") } ) ), props.error !== undefined && jsxRuntime.jsx(uiEntry.GeneralError, { error: props.error }), jsxRuntime.jsx(formBase.FormBase, { clearError: props.clearError, onError: props.onError, formFields: formFields, buttonLabel: "EMAIL_PASSWORD_RESET_SEND_BTN", onSuccess: onSuccess, callAPI: function (formFields) { return genericComponentOverrideContext.__awaiter( void 0, void 0, void 0, function () { var validationErrors, emailField, resp; return genericComponentOverrideContext.__generator(this, function (_a) { switch (_a.label) { case 0: return [ 4 /*yield*/, genericComponentOverrideContext.validateForm( formFields, props.config.resetPasswordUsingTokenFeature .enterEmailForm.formFields ), ]; case 1: validationErrors = _a.sent(); if (validationErrors.length > 0) { return [ 2 /*return*/, { status: "FIELD_ERROR", formFields: validationErrors, }, ]; } emailField = formFields.find(function (field) { return field.id === "email"; }); if (emailField !== undefined) { setEmailFieldValue(emailField.value); } return [ 4 /*yield*/, props.recipeImplementation.sendPasswordResetEmail({ formFields: formFields, userContext: userContext, }), ]; case 2: resp = _a.sent(); if (resp.status === "PASSWORD_RESET_NOT_ALLOWED") { return [ 2 /*return*/, { status: "FIELD_ERROR", formFields: [ { id: "email", error: resp.reason }, ], }, ]; } return [2 /*return*/, resp]; } }); } ); }, showLabels: true, validateOnBlur: true, }), ], } ) ), } ) ); }; var ResetPasswordEmail = uiEntry.withOverride("EmailPasswordResetPasswordEmail", EmailPasswordResetPasswordEmail); var EmailPasswordSubmitNewPassword = function (props) { var t = translationContext.useTranslation(); var userContext = uiEntry.useUserContext(); var _a = React.useState("READY"), status = _a[0], setStatus = _a[1]; var onSuccess = function () { setStatus("SUCCESS"); }; var formFields = props.formFields, onSignInClicked = props.onSignInClicked; if (status === "SUCCESS") { return jsxRuntime.jsx( "div", genericComponentOverrideContext.__assign( { "data-supertokens": "container" }, { children: jsxRuntime.jsxs( "div", genericComponentOverrideContext.__assign( { "data-supertokens": "row" }, { children: [ jsxRuntime.jsx( "div", genericComponentOverrideContext.__assign( { "data-supertokens": "headerTitle" }, { children: t("EMAIL_PASSWORD_RESET_SUBMIT_PW_SUCCESS_HEADER_TITLE") } ) ), jsxRuntime.jsx( formBase.FormRow, { children: jsxRuntime.jsxs(React.Fragment, { children: [ jsxRuntime.jsx( "div", genericComponentOverrideContext.__assign( { "data-supertokens": "primaryText submitNewPasswordSuccessMessage", }, { children: t( "EMAIL_PASSWORD_RESET_SUBMIT_PW_SUCCESS_DESC" ), } ) ), jsxRuntime.jsx(button.Button, { disabled: false, isLoading: false, type: "button", onClick: onSignInClicked, label: "EMAIL_PASSWORD_RESET_SUBMIT_PW_SUCCESS_SIGN_IN_BTN", }), ], }), }, "form-button" ), ], } ) ), } ) ); } return jsxRuntime.jsx( "div", genericComponentOverrideContext.__assign( { "data-supertokens": "container resetPasswordPasswordForm" }, { children: jsxRuntime.jsxs( "div", genericComponentOverrideContext.__assign( { "data-supertokens": "row" }, { children: [ jsxRuntime.jsx( "div", genericComponentOverrideContext.__assign( { "data-supertokens": "headerTitle" }, { children: t("EMAIL_PASSWORD_RESET_SUBMIT_PW_HEADER_TITLE") } ) ), jsxRuntime.jsx( "div", genericComponentOverrideContext.__assign( { "data-supertokens": "headerSubtitle secondaryText" }, { children: t("EMAIL_PASSWORD_RESET_SUBMIT_PW_HEADER_SUBTITLE") } ) ), props.error !== undefined && jsxRuntime.jsx(uiEntry.GeneralError, { error: props.error }), jsxRuntime.jsx(formBase.FormBase, { formFields: formFields, clearError: props.clearError, onError: props.onError, buttonLabel: "EMAIL_PASSWORD_RESET_SUBMIT_PW_CHANGE_PW_BTN", onSuccess: onSuccess, validateOnBlur: true, callAPI: function (fields) { return genericComponentOverrideContext.__awaiter( void 0, void 0, void 0, function () { var validationErrors, response; return genericComponentOverrideContext.__generator(this, function (_a) { switch (_a.label) { case 0: return [ 4 /*yield*/, genericComponentOverrideContext.validateForm( fields, props.config.resetPasswordUsingTokenFeature .submitNewPasswordForm.formFields ), ]; case 1: validationErrors = _a.sent(); if (validationErrors.length > 0) { return [ 2 /*return*/, { status: "FIELD_ERROR", formFields: validationErrors, }, ]; } // Verify that both passwords match. if (fields[0].value !== fields[1].value) { return [ 2 /*return*/, { status: "FIELD_ERROR", formFields: [ { id: fields[1].id, error: "ERROR_CONFIRM_PASSWORD_NO_MATCH", }, ], }, ]; } return [ 4 /*yield*/, props.recipeImplementation.submitNewPassword({ formFields: fields, userContext: userContext, }), ]; case 2: response = _a.sent(); if ( response.status === "RESET_PASSWORD_INVALID_TOKEN_ERROR" ) { throw new STGeneralError__default.default( "EMAIL_PASSWORD_RESET_PASSWORD_INVALID_TOKEN_ERROR" ); } return [ 2 /*return*/, response.status === "FIELD_ERROR" ? response : { status: "OK", }, ]; } }); } ); }, showLabels: true, }), ], } ) ), } ) ); }; var SubmitNewPassword = uiEntry.withOverride("EmailPasswordSubmitNewPassword", EmailPasswordSubmitNewPassword); /* * Component. */ function ResetPasswordUsingTokenTheme(props) { /* * Render. */ // If no token, return SubmitNewPassword. if (props.submitNewPasswordForm !== undefined) { return jsxRuntime.jsx( SubmitNewPassword, genericComponentOverrideContext.__assign({}, props.submitNewPasswordForm) ); } // Otherwise, return EnterEmail. return jsxRuntime.jsx(ResetPasswordEmail, genericComponentOverrideContext.__assign({}, props.enterEmailForm)); } function ResetPasswordUsingTokenThemeWrapper(props) { var rootStyle = genericComponentOverrideContext.SuperTokens.getInstanceOrThrow().rootStyle; var userStyles = props.submitNewPasswordForm ? props.config.resetPasswordUsingTokenFeature.submitNewPasswordForm.style : props.config.resetPasswordUsingTokenFeature.enterEmailForm.style; return jsxRuntime.jsx( uiEntry.UserContextWrapper, genericComponentOverrideContext.__assign( { userContext: props.userContext }, { children: jsxRuntime.jsx( translations.ThemeBase, genericComponentOverrideContext.__assign( { userStyles: [rootStyle, props.config.recipeRootStyle, userStyles] }, { children: jsxRuntime.jsx( ResetPasswordUsingTokenTheme, genericComponentOverrideContext.__assign({}, props) ), } ) ), } ) ); } var defaultTranslationsEmailPassword = { en: genericComponentOverrideContext.__assign( genericComponentOverrideContext.__assign( genericComponentOverrideContext.__assign({}, uiEntry.defaultTranslationsCommon.en), translations.defaultTranslationsEmailVerification.en ), { EMAIL_PASSWORD_EMAIL_LABEL: "Email", EMAIL_PASSWORD_EMAIL_PLACEHOLDER: "Email address", EMAIL_PASSWORD_PASSWORD_LABEL: "Password", EMAIL_PASSWORD_PASSWORD_PLACEHOLDER: "Password", EMAIL_PASSWORD_SIGN_IN_FORGOT_PW_LINK: "Forgot password?", EMAIL_PASSWORD_SIGN_IN_SUBMIT_BTN: "SIGN IN", EMAIL_PASSWORD_SIGN_IN_WRONG_CREDENTIALS_ERROR: "Incorrect email and password combination", EMAIL_PASSWORD_SIGN_UP_SUBMIT_BTN: "SIGN UP", EMAIL_PASSWORD_EMAIL_ALREADY_EXISTS: "This email already exists. Please sign in instead", EMAIL_PASSWORD_RESET_HEADER_TITLE: "Reset your password", EMAIL_PASSWORD_RESET_HEADER_SUBTITLE: "We will send you an email to reset your password", EMAIL_PASSWORD_RESET_SEND_FALLBACK_EMAIL: "your account", EMAIL_PASSWORD_RESET_SEND_BEFORE_EMAIL: "A password reset email has been sent to ", EMAIL_PASSWORD_RESET_SEND_AFTER_EMAIL: ", if it exists in our system. ", EMAIL_PASSWORD_RESET_RESEND_LINK: "Resend or change email", EMAIL_PASSWORD_RESET_SEND_BTN: "Email me", EMAIL_PASSWORD_RESET_SIGN_IN_LINK: "Sign In", EMAIL_PASSWORD_RESET_SUBMIT_PW_SUCCESS_HEADER_TITLE: "Success!", EMAIL_PASSWORD_RESET_SUBMIT_PW_SUCCESS_DESC: "Your password has been updated successfully", EMAIL_PASSWORD_RESET_SUBMIT_PW_SUCCESS_SIGN_IN_BTN: "SIGN IN", EMAIL_PASSWORD_NEW_PASSWORD_LABEL: "New password", EMAIL_PASSWORD_NEW_PASSWORD_PLACEHOLDER: "New password", EMAIL_PASSWORD_CONFIRM_PASSWORD_LABEL: "Confirm password", EMAIL_PASSWORD_CONFIRM_PASSWORD_PLACEHOLDER: "Confirm your password", EMAIL_PASSWORD_RESET_SUBMIT_PW_HEADER_TITLE: "Change your password", EMAIL_PASSWORD_RESET_SUBMIT_PW_HEADER_SUBTITLE: "Enter a new password below to change your password", EMAIL_PASSWORD_RESET_SUBMIT_PW_CHANGE_PW_BTN: "CHANGE PASSWORD", EMAIL_PASSWORD_RESET_PASSWORD_INVALID_TOKEN_ERROR: "Invalid password reset token", ERROR_EMAIL_NON_STRING: "Email must be of type string", ERROR_EMAIL_INVALID: "Email is invalid", ERROR_PASSWORD_NON_STRING: "Password must be of type string", ERROR_PASSWORD_TOO_SHORT: "Password must contain at least 8 characters, including a number", ERROR_PASSWORD_TOO_LONG: "Password's length must be lesser than 100 characters", ERROR_PASSWORD_NO_ALPHA: "Password must contain at least one alphabet", ERROR_PASSWORD_NO_NUM: "Password must contain at least one number", ERROR_CONFIRM_PASSWORD_NO_MATCH: "Confirmation password doesn't match", ERROR_NON_OPTIONAL: "Field is not optional", /* * The following are error messages from our backend SDK. * These are returned as full messages to preserver compatibilty, but they work just like the keys above. * They are shown as is by default (setting the value to undefined will display the raw translation key) */ "This email already exists. Please sign in instead.": undefined, "Field is not optional": undefined, "Password must contain at least 8 characters, including a number": undefined, "Password's length must be lesser than 100 characters": undefined, "Password must contain at least one alphabet": undefined, "Password must contain at least one number": undefined, "Email is invalid": undefined, "Reset password link was not created because of account take over risk. Please contact support. (ERR_CODE_001)": undefined, "Cannot sign up due to security reasons. Please try logging in, use a different login method or contact support. (ERR_CODE_007)": undefined, "Cannot sign in due to security reasons. Please try resetting your password, use a different login method or contact support. (ERR_CODE_008)": undefined, "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_009)": undefined, "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_010)": undefined, "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_011)": undefined, "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_012)": undefined, "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_013)": undefined, "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_014)": undefined, "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_015)": undefined, "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_016)": undefined, } ), }; var ResetPasswordUsingToken$1 = function (props) { var token = genericComponentOverrideContext.getQueryParams("token"); var userContext = uiEntry.useUserContext(); if (props.userContext !== undefined) { userContext = props.userContext; } var _a = React__namespace.useState(), error = _a[0], setError = _a[1]; var enterEmailFormFeature = props.recipe.config.resetPasswordUsingTokenFeature.enterEmailForm; var submitNewPasswordFormFeature = props.recipe.config.resetPasswordUsingTokenFeature.submitNewPasswordForm; var submitNewPasswordForm = token === undefined || token === null ? undefined : { error: error, onError: function (error) { return setError(error); }, clearError: function () { return setError(undefined); }, styleFromInit: submitNewPasswordFormFeature.style, formFields: submitNewPasswordFormFeature.formFields, recipeImplementation: props.recipe.webJSRecipe, config: props.recipe.config, onSignInClicked: function () { void genericComponentOverrideContext.SuperTokens.getInstanceOrThrow().redirectToAuth({ show: "signin", navigate: props.navigate, redirectBack: false, userContext: userContext, }); }, token: token, }; var enterEmailForm = { onBackButtonClicked: function () { return genericComponentOverrideContext.SuperTokens.getInstanceOrThrow().redirectToAuth({ show: "signin", navigate: props.navigate, redirectBack: false, userContext: userContext, }); }, error: error, onError: function (error) { return setError(error); }, clearError: function () { return setError(undefined); }, styleFromInit: enterEmailFormFeature.style, formFields: enterEmailFormFeature.formFields, recipeImplementation: props.recipe.webJSRecipe, config: props.recipe.config, }; var childProps = { config: props.recipe.config, submitNewPasswordForm: submitNewPasswordForm, enterEmailForm: enterEmailForm, }; var recipeComponentOverrides = props.useComponentOverrides(); return jsxRuntime.jsx( uiEntry.ComponentOverrideContext.Provider, genericComponentOverrideContext.__assign( { value: recipeComponentOverrides }, { children: jsxRuntime.jsx( uiEntry.FeatureWrapper, genericComponentOverrideContext.__assign( { useShadowDom: genericComponentOverrideContext.SuperTokens.getInstanceOrThrow().useShadowDom, defaultStore: defaultTranslationsEmailPassword, }, { children: jsxRuntime.jsxs(React.Fragment, { children: [ props.children === undefined && jsxRuntime.jsx( ResetPasswordUsingTokenThemeWrapper, genericComponentOverrideContext.__assign({}, childProps) ), props.children && React__namespace.Children.map(props.children, function (child) { if (React__namespace.isValidElement(child)) { return React__namespace.cloneElement(child, childProps); } return child; }), ], }), } ) ), } ) ); }; var SignInForm = uiEntry.withOverride("EmailPasswordSignInForm", function EmailPasswordSignInForm(props) { var _this = this; var userContext = uiEntry.useUserContext(); return jsxRuntime.jsx(formBase.FormBase, { formFields: props.formFields, clearError: props.clearError, onError: props.onError, onFetchError: props.onFetchError, buttonLabel: "EMAIL_PASSWORD_SIGN_IN_SUBMIT_BTN", onSuccess: props.onSuccess, callAPI: function (formFields) { return genericComponentOverrideContext.__awaiter(_this, void 0, void 0, function () { var validationErrors, response; return genericComponentOverrideContext.__generator(this, function (_a) { switch (_a.label) { case 0: return [ 4 /*yield*/, genericComponentOverrideContext.validateForm( formFields, props.config.signInAndUpFeature.signInForm.formFields ), ]; case 1: validationErrors = _a.sent(); if (validationErrors.length > 0) { return [ 2 /*return*/, { status: "FIELD_ERROR", formFields: validationErrors, }, ]; } return [ 4 /*yield*/, props.recipeImplementation.signIn({ formFields: formFields, shouldTryLinkingWithSessionUser: false, userContext: userContext, }), ]; case 2: response = _a.sent(); if (response.status === "WRONG_CREDENTIALS_ERROR") { throw new STGeneralError__default.default( "EMAIL_PASSWORD_SIGN_IN_WRONG_CREDENTIALS_ERROR" ); } else if (response.status === "SIGN_IN_NOT_ALLOWED") { throw new STGeneralError__default.default(response.reason); } else { return [2 /*return*/, response]; } } }); }); }, validateOnBlur: false, showLabels: true, footer: props.footer, }); }); function SignInTheme(props) { var rootStyle = genericComponentOverrideContext.SuperTokens.getInstanceOrThrow().rootStyle; var activeStyle = props.config.signInAndUpFeature.signInForm.style; return jsxRuntime.jsx( uiEntry.UserContextWrapper, genericComponentOverrideContext.__assign( { userContext: props.userContext }, { children: jsxRuntime.jsx( translations.ThemeBase, genericComponentOverrideContext.__assign( { userStyles: [rootStyle, props.config.recipeRootStyle, activeStyle] }, { children: jsxRuntime.jsx(SignInForm, genericComponentOverrideContext.__assign({}, props)) } ) ), } ) ); } function useChildProps$1(recipe$2, onAuthSuccess, error, onError, clearError, userContext, navigate) { var _this = this; var session$1 = uiEntry.useSessionContext(); var recipeImplementation = React.useMemo( function () { return getModifiedRecipeImplementation$1(recipe$2.webJSRecipe); }, [recipe$2] ); var rethrowInRender = genericComponentOverrideContext.useRethrowInRender(); var t = translationContext.useTranslation(); var onSignInSuccess = React.useCallback( function () { return genericComponentOverrideContext.__awaiter(_this, void 0, void 0, function () { var payloadAfterCall; return genericComponentOverrideContext.__generator(this, function (_b) { switch (_b.label) { case 0: _b.trys.push([0, 2, , 3]); return [ 4 /*yield*/, types.Session.getInstanceOrThrow().getAccessTokenPayloadSecurely({ userContext: userContext, }), ]; case 1: payloadAfterCall = _b.sent(); return [3 /*break*/, 3]; case 2: _b.sent(); payloadAfterCall = undefined; return [3 /*break*/, 3]; case 3: return [ 2 /*return*/, onAuthSuccess({ createdNewUser: false, isNewRecipeUser: false, newSessionCreated: session$1.loading || !session$1.doesSessionExist || (payloadAfterCall !== undefined && session$1.accessTokenPayload.sessionHandle !== payloadAfterCall.sessionHandle), recipeId: recipe.EmailPassword.RECIPE_ID, }).catch(rethrowInRender), ]; } }); }); }, [recipe$2, userContext, navigate] ); return React.useMemo( function () { var onForgotPasswordClick = function () { return recipe$2.redirect( { action: "RESET_PASSWORD", tenantIdFromQueryParams: genericComponentOverrideContext.getTenantIdFromQueryParams(), }, navigate, undefined, userContext ); }; var signInAndUpFeature = recipe$2.config.signInAndUpFeature; var signInFeature = signInAndUpFeature.signInForm; var formFields = signInFeature.formFields.map(function (f) { return f.id !== "password" ? f : genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, f), { labelComponent: jsxRuntime.jsxs( "div", genericComponentOverrideContext.__assign( { "data-supertokens": "formLabelWithLinkWrapper" }, { children: [ jsxRuntime.jsx(formBase.Label, { value: f.label, "data-supertokens": "passwordInputLabel", }), jsxRuntime.jsx( "a", genericComponentOverrideContext.__assign( { onClick: onForgotPasswordClick, "data-supertokens": "link linkButton formLabelLinkBtn forgotPasswordLink", }, { children: t("EMAIL_PASSWORD_SIGN_IN_FORGOT_PW_LINK") } ) ), ], } ) ), }); }); return { recipeImplementation: recipeImplementation, config: recipe$2.config, styleFromInit: signInFeature.style, formFields: formFields, error: error, clearError: clearError, onError: onError, onFetchError: function (err) { return genericComponentOverrideContext.__awaiter(_this, void 0, void 0, function () { var invalidClaims, evInstance; return genericComponentOverrideContext.__generator(this, function (_b) { switch (_b.label) { case 0: if ( !( err.status === types.Session.getInstanceOrThrow().config.invalidClaimStatusCode ) ) return [3 /*break*/, 5]; return [ 4 /*yield*/, session.getInvalidClaimsFromResponse({ response: err, userContext: userContext, }), ]; case 1: invalidClaims = _b.sent(); if ( !invalidClaims.some(function (i) { return i.id === emailverification.EmailVerificationClaim.id; }) ) return [3 /*break*/, 5]; _b.label = 2; case 2: _b.trys.push([2, 4, , 5]); evInstance = recipe$1.EmailVerification.getInstanceOrThrow(); return [ 4 /*yield*/, evInstance.redirect( { action: "VERIFY_EMAIL", tenantIdFromQueryParams: genericComponentOverrideContext.getTenantIdFromQueryParams(), }, navigate, undefined, userContext ), ]; case 3: _b.sent(); return [2 /*return*/]; case 4: _b.sent(); return [3 /*break*/, 5]; case 5: onError("SOMETHING_WENT_WRONG_ERROR"); return [2 /*return*/]; } }); }); }, onSuccess: onSignInSuccess, onForgotPasswordClick: onForgotPasswordClick,