{"version":3,"file":"6243.dc8113d4d59f4c9b7e54.js","mappings":"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","sources":["..\\..\\..\\LSWebUICore.ClientApp\\./Pages/Components/Signing/TwoFactorRegisterForm.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Services/API/useApiClient.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Components/Icons/VisibilityOff.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Utils/isLocalUrl.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Pages/Components/Signing/AdfsForm.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Pages/Components/Signing/RegisterForm.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Pages/Components/Signing/ForgotPasswordForm.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Pages/Components/Signing/SsoButtons.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Pages/Components/Signing/TermsOfUseModal.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Pages/Components/Signing/SigningCommon.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Validation/yup/methods/fullName.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Validation/yup/methods/inDomains.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Validation/yup/methods/phone.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Validation/yup/methods/simpleName.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Validation/yup/methods/unique.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Validation/yup/methods/dateString.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Validation/yup/methods/emailList.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Pages/Components/Signing/SigningForm.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Components/Inputs/Checkbox.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Components/Icons/Visibility.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Services/LegacyAPI/AccountClient.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Pages/Components/Signing/ChangePasswordForm.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Pages/Components/Signing/SeparatorWithText.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Pages/Components/Signing/TwoFactorConfirmForm.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Pages/Components/Signing/LoginForm.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Components/Inputs/PasswordInputFL.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport { yupResolver } from \"@hookform/resolvers/yup\";\r\nimport * as yup from \"yup\";\r\nimport { SpinningButton } from \"Components/ReactstrapSlim\";\r\nimport { InputFL, ValidationSummary } from \"Components/Inputs\";\r\nimport { AccountClient, TwoFactorResponse } from \"Services/LegacyAPI/AccountClient\";\r\nimport { useApiClient } from \"Services/API/useApiClient\";\r\n\r\ninterface TwoFactorRegisterFormModel {\r\n PhoneNumber: string,\r\n}\r\n\r\nconst TwoFactorRegisterFormSchema: yup.SchemaOf = yup.object({\r\n PhoneNumber: yup.string().required(\"Phone number is required\").phone(\"Phone number is not valid\").defined(),\r\n}).defined();\r\n\r\n\r\n\r\nexport interface TwoFactorRegisterFormProps {\r\n isActive: boolean;\r\n email: string,\r\n lstoken: string,\r\n onSuccess: (logonResult: TwoFactorResponse) => boolean;\r\n}\r\n\r\nexport const TwoFactorRegisterForm: React.FC = function ({ isActive, email, lstoken, onSuccess }) {\r\n const accountClient = useApiClient(AccountClient);\r\n const [isLoading, setIsLoading] = useState(false); \r\n const [serverErrors, setServerErrors] = useState>([]); \r\n\r\n const formMethods = useForm({\r\n resolver: yupResolver(TwoFactorRegisterFormSchema),\r\n mode: \"onBlur\"\r\n });\r\n\r\n const onSubmit = async () => {\r\n if (isLoading)\r\n return;\r\n setIsLoading(true);\r\n setServerErrors([]);\r\n try { \r\n const isValid = await formMethods.trigger();\r\n if (isValid) {\r\n const formValues = formMethods.getValues();\r\n const twoFactorRegisterResult = await accountClient.twoFactorRegister({\r\n ...formValues,\r\n UserName: email,\r\n LSToken: lstoken\r\n });\r\n if (twoFactorRegisterResult.success) {\r\n onSuccess(twoFactorRegisterResult);\r\n } else {\r\n setServerErrors([[\"email\", twoFactorRegisterResult.error]]);\r\n }\r\n }\r\n } catch (err: any) {\r\n if (err.error) {\r\n setServerErrors([[\"email\", err.error]]);\r\n }\r\n console.log(err);\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n }\r\n\r\n const submitOnEnterHandler = (e: React.KeyboardEvent) => {\r\n if (e.key === \"Enter\") {\r\n onSubmit();\r\n }\r\n } \r\n\r\n useEffect(() => {\r\n if (isActive) {\r\n setTimeout(function () {\r\n formMethods.setFocus(\"PhoneNumber\");\r\n }, 500);\r\n }\r\n }, [isActive])\r\n\r\n return (\r\n
\r\n
\r\n Two factor authentication\r\n
\r\n
\r\n Please specify your phone number for two factor authentication.\r\n
\r\n
\r\n \r\n \r\n Continue\r\n
\r\n
\r\n )\r\n}","import ClientBase from \"Services/API/ClientBase\";\r\nimport { useContext, useMemo } from \"react\";\r\nimport { LayoutContext } from \"Components/LayoutContext\";\r\n\r\nexport function useApiClient(clientType: new (baseUrl?: string) => T): T {\r\n const layoutContext = useContext(LayoutContext);\r\n\r\n const client = useMemo(() => {\r\n const client = new clientType();\r\n client.onError = (message, httpStatus) => {\r\n console.log(\"API client error\", message, httpStatus);\r\n layoutContext.showError(message);\r\n };\r\n return client;\r\n }, [clientType]);\r\n\r\n return client;\r\n}","import React from \"react\";\r\nimport { forwardRef } from \"react\";\r\nimport { Icon, IconProps } from \"./common\";\r\n\r\nconst VisibilityOff: Icon = forwardRef(({ color = \"currentColor\", size = 24, ...rest }, ref) => \r\n \r\n);\r\nexport default VisibilityOff;","export function isLocalUrl(url: string | undefined | null): boolean {\r\n if (!url) {\r\n return false;\r\n } else {\r\n return url === \"/\" || !!url.match(/^~?\\/[^\\/\\\\]/);\r\n }\r\n}","import React, { useEffect } from \"react\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport { yupResolver } from \"@hookform/resolvers/yup\";\r\nimport * as yup from \"yup\";\r\nimport { InputFL } from \"Components/Inputs\";\r\nimport { SigningEmailProps, useSigningEmailEffect } from \"./SigningCommon\";\r\n\r\n\r\ninterface AdfsFormModel {\r\n email: string,\r\n}\r\n\r\nconst AdfsFormSchema: yup.SchemaOf = yup.object({\r\n email: yup.string()\r\n .required(\"Email is required\")\r\n .email(\"Email is not valid\")\r\n .defined(),\r\n}).defined();\r\n\r\n\r\n\r\nexport interface AdfsFormProps extends SigningEmailProps {\r\n isActive: boolean;\r\n adfsProvider: LSCommon.Context.AdfsProvider | undefined, \r\n}\r\n\r\nexport const AdfsForm: React.FC = function ({ isActive, adfsProvider, ...signingEmailProps }) {\r\n const formMethods = useForm({\r\n defaultValues: {\r\n email: signingEmailProps.email,\r\n },\r\n resolver: yupResolver(AdfsFormSchema), \r\n mode: \"onTouched\"\r\n });\r\n\r\n useSigningEmailEffect(signingEmailProps, formMethods, \"email\");\r\n\r\n const onLoginClick = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n if (adfsProvider) {\r\n LSHelper.Sso.popupSsoLoginCommon(LSHelper.Sso.addParamToUrl(adfsProvider.Url!, \"SAMLRequest=\" + adfsProvider.SAMLRequest!), false, 1024, 450);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (isActive) {\r\n setTimeout(function () {\r\n formMethods.setFocus(\"email\");\r\n }, 500);\r\n }\r\n }, [isActive])\r\n\r\n return (\r\n
\r\n
\r\n Log in\r\n
\r\n
\r\n You are now required to log in at {adfsProvider?.Name || \"Organization\"}\r\n
\r\n \r\n
\r\n )\r\n}","import { yupResolver } from \"@hookform/resolvers/yup\";\r\nimport { SpinningButton } from \"Components/ReactstrapSlim\";\r\nimport { CheckboxControlled, InputFL, PasswordInputFL, ValidationSummary } from \"Components/Inputs\";\r\nimport React, { useEffect, useMemo, useState } from \"react\";\r\nimport { FieldErrors, useForm } from \"react-hook-form\";\r\nimport { useApiClient } from \"Services/API/useApiClient\";\r\nimport { AccountClient, RegisterSuccessResponse } from \"Services/LegacyAPI/AccountClient\";\r\nimport * as yup from \"yup\";\r\nimport { SeparatorWithText } from \"./SeparatorWithText\";\r\nimport { SigningEmailProps, useSigningEmailEffect } from \"./SigningCommon\";\r\nimport { SsoButtons, SsoRegistrationOptions } from \"./SsoButtons\";\r\n\r\ninterface RegisterFormModel {\r\n FullName: string,\r\n Email: string,\r\n Password: string,\r\n RememberMe: boolean,\r\n AcceptTerms: boolean\r\n}\r\n\r\nconst termsValidationMessage = \"The terms must be accepted.\";\r\n\r\nconst RegisterFormModelSchema: yup.SchemaOf = yup.object({\r\n FullName: yup.string().fullName(true, \"Full name is required\").defined(),\r\n Email: yup.string()\r\n .required(\"Email is required\")\r\n .email(\"Email is not valid\")\r\n .defined(),\r\n Password: yup.string().required(\"Password is required\")\r\n .min(LiquidSpaceConfig.NewMinPasswordLength, \"Password must be at least ${min} characters long\")\r\n .max(LiquidSpaceConfig.MaxPasswordLength, \"Enter no more than ${max} characters\")\r\n .test(\"no-spaces\", \"Password shouldn't contain spaces\", (value) =>\r\n !value || !value.includes(\" \")),\r\n RememberMe: yup.boolean().required(),\r\n AcceptTerms: yup.boolean().required(termsValidationMessage)\r\n .oneOf([true], termsValidationMessage)\r\n}).defined();\r\n\r\n\r\nconst TermsLabel: React.FC = () => {\r\n return (<>\r\n By signing up you are giving the thumbs up to our Terms of Service and Privacy Policy.\r\n );\r\n}\r\n\r\nexport interface RegisterFormProps extends SigningEmailProps {\r\n isActive: boolean;\r\n onRegisterSuccess: (registerSuccessResponse: RegisterSuccessResponse) => boolean;\r\n onSwitchToLogin: () => void;\r\n registerProps?: LSStore.SigningRegisterProps;\r\n registerModel?: LSWebUI.Models.RegisterModel;\r\n}\r\n\r\nexport const RegisterForm: React.FC = function ({ isActive, onRegisterSuccess, onSwitchToLogin, registerProps, registerModel, ...signingEmailProps }) {\r\n const accountClient = useApiClient(AccountClient);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [serverErrors, setServerErrors] = useState>([]);\r\n\r\n const formMethods = useForm({\r\n resolver: yupResolver(RegisterFormModelSchema),\r\n defaultValues: {\r\n FullName: registerProps?.FullName || undefined,\r\n Email: signingEmailProps?.email,\r\n RememberMe: true,\r\n AcceptTerms: true\r\n },\r\n mode: \"onTouched\"\r\n });\r\n\r\n useSigningEmailEffect(signingEmailProps, formMethods, \"Email\");\r\n\r\n const onSubmit = async () => {\r\n if (isLoading)\r\n return;\r\n setIsLoading(true);\r\n setServerErrors([]);\r\n let finalIsLoading = false;\r\n try {\r\n const isValid = await formMethods.trigger();\r\n if (isValid) {\r\n const formValues = formMethods.getValues();\r\n const registerRequest: Partial = {\r\n ...registerProps,\r\n ...registerModel,\r\n ...formValues\r\n };\r\n\r\n const requestResult = await accountClient.register(registerRequest);\r\n\r\n if (requestResult.success) {\r\n finalIsLoading = onRegisterSuccess(requestResult);\r\n } else {\r\n if (requestResult.errors && requestResult.errors.length)\r\n setServerErrors(requestResult.errors.map(err => [\"email\", err]));\r\n else\r\n setServerErrors([[\"email\", \"Unexpected server error\"]]);\r\n }\r\n }\r\n else {\r\n let name: keyof FieldErrors;\r\n for (name in formMethods.formState.errors) {\r\n formMethods.setFocus(name);\r\n break;\r\n }\r\n }\r\n } catch (err: any) {\r\n if (err.error) {\r\n setServerErrors([[\"email\", err.error]]);\r\n }\r\n console.log(err);\r\n } finally {\r\n setIsLoading(finalIsLoading);\r\n }\r\n }\r\n\r\n const submitOnEnterHandler = (e: React.KeyboardEvent) => {\r\n if (e.key === \"Enter\") {\r\n onSubmit();\r\n }\r\n }\r\n\r\n const onLoginClick = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n onSwitchToLogin();\r\n }\r\n\r\n const ssoRegistrationOptions = useMemo(() => {\r\n if (registerModel) {\r\n const result: SsoRegistrationOptions = {\r\n RegistrationType: registerModel.RegistrationType,\r\n MemberIdToLink: registerModel.MemberId != Guid.Empty ? registerModel.MemberId : undefined,\r\n OriginatingVenueId: registerModel.OriginatingVenueId,\r\n Email: registerModel.Email ?? undefined,\r\n InvitationId: registerModel.InvitationId ?? undefined,\r\n InvitationOwnerId: registerModel.InvitationOwnerId ?? undefined,\r\n OwnerId: registerModel.OwnerId ?? undefined,\r\n ConnectionType: registerModel.ConnectionType ?? undefined,\r\n };\r\n return result;\r\n }\r\n else if (registerProps) {\r\n return {\r\n RegistrationType: registerProps.RegistrationType || LSCommon.Enums.RegistrationType.Direct,\r\n ConnectionType: registerProps.ConnectionType\r\n }\r\n }\r\n else {\r\n return undefined;\r\n }\r\n }, [registerModel])\r\n\r\n useEffect(() => {\r\n if (isActive) {\r\n setTimeout(function () {\r\n formMethods.setFocus(\"FullName\");\r\n }, 500);\r\n }\r\n }, [isActive])\r\n\r\n useEffect(() => {\r\n if (registerProps?.FullName && !formMethods.getValues(\"FullName\"))\r\n formMethods.setValue(\"FullName\", registerProps.FullName);\r\n }, [registerProps])\r\n\r\n return (\r\n
\r\n
\r\n Sign up\r\n
\r\n {(registerProps?.Message) &&
{registerProps?.Message}
}\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n } aria-label=\"accept terms of use\" className=\"srf-checkbox\" />\r\n Sign up\r\n
Do you have an account? Log in
\r\n \r\n \r\n
\r\n
\r\n )\r\n}","import React, { useEffect, useState } from \"react\";\r\nimport { useForm, FieldErrors } from \"react-hook-form\";\r\nimport { yupResolver } from \"@hookform/resolvers/yup\";\r\nimport * as yup from \"yup\";\r\nimport { Button, SpinningButton } from \"Components/ReactstrapSlim\";\r\nimport { InputFL, ValidationSummary } from \"Components/Inputs\";\r\nimport { AccountClient, IForgotPasswordRequest, ForgotPasswordRequest } from \"Services/API/API\";\r\nimport ReCAPTCHA from \"react-google-recaptcha\";\r\nimport { SigningEmailProps, useSigningEmailEffect } from \"./SigningCommon\";\r\nimport { useApiClient } from \"Services/API/useApiClient\";\r\n\r\ninterface ForgotPasswordFormModel {\r\n email: string,\r\n}\r\n\r\nconst ForgotPasswordFormSchema: yup.SchemaOf = yup.object({\r\n email: yup.string()\r\n .required(\"Email is required\")\r\n .email(\"Email is not valid\")\r\n .defined(),\r\n}).defined();\r\n\r\n\r\n\r\nexport interface ForgotPasswordFormProps extends SigningEmailProps {\r\n isActive: boolean;\r\n onSwitchBack: () => void;\r\n}\r\n\r\nexport const ForgotPasswordForm: React.FC = function ({ isActive, onSwitchBack, ...signingEmailProps }) {\r\n const accountClient = useApiClient(AccountClient);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isSubmitted, setIsSubmitted] = useState(false);\r\n const [serverErrors, setServerErrors] = useState>([]);\r\n const [recaptchaToken, setRecaptchaToken] = useState(undefined);\r\n\r\n const formMethods = useForm({\r\n defaultValues: {\r\n email: signingEmailProps.email,\r\n },\r\n resolver: yupResolver(ForgotPasswordFormSchema),\r\n mode: \"onBlur\"\r\n });\r\n\r\n useSigningEmailEffect(signingEmailProps, formMethods, \"email\");\r\n\r\n const onSubmit = async () => {\r\n if (isLoading)\r\n return;\r\n setIsLoading(true);\r\n setServerErrors([]);\r\n try {\r\n if (!recaptchaToken) {\r\n setServerErrors([[\"email\", \"Please confirm you are not a robot\"]]);\r\n return;\r\n }\r\n const isValid = await formMethods.trigger();\r\n if (isValid) {\r\n const formValues = formMethods.getValues();\r\n\r\n const forgotPasswordRequest: Partial = {\r\n ...formValues,\r\n recaptchaToken\r\n };\r\n const forgotResult = await accountClient.forgotPassword(ForgotPasswordRequest.fromJS(forgotPasswordRequest));\r\n if (forgotResult.success) {\r\n setIsSubmitted(true);\r\n } else if (forgotResult.errorMessage) {\r\n setServerErrors([[\"email\", forgotResult.errorMessage]]);\r\n }\r\n }\r\n else {\r\n let name: keyof FieldErrors;\r\n for (name in formMethods.formState.errors) {\r\n formMethods.setFocus(name);\r\n break;\r\n }\r\n }\r\n } catch (err: any) {\r\n if (err.error) {\r\n setServerErrors([[\"email\", err.error]]);\r\n }\r\n console.log(err);\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n }\r\n\r\n const submitOnEnterHandler = (e: React.KeyboardEvent) => {\r\n if (e.key === \"Enter\") {\r\n onSubmit();\r\n }\r\n }\r\n\r\n const onBackClick = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n setIsSubmitted(false);\r\n onSwitchBack();\r\n }\r\n\r\n useEffect(() => {\r\n if (isActive) {\r\n setTimeout(function () {\r\n formMethods.setFocus(\"email\");\r\n }, 500);\r\n }\r\n }, [isActive])\r\n\r\n return (\r\n
\r\n {\r\n isSubmitted\r\n ? <>\r\n
\r\n
\r\n
Reset password instructions were sent to your email
\r\n \r\n
\r\n \r\n : <>\r\n
\r\n Forgot password\r\n
\r\n
\r\n We will send you an email with instructions\r\n to the email you used when you joined LiquidSpace.\r\n
\r\n
\r\n \r\n \r\n
\r\n setRecaptchaToken(token || undefined)}\r\n />\r\n
\r\n Reset password\r\n
Remembered? Go back
\r\n
\r\n \r\n }\r\n
\r\n )\r\n}","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { Button, ButtonSize } from \"Components/ReactstrapSlim\";\r\nimport { useCookies } from \"react-cookie\";\r\n\r\nexport interface SsoRegistrationOptions {\r\n RegistrationType: LSCommon.Enums.RegistrationType,\r\n MemberIdToLink?: Guid,\r\n OriginatingVenueId?: Guid,\r\n Email?: string,\r\n InvitationId?: Guid,\r\n InvitationOwnerId?: Guid,\r\n OwnerId?: Guid,\r\n ConnectionType?: LSCommon.MemberConnectionType,\r\n}\r\n\r\nexport interface SsoButtonProps {\r\n ssoType: LSCrossTier.SsoType,\r\n size?: ButtonSize,\r\n ssoRegistrationOptions?: SsoRegistrationOptions,\r\n}\r\n\r\nexport const SsoButton: React.FC = ({ ssoType, ssoRegistrationOptions, size = \"lg\" }) => {\r\n const getPopupDimensions = (ssoType): [number, number] => {\r\n switch (ssoType) {\r\n case LSCrossTier.SsoType.Apple:\r\n return [440, 678];\r\n case LSCrossTier.SsoType.Facebook:\r\n return [700, 350];\r\n case LSCrossTier.SsoType.Google:\r\n return [440, 555];\r\n case LSCrossTier.SsoType.LinkedIn:\r\n return [740, 680];\r\n case LSCrossTier.SsoType.Twitter:\r\n return [700, 350];\r\n default:\r\n return [440, 600];\r\n }\r\n }\r\n\r\n const onClick = () => {\r\n const [popupWidth, popupHeight] = getPopupDimensions(ssoType);\r\n var modelJson = encodeURIComponent(JSON.stringify({ SsoType: ssoType, ...ssoRegistrationOptions }));\r\n console.log(modelJson);\r\n LSHelper.Sso.popupSsoLogin(`/Account/StartSsoLogOn?model=${modelJson}`, popupWidth, popupHeight);\r\n }\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport interface SsoButtonsProps {\r\n size?: ButtonSize,\r\n ssoRegistrationOptions?: SsoRegistrationOptions,\r\n}\r\n\r\nexport const SsoButtons: React.FC = ({ size, ssoRegistrationOptions }) => {\r\n const [cookies] = useCookies([\"sign-in-with-apple-enabled\"]);\r\n \r\n const buttonTypes = cookies[\"sign-in-with-apple-enabled\"]\r\n ? [\r\n LSCrossTier.SsoType.Google,\r\n LSCrossTier.SsoType.LinkedIn,\r\n LSCrossTier.SsoType.Apple,\r\n ]\r\n : [\r\n LSCrossTier.SsoType.Google,\r\n LSCrossTier.SsoType.LinkedIn\r\n ];\r\n\r\n return (\r\n <>\r\n {buttonTypes.map(bt => )}\r\n \r\n )\r\n}","import { Button, Modal, ModalBody, ModalHeader } from \"Components/ReactstrapSlim\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useApiClient } from \"Services/API/useApiClient\";\r\nimport { AccountClient } from \"Services/LegacyAPI/AccountClient\";\r\n\r\nexport interface TermsOfUseModalProps {\r\n show: boolean,\r\n onAccept: () => void;\r\n}\r\n\r\nexport const TermsOfUseModal: React.FC = ({ show, onAccept }) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const accountClient = useApiClient(AccountClient);\r\n const [termOfUseHtml, setTermOfUseHtml] = useState(\"\");\r\n\r\n const getTermsOfUseHtml = async () => {\r\n setTermOfUseHtml((await accountClient.termsOfUseHtml()).termOfUseHtml);\r\n }\r\n\r\n const toggle = () => {\r\n setIsOpen((open) => !open);\r\n }\r\n\r\n useEffect(() => { \r\n if (isOpen && !termOfUseHtml) {\r\n getTermsOfUseHtml();\r\n }\r\n }, [isOpen])\r\n\r\n useEffect(() => {\r\n setIsOpen(show);\r\n }, [show])\r\n\r\n return (\r\n Accept Terms of Use\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
)\r\n}","import { useEffect } from \"react\";\r\nimport { UseFormReturn, Path, SetFieldValue, FieldValues } from \"react-hook-form\";\r\n\r\nexport interface SigningSuccessData {\r\n userId: Guid | null,\r\n fullName: string | null, \r\n joinFlow?: boolean,\r\n redirectUrl?: string\r\n}\r\n\r\nexport interface SigningEmailProps {\r\n email?: string,\r\n onEmailChange?: (string) => void;\r\n}\r\n\r\nexport const useSigningEmailEffect = (signingEmailProps: SigningEmailProps, formMethods: UseFormReturn, formEmailFieldName: Path) => {\r\n\r\n const emailValue = formMethods.watch(formEmailFieldName); \r\n\r\n useEffect(() => { \r\n if (signingEmailProps.onEmailChange) {\r\n signingEmailProps.onEmailChange(emailValue);\r\n }\r\n }, [emailValue])\r\n\r\n useEffect(() => {\r\n formMethods.setValue(formEmailFieldName, signingEmailProps.email as SetFieldValue, { shouldValidate: signingEmailProps.email ? true : undefined });\r\n }, [signingEmailProps.email])\r\n}","import * as yup from \"yup\";\r\n\r\ndeclare module \"yup\" {\r\n export interface StringSchema {\r\n /**\r\n * Check for full name validity.\r\n * \r\n * @param {Boolean} [required=false] Is fullname required.\r\n * @param {String} [errorMessage=DEFAULT_MESSAGE] The error message to return if the validation fails.\r\n */\r\n fullName(\r\n required: boolean,\r\n errorMessage?: string\r\n ): StringSchema;\r\n }\r\n}\r\nconst YUP_FULL_NAME_METHOD = \"fullName\";\r\nyup.addMethod(yup.string, YUP_FULL_NAME_METHOD, function yupFullName(\r\n required: boolean,\r\n errorMessage = \"\"\r\n) {\r\n const errMsg =\r\n typeof errorMessage === \"string\" && errorMessage\r\n ? errorMessage\r\n : \"Full name is required.\";\r\n\r\n return this.test(YUP_FULL_NAME_METHOD, errMsg, (value: string) => {\r\n if (!value)\r\n return !required;\r\n else\r\n return value.split(\" \").filter(function (s) { return !!s; }).length > 1;\r\n });\r\n});\r\n","import * as yup from \"yup\";\r\n\r\ndeclare module \"yup\" {\r\n export interface StringSchema {\r\n /**\r\n * Check for phone number validity.\r\n * \r\n * @param {Boolean} [required=false] Is fullname required.\r\n * @param {String} [errorMessage=DEFAULT_MESSAGE] The error message to return if the validation fails.\r\n */\r\n inDomains(\r\n domains?: Array | undefined,\r\n errorMessage?: string\r\n ): StringSchema;\r\n }\r\n}\r\nconst YUP_IN_DOMAINS_METHOD = \"inDomains\";\r\nyup.addMethod(yup.string, YUP_IN_DOMAINS_METHOD, function yupInDomains(\r\n domains: Array,\r\n errorMessage = \"\"\r\n) {\r\n const errMsg =\r\n typeof errorMessage === \"string\" && errorMessage\r\n ? errorMessage\r\n : \"Email is not a part of your email domains.\";\r\n\r\n return this.test(YUP_IN_DOMAINS_METHOD, errMsg, (value: string) => {\r\n if (!value)\r\n return true;\r\n if (!domains || !domains.length)\r\n return true;\r\n\r\n const domainIndex = value.indexOf(\"@\");\r\n if (domainIndex < 0)\r\n return false;\r\n\r\n if (domainIndex + 1 == value.length)\r\n return false;\r\n\r\n const domain = value.substr(domainIndex + 1)?.toLowerCase() || \"\";\r\n return domains.map(d => d?.toLowerCase() ?? \"\").includes(domain);\r\n });\r\n});\r\n","import * as yup from \"yup\";\r\n\r\ndeclare module \"yup\" {\r\n export interface StringSchema {\r\n /**\r\n * Check for phone number validity.\r\n * \r\n * @param {String} [errorMessage=DEFAULT_MESSAGE] The error message to return if the validation fails.\r\n */\r\n phone( \r\n errorMessage?: string\r\n ): StringSchema;\r\n }\r\n}\r\n\r\nconst YUP_PHONE_METHOD = \"phone\";\r\n\r\nyup.addMethod(yup.string, YUP_PHONE_METHOD, function yupPhone(\r\n errorMessage: string = \"\"\r\n) {\r\n const errMsg =\r\n typeof errorMessage === \"string\" && errorMessage\r\n ? errorMessage\r\n : \"${path} must be a valid phone number.\";\r\n // @ts-ignore\r\n return this.test(YUP_PHONE_METHOD, errMsg, async (value: string) => {\r\n if (!value) {\r\n return true;\r\n }\r\n var result = value && value.length > 2;\r\n try {\r\n const gPhoneNumber = await import(\"google-libphonenumber\");\r\n const phoneUtil = gPhoneNumber.PhoneNumberUtil.getInstance();\r\n var phoneNumber: libphonenumber.PhoneNumber | null = null;\r\n //allow any supported country\r\n for (var i = 0; i < LiquidSpaceConfig.SupportedCountries.length; i++) {\r\n phoneNumber = phoneUtil.parse(value, LiquidSpaceConfig.SupportedCountries[i] ?? undefined);\r\n result = phoneUtil.isValidNumberForRegion(phoneNumber, LiquidSpaceConfig.SupportedCountries[i] ?? undefined);\r\n\r\n if (result)\r\n break;\r\n }\r\n //if not found in supported - try parse as international\r\n if (!result /*&& (params.allowInternational || true)*/) {\r\n var internationalNumberPrefix = \"+\";\r\n if (value.indexOf(internationalNumberPrefix, 0) == -1) {\r\n phoneNumber = phoneUtil.parse(internationalNumberPrefix + value);\r\n } else {\r\n phoneNumber = phoneUtil.parse(value);\r\n }\r\n result = phoneUtil.isValidNumber(phoneNumber);\r\n } \r\n // DEVONLY\r\n if (!result && (LiquidSpaceConfig.Environment == Enum.EnvironmentType.Development || LiquidSpaceConfig.Environment == Enum.EnvironmentType.Staging)) {\r\n phoneNumber = phoneUtil.parse(value, \"BY\");\r\n result = phoneUtil.isValidNumberForRegion(phoneNumber, \"BY\");\r\n }\r\n // DEVONLY\r\n } catch (e) {\r\n result = false;\r\n }\r\n\r\n return result;\r\n });\r\n});\r\n","import * as yup from \"yup\";\r\n\r\ndeclare module \"yup\" {\r\n export interface StringSchema {\r\n /**\r\n * Check for name validity.\r\n * \r\n * @param {Boolean} [required=false] Is name required.\r\n * @param {String} [errorMessage=DEFAULT_MESSAGE] The error message to return if the validation fails.\r\n */\r\n simpleName(\r\n required: boolean,\r\n errorMessage?: string\r\n ): StringSchema;\r\n }\r\n}\r\nconst YUP_NAME_METHOD = \"simpleName\";\r\nyup.addMethod(yup.string, YUP_NAME_METHOD, function yupSimpleName(\r\n required: boolean,\r\n errorMessage: string = \"\"\r\n) {\r\n const errMsg =\r\n typeof errorMessage === \"string\" && errorMessage\r\n ? errorMessage\r\n : \"Name is required.\";\r\n\r\n return this.test(YUP_NAME_METHOD, errMsg, (value: string) => {\r\n if (!value) {\r\n return !required;\r\n } \r\n else {\r\n return /([^\\s].+\\s?)+/.test(value);\r\n } \r\n });\r\n});\r\n","import * as yup from \"yup\";\r\n\r\ndeclare module \"yup\" {\r\n export interface ArraySchema {\r\n /**\r\n * Check array for unique elements.\r\n * \r\n * @param {String} [field=field_name] Is required.\r\n * @param {String} [errorMessage=DEFAULT_MESSAGE] The error message to return if the validation fails.\r\n */\r\n unique(\r\n field: string,\r\n errorMessage?: string\r\n ): ArraySchema;\r\n }\r\n}\r\n\r\nconst YUP_UNIQUE_METHOD = \"unique\";\r\nyup.addMethod(yup.array, YUP_UNIQUE_METHOD, function (field, message) {\r\n return this.test(YUP_UNIQUE_METHOD, message, function (array) {\r\n if (!array) {\r\n return true;\r\n }\r\n const notNullArray = array.filter(row => row);\r\n const uniqueData = Array.from(\r\n new Set(notNullArray.map((row) => row[field]?.toLowerCase())),\r\n );\r\n const isUnique = notNullArray.length === uniqueData.length;\r\n if (isUnique) {\r\n return true;\r\n }\r\n const index = notNullArray.findIndex(\r\n (row, i) => row[field]?.toLowerCase() !== uniqueData[i],\r\n );\r\n\r\n if (index == -1 || notNullArray[index][field] === \"\") {\r\n return true;\r\n }\r\n const repeatedValue = notNullArray[index][field];\r\n\r\n const firstIndex = array.findIndex(\r\n (row, i) => row && row[field]?.toLowerCase() === repeatedValue);\r\n\r\n const secondIndex = array.findIndex(\r\n (row, i) => i > firstIndex && row && row[field]?.toLowerCase() === repeatedValue);\r\n\r\n return this.createError({\r\n path: `${this.path}.${secondIndex}.${field}`,\r\n message,\r\n });\r\n });\r\n});","import * as yup from \"yup\";\r\nimport moment from \"moment\";\r\n\r\ndeclare module \"yup\" {\r\n export interface StringSchema {\r\n /**\r\n * Check for date string validity.\r\n * \r\n * @param {Boolean} [required=false] Is date required.\r\n * @param {String} [errorMessage=DEFAULT_MESSAGE] The error message to return if the validation fails.\r\n */\r\n dateString(\r\n required: boolean,\r\n errorMessage?: string\r\n ): StringSchema;\r\n }\r\n}\r\nconst YUP_DATE_STRING_METHOD = \"dateString\";\r\nyup.addMethod(yup.string, YUP_DATE_STRING_METHOD, function yupDateString(\r\n required: boolean,\r\n errorMessage = \"\"\r\n) {\r\n const errMsg =\r\n typeof errorMessage === \"string\" && errorMessage\r\n ? errorMessage\r\n : \"Date is required.\";\r\n\r\n return this.test(YUP_DATE_STRING_METHOD, errMsg, (value: string) => {\r\n if (!value)\r\n return !required;\r\n else \r\n return moment(value).isValid();\r\n });\r\n});\r\n","import * as yup from \"yup\";\r\n\r\ndeclare module \"yup\" {\r\n export interface StringSchema {\r\n /**\r\n * Check for name validity.\r\n * \r\n * @param {Boolean} [required=false] Is name required.\r\n * @param {String} [errorMessage=DEFAULT_MESSAGE] The error message to return if the validation fails.\r\n */\r\n emailList(\r\n required: boolean,\r\n errorMessage?: string\r\n ): StringSchema;\r\n }\r\n}\r\nconst YUP_NAME_METHOD = \"emailList\";\r\nconst emailRegex = /^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/;\r\nyup.addMethod(yup.string, YUP_NAME_METHOD, function yupEmailList(\r\n required: boolean,\r\n errorMessage: \"\"\r\n) {\r\n const errMsg =\r\n typeof errorMessage === \"string\" && errorMessage\r\n ? errorMessage\r\n : \"Email list is not valid.\";\r\n\r\n return this.test(YUP_NAME_METHOD, errMsg, (value: string) => {\r\n if (!value) return !required;\r\n\r\n // Split the string by commas\r\n const emails = value.split(\",\").map((email) => email.trim());\r\n\r\n // Validate each email using the regex\r\n return emails.every((email) => emailRegex.test(email));\r\n });\r\n});\r\n","import classNames from \"classnames\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useApiClient } from \"Services/API/useApiClient\";\r\nimport { AccountClient, isLogonSuccessResponseTwoFactorConfirmationRequired, isLogonSuccessResponseTwoFactorRegistrationRequired, LogonSuccessResponse, RegisterSuccessResponse } from \"Services/LegacyAPI/AccountClient\";\r\nimport { isLocalUrl } from \"../../../Utils/isLocalUrl\";\r\nimport { AdfsForm } from \"./AdfsForm\";\r\nimport { ChangePasswordForm } from \"./ChangePasswordForm\";\r\nimport { ForgotPasswordForm } from \"./ForgotPasswordForm\";\r\nimport { LoginForm, LoginFormModel } from \"./LoginForm\";\r\nimport { RegisterForm } from \"./RegisterForm\";\r\nimport { SigningEmailProps, SigningSuccessData } from \"./SigningCommon\";\r\nimport { TwoFactorConfirmForm } from \"./TwoFactorConfirmForm\";\r\nimport { TwoFactorRegisterForm } from \"./TwoFactorRegisterForm\";\r\n\r\nexport interface SigningFormProps {\r\n isModal?: boolean,\r\n mode?: LSStore.SigningMode;\r\n returnUrl?: string,\r\n initialEmail?: string,\r\n registerFormProps?: LSStore.SigningRegisterProps,\r\n loginFormProps?: LSStore.SigningLoginProps,\r\n changePasswordFormProps?: LSWebUI.Models.ForgotPasswordViewModel,\r\n className?: string;\r\n registerModel?: LSWebUI.Models.RegisterModel;\r\n closeModal?: () => void;\r\n}\r\n\r\nexport const SigningForm: React.FC = function ({ className, registerModel, mode = LSStore.SigningMode.Login, initialEmail, returnUrl, closeModal, loginFormProps, registerFormProps, changePasswordFormProps, isModal = false }) {\r\n const [activeMode, setActiveMode] = useState(mode);\r\n const [previousMode, setPreviousMode] = useState(mode); \r\n const [email, setEmail] = useState(initialEmail || undefined);\r\n const [adfsProviders, setAdfsProviders] = useState([]);\r\n const [matchingAdfsProvider, setMatchingAdfsProvider] = useState(undefined);\r\n const signingModalState = useSelector(state => state.signingModal);\r\n \r\n const [lstoken, setLstoken] = useState(\"\");\r\n const [phoneNumberLast4, setPhoneNumberLast4] = useState(\"\"); \r\n\r\n const [loginProps, setLoginProps] = useState(loginFormProps || {});\r\n const [registerProps, setRegisterProps] = useState(registerFormProps || {});\r\n const [changePasswordProps, setChangePasswordProps] = useState(changePasswordFormProps);\r\n\r\n const signingEmailProps: SigningEmailProps = {\r\n email: email,\r\n onEmailChange: setEmail\r\n }; \r\n\r\n const accountClient = useApiClient(AccountClient);\r\n \r\n const modeClassName = (m: LSStore.SigningMode) => {\r\n return classNames(\"signing-mode\", { \"signing-mode--active\": activeMode == m });\r\n }\r\n const formTransition = (): React.CSSProperties | undefined => {\r\n const multiplier = activeMode;\r\n if (multiplier > 0)\r\n return { transform: `translateX(-${100 * multiplier}%)` };\r\n else\r\n return undefined;\r\n }\r\n\r\n const selectModeWithHistory = (selectedMode: LSStore.SigningMode) => {\r\n setPreviousMode(activeMode);\r\n setActiveMode(selectedMode);\r\n }\r\n\r\n const onLoginSuccess = (logonResult: LogonSuccessResponse, model?: LoginFormModel): boolean => {\r\n if (isLogonSuccessResponseTwoFactorRegistrationRequired(logonResult)) {\r\n setLstoken(logonResult.lstoken);\r\n selectModeWithHistory(LSStore.SigningMode.TwoFactorRegister);\r\n } else if (isLogonSuccessResponseTwoFactorConfirmationRequired(logonResult)) {\r\n setLstoken(logonResult.lstoken);\r\n setPhoneNumberLast4(logonResult.phoneNumberLast4);\r\n selectModeWithHistory(LSStore.SigningMode.TwoFactorConfirm);\r\n } else { \r\n onSigningSuccess({\r\n userId: logonResult.userId,\r\n fullName: logonResult.fullName,\r\n }); \r\n return true; \r\n }\r\n return false;\r\n }\r\n const onRegisterSuccess = (registerResponse: RegisterSuccessResponse) => {\r\n if (registerResponse.showTwoFactorForm && registerResponse.data) {\r\n setLstoken(registerResponse.data.TwoFactorConfirmModel.LSToken || \"\");\r\n if (registerResponse.data.InitialMode == \"tfRegister\") {\r\n selectModeWithHistory(LSStore.SigningMode.TwoFactorRegister);\r\n } else {\r\n setPhoneNumberLast4(registerResponse.data.TwoFactorConfirmModel.PhoneNumberLast4 || \"\");\r\n selectModeWithHistory(LSStore.SigningMode.TwoFactorConfirm);\r\n }\r\n } else {\r\n onSigningSuccess({\r\n userId: registerResponse.userId || null,\r\n fullName: registerResponse.fullName || null,\r\n joinFlow: true\r\n });\r\n return true;\r\n } \r\n\r\n return false;\r\n }\r\n\r\n const onSigningSuccess = (data?: SigningSuccessData) => {\r\n let ssoRedirectUrl: string | undefined;\r\n if (data) {\r\n User.id = data.userId;\r\n ssoRedirectUrl = data.redirectUrl;\r\n }\r\n\r\n if (isModal) {\r\n if (data && LSHelper.Account.onLogInSuccessCallback && typeof LSHelper.Account.onLogInSuccessCallback === \"function\")\r\n LSHelper.Account.onLogInSuccessCallback(data.userId!, data.fullName, data.joinFlow || false, signingModalState.caller);\r\n\r\n if (data && data.userId) {\r\n //$(document).trigger(\"userAuthenticated\", [data.userId, data.joinFlow]);\r\n document.dispatchEvent(new CustomEvent(\"userAuthenticated\"));\r\n }\r\n\r\n if (window.EMBEDDEDISLAND) {\r\n LSHelper.Account.reloadHeader();\r\n if (closeModal)\r\n closeModal(); \r\n } else if (!signingModalState.onlyHeaderReload) {\r\n if (signingModalState.popUpRedirectUrl || ssoRedirectUrl)\r\n window.location.href = ssoRedirectUrl || signingModalState.popUpRedirectUrl || window.location.href;\r\n else {\r\n window.location.reload();\r\n }\r\n } else {\r\n LSHelper.Account.reloadHeader();\r\n if(closeModal)\r\n closeModal();\r\n }\r\n }\r\n else {\r\n const urlParams = new URLSearchParams(window.location.search); \r\n let returnUrlToUse = returnUrl || urlParams.get(\"ReturnUrl\") || urlParams.get(\"returnUrl\") || ssoRedirectUrl;\r\n if (!returnUrlToUse || !isLocalUrl(returnUrlToUse)) {\r\n returnUrlToUse = \"/my/index\";\r\n }\r\n window.location.href = returnUrlToUse;\r\n } \r\n }\r\n\r\n const onSwtichToChangePassword = (changePasswordOptions: LSWebUI.Models.ForgotPasswordViewModel) => {\r\n setChangePasswordProps(changePasswordOptions);\r\n selectModeWithHistory(LSStore.SigningMode.ChangePassword);\r\n }\r\n\r\n useEffect(() => {\r\n document.SSO_logon_Completed = function (data) { \r\n onSigningSuccess(data);\r\n };\r\n document.function_SSO_accountLinking_Completed = function (errors, params) {\r\n onSigningSuccess();\r\n }\r\n return () => {\r\n delete document.SSO_logon_Completed;\r\n delete document.function_SSO_accountLinking_Completed;\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (isModal) {\r\n if (signingModalState.initialEmail)\r\n setEmail(signingModalState.initialEmail || undefined);\r\n if (signingModalState.loginProps) {\r\n setLoginProps(signingModalState.loginProps);\r\n }\r\n if (signingModalState.registerProps) {\r\n setRegisterProps(signingModalState.registerProps);\r\n }\r\n }\r\n }, [isModal])\r\n\r\n const getAdfsProvides = async (abortSignal: AbortSignal) => {\r\n try {\r\n setAdfsProviders(await accountClient.adfsProviders(abortSignal));\r\n } catch { }\r\n }\r\n\r\n useEffect(() => {\r\n const abortController = new AbortController();\r\n getAdfsProvides(abortController.signal);\r\n\r\n return function cleanup() {\r\n abortController.abort();\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (email)\r\n for (let i = 0; i < adfsProviders.length; i++)\r\n for (let j = 0; j < adfsProviders[i].EmailDomains.length; j++) {\r\n if (email.match(new RegExp(\"@\" + adfsProviders[i].EmailDomains[j] + \"$\", \"i\"))) {\r\n setMatchingAdfsProvider(adfsProviders[i]);\r\n if (activeMode != LSStore.SigningMode.Adfs)\r\n selectModeWithHistory(LSStore.SigningMode.Adfs);\r\n return;\r\n }\r\n }\r\n setMatchingAdfsProvider(undefined);\r\n if (activeMode == LSStore.SigningMode.Adfs)\r\n selectModeWithHistory(previousMode);\r\n }, [email]); \r\n return (\r\n
\r\n
\r\n {/* Note that modes go in the same order they are defined in the enum */}\r\n
\r\n selectModeWithHistory(LSStore.SigningMode.Login)} registerModel={registerModel} {...signingEmailProps} registerProps={registerProps} />\r\n
\r\n
\r\n selectModeWithHistory(LSStore.SigningMode.Register)} onSwitchToForgotPassword={() => selectModeWithHistory(LSStore.SigningMode.Forgot)} onSwtichToChangePassword={onSwtichToChangePassword} {...signingEmailProps} {...loginProps} />\r\n
\r\n
\r\n selectModeWithHistory(previousMode)} {...signingEmailProps} />\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {changePasswordProps &&
\r\n \r\n
}\r\n
\r\n
\r\n )\r\n}","import classNames from \"classnames\";\r\nimport React, { PropsWithChildren } from \"react\";\r\nimport { Controller, Control, FieldPath, FieldValues } from \"react-hook-form\";\r\nimport { CustomInput, CustomInputProps } from \"Components/ReactstrapSlim\";\r\nimport resolvePath from \"Utils/resolvePath\";\r\n\r\nexport interface CheckboxProps extends Partial {\r\n id: CustomInputProps[\"id\"]\r\n}\r\n\r\nexport const Checkbox: React.FC = ({ className = \"\", type, ...rest }) => {\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport interface CheckboxControlledProps extends Partial {\r\n control: Control,\r\n name: FieldPath,\r\n}\r\n\r\nexport const CheckboxControlled = ({ control, name, className = \"\", type, ...rest }: PropsWithChildren>) => (\r\n {\r\n const { name, value, onChange, onBlur } = field;\r\n const mergedClasses = classNames(\r\n className,\r\n !!resolvePath(errors, name) && \"checkbox--invalid\"\r\n );\r\n return \r\n }}\r\n />\r\n);\r\n","import React from \"react\";\r\nimport { forwardRef } from \"react\";\r\nimport { Icon, IconProps } from \"./common\";\r\n\r\nconst Visibility: Icon = forwardRef(({ color = \"currentColor\", size = 24, ...rest }, ref) => \r\n \r\n);\r\nexport default Visibility;","import ClientBase from \"Services/API/ClientBase\";\r\n\r\nexport interface LogonSuccessResponseGeneric {\r\n success: true,\r\n userId: Guid,\r\n firstName: string,\r\n fullName: string,\r\n showTermsOfUse?: boolean,\r\n}\r\n\r\nexport interface LogonSuccessResponseTwoFactorRegistrationRequired {\r\n success: true,\r\n showTwoFactorRegister: true,\r\n lstoken: string,\r\n}\r\n\r\nexport const isLogonSuccessResponseTwoFactorRegistrationRequired = (logonSuccessResponse: LogonSuccessResponse): logonSuccessResponse is LogonSuccessResponseTwoFactorRegistrationRequired => {\r\n return (logonSuccessResponse as LogonSuccessResponseTwoFactorRegistrationRequired).showTwoFactorRegister === true;\r\n}\r\n\r\nexport interface LogonSuccessResponseTwoFactorConfirmationRequired {\r\n success: true,\r\n showTwoFactorConfirmation: true,\r\n phoneNumberLast4: string,\r\n lstoken: string,\r\n}\r\n\r\nexport const isLogonSuccessResponseTwoFactorConfirmationRequired = (logonSuccessResponse: LogonSuccessResponse): logonSuccessResponse is LogonSuccessResponseTwoFactorConfirmationRequired => {\r\n return (logonSuccessResponse as LogonSuccessResponseTwoFactorConfirmationRequired).showTwoFactorConfirmation === true;\r\n}\r\n\r\nexport type LogonSuccessResponse = LogonSuccessResponseGeneric | LogonSuccessResponseTwoFactorRegistrationRequired | LogonSuccessResponseTwoFactorConfirmationRequired;\r\n\r\nexport interface LogonErrorResponse {\r\n success: false,\r\n error: string,\r\n logonStatus?: LSCommon.Enums.LogonStatusEnum,\r\n passwordValid?: boolean\r\n}\r\n\r\nexport type LogonResponse = LogonErrorResponse | LogonSuccessResponse;\r\n\r\nexport interface RegisterSuccessResponse {\r\n success: true,\r\n returnUrl?: string,\r\n userId?: Guid,\r\n fullName?: string,\r\n showTwoFactorForm?: boolean,\r\n data?: LSWebUI.Models.TwoFactorModel,\r\n}\r\n\r\nexport interface RegisterErrorResponse {\r\n success: false,\r\n errors: string[],\r\n switchToLogin?: boolean\r\n}\r\n\r\nexport type RegisterResponse = RegisterErrorResponse | RegisterSuccessResponse;\r\n\r\nexport type TwoFactorSuccessResponse = LogonSuccessResponse;\r\n\r\nexport interface TwoFactorErrorResponse {\r\n success: false,\r\n error: string\r\n}\r\n\r\nexport type TwoFactorResponse = TwoFactorSuccessResponse | TwoFactorErrorResponse;\r\n\r\nexport interface TermOfUseHtmlResponse {\r\n termOfUseHtml: string\r\n}\r\n\r\nexport interface ChangePasswordSuccessShowTermsOfUseResponse {\r\n success: true,\r\n showTermsOfUse: true,\r\n memberId: Guid,\r\n}\r\n\r\nexport const isChangePasswordSuccessResponse = (response: ChangePasswordSuccessResponse): response is ChangePasswordSuccessShowTermsOfUseResponse => {\r\n return (response as ChangePasswordSuccessShowTermsOfUseResponse).showTermsOfUse === true;\r\n}\r\n\r\nexport type ChangePasswordSuccessResponse = ChangePasswordSuccessShowTermsOfUseResponse | LogonSuccessResponse;\r\n\r\nexport interface ChangePasswordErrorResponse {\r\n success: false,\r\n errors: string[],\r\n}\r\n\r\nexport type ChangePasswordResponse = ChangePasswordSuccessResponse | ChangePasswordErrorResponse;\r\n\r\n\r\nexport class AccountClient extends ClientBase {\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n async logon(logonRequest: Partial, signal?: AbortSignal | undefined): Promise {\r\n const url_ = \"/Account/LogOn\";\r\n\r\n const request = {...logonRequest};\r\n request.IsDialog = true;\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n const options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n signal,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\",\r\n \"X-Requested-With\": \"XMLHttpRequest\", //required for .Net IsAjaxRequest() == true\r\n }\r\n };\r\n\r\n return fetch(url_, options_).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => _response.json() as Promise);\r\n });\r\n }\r\n\r\n async register(registerRequest: Partial, signal?: AbortSignal | undefined): Promise {\r\n const url_ = \"/Account/Register\";\r\n\r\n const content_ = JSON.stringify(registerRequest);\r\n\r\n const options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n signal,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\",\r\n \"X-Requested-With\": \"XMLHttpRequest\", //required for .Net IsAjaxRequest() == true\r\n }\r\n };\r\n\r\n return fetch(url_, options_).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => _response.json() as Promise);\r\n });\r\n }\r\n\r\n\r\n async adfsProviders(signal?: AbortSignal | undefined): Promise {\r\n const url_ = \"/account/adfsProviders\";\r\n\r\n const options_ = {\r\n method: \"GET\",\r\n signal,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\",\r\n \"X-Requested-With\": \"XMLHttpRequest\", //required for .Net IsAjaxRequest() == true\r\n }\r\n };\r\n\r\n return fetch(url_, options_).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => _response.json() as Promise);\r\n });\r\n }\r\n\r\n async twoFactorRegister(twoFactorRegisterRequest: Partial, signal?: AbortSignal | undefined): Promise {\r\n const url_ = \"/Account/TwoFactorRegister\";\r\n\r\n const content_ = JSON.stringify(twoFactorRegisterRequest);\r\n\r\n const options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n signal,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\",\r\n \"X-Requested-With\": \"XMLHttpRequest\", //required for .Net IsAjaxRequest() == true\r\n }\r\n };\r\n\r\n return fetch(url_, options_).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => _response.json() as Promise);\r\n });\r\n }\r\n\r\n async twoFactorConfirm(twoFactorConfirmRequest: Partial, signal?: AbortSignal | undefined): Promise {\r\n const url_ = \"/Account/TwoFactorConfirm\";\r\n\r\n const content_ = JSON.stringify(twoFactorConfirmRequest);\r\n\r\n const options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n signal,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\",\r\n \"X-Requested-With\": \"XMLHttpRequest\", //required for .Net IsAjaxRequest() == true\r\n }\r\n };\r\n\r\n return fetch(url_, options_).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => _response.json() as Promise);\r\n });\r\n }\r\n\r\n async termsOfUseHtml(signal?: AbortSignal | undefined): Promise {\r\n const url_ = \"/Account/TermOfUseHtml\";\r\n\r\n const options_ = {\r\n method: \"GET\",\r\n signal,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\",\r\n \"X-Requested-With\": \"XMLHttpRequest\", //required for .Net IsAjaxRequest() == true\r\n }\r\n };\r\n\r\n return fetch(url_, options_).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => _response.json() as Promise);\r\n });\r\n }\r\n\r\n\r\n async forgotPassword(changePasswordRequest: LSWebUI.Models.ForgotPasswordViewModel, signal?: AbortSignal | undefined): Promise {\r\n const url_ = \"/Account/ForgotPasswordShowMessage\";\r\n\r\n const content_ = JSON.stringify(changePasswordRequest);\r\n\r\n const options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n signal,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\",\r\n \"X-Requested-With\": \"XMLHttpRequest\", //required for .Net IsAjaxRequest() == true\r\n }\r\n };\r\n\r\n return fetch(url_, options_).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => _response.json() as Promise);\r\n });\r\n }\r\n\r\n async newScimClientToken(accountId: string, signal?: AbortSignal | undefined): Promise {\r\n const url_ = \"/Organization/NewEnterpriseToken\";\r\n\r\n const content_ = JSON.stringify({\r\n accountId: accountId\r\n });\r\n\r\n const options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n signal,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/html\",\r\n \"X-Requested-With\": \"XMLHttpRequest\", //required for .Net IsAjaxRequest() == true\r\n }\r\n };\r\n\r\n return fetch(url_, options_).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => _response.text());\r\n });\r\n }\r\n\r\n async newScimClientSecret(signal?: AbortSignal | undefined): Promise {\r\n const url_ = \"/Organization/NewClientSecret\";\r\n\r\n const options_ = {\r\n method: \"POST\",\r\n signal,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/html\",\r\n \"X-Requested-With\": \"XMLHttpRequest\", //required for .Net IsAjaxRequest() == true\r\n }\r\n };\r\n\r\n return fetch(url_, options_).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => _response.text());\r\n });\r\n }\r\n}\r\n\r\nexport default AccountClient;","import React, { useEffect, useState } from \"react\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport { yupResolver } from \"@hookform/resolvers/yup\";\r\nimport * as yup from \"yup\";\r\nimport { SpinningButton } from \"Components/ReactstrapSlim\";\r\nimport { PasswordInputFL, ValidationSummary } from \"Components/Inputs\";\r\nimport { useApiClient } from \"Services/API/useApiClient\";\r\nimport { AccountClient, LogonSuccessResponse, isChangePasswordSuccessResponse } from \"Services/LegacyAPI/AccountClient\";\r\n\r\ntype ChangePasswordFormModel = Pick;\r\n\r\nconst ChangePasswordFormSchema: yup.SchemaOf = yup.object({\r\n OldPassword: yup.string()\r\n .required(\"Current password is required\")\r\n .defined(),\r\n NewPassword: yup.string()\r\n .required(\"New password is required\")\r\n .min(LiquidSpaceConfig.NewMinPasswordLength, \"Password must be at least ${min} characters long\")\r\n .max(LiquidSpaceConfig.MaxPasswordLength, \"Enter no more than ${max} characters\")\r\n .test(\"no-spaces\", \"Password shouldn't contain spaces\", (value) =>\r\n !value || !value.includes(\" \"))\r\n .notOneOf([yup.ref(\"OldPassword\")], \"Password must be different from the current\")\r\n .defined(),\r\n ConfirmPassword: yup.string()\r\n .required(\"Confirmation password is required\")\r\n .oneOf([yup.ref(\"NewPassword\"), null], \"Passwords must match\")\r\n .defined(),\r\n}).defined();\r\n\r\nexport interface ChangePasswordFormProps extends LSWebUI.Models.ForgotPasswordViewModel {\r\n isActive: boolean;\r\n onSuccess: (logonResult: LogonSuccessResponse) => boolean;\r\n returnUrl?: string,\r\n}\r\n\r\nexport const ChangePasswordForm: React.FC = function ({ isActive, UserName, onSuccess, OldPassword, ForcePasswordChange, returnUrl }) {\r\n const accountClient = useApiClient(AccountClient);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [serverErrors, setServerErrors] = useState>([]);\r\n\r\n const formMethods = useForm({\r\n defaultValues: {\r\n OldPassword: OldPassword || \"\",\r\n },\r\n resolver: yupResolver(ChangePasswordFormSchema),\r\n mode: \"onBlur\"\r\n });\r\n\r\n const onSubmit = async () => {\r\n if (isLoading)\r\n return;\r\n setIsLoading(true);\r\n setServerErrors([]);\r\n try {\r\n const isValid = await formMethods.trigger();\r\n if (isValid) {\r\n const formValues = formMethods.getValues();\r\n\r\n const changePasswordRequest: LSWebUI.Models.ForgotPasswordViewModel = {\r\n UserName: UserName,\r\n ForcePasswordChange: false,\r\n ...formValues,\r\n };\r\n const changeResult = await accountClient.forgotPassword(changePasswordRequest);\r\n if (changeResult.success) {\r\n if (isChangePasswordSuccessResponse(changeResult)) {\r\n window.location.href = `/account/registerconfirmation?id=${changeResult.memberId}&changePassword=false&showTermsOfUse=true&returnUrl=${returnUrl}`;\r\n } else {\r\n onSuccess(changeResult);\r\n }\r\n } else {\r\n if (changeResult.errors && changeResult.errors.length)\r\n setServerErrors(changeResult.errors.map(err => [\"newPassword\", err]));\r\n else\r\n setServerErrors([[\"newPassword\", \"Unexpected server error\"]]);\r\n }\r\n }\r\n } catch (err: any) {\r\n if (err.error) {\r\n setServerErrors([[\"newPassword\", err.error]]);\r\n }\r\n console.log(err);\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n }\r\n\r\n const submitOnEnterHandler = (e: React.KeyboardEvent) => {\r\n if (e.key === \"Enter\") {\r\n onSubmit();\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (isActive) {\r\n setTimeout(function () {\r\n formMethods.setFocus(OldPassword ? \"NewPassword\" : \"OldPassword\");\r\n }, 500);\r\n }\r\n }, [isActive])\r\n\r\n return (\r\n
\r\n
\r\n Set a new password\r\n
\r\n
\r\n {!OldPassword &&
We sent you an email with instructions on how to reset your password.
}\r\n
If you have any questions, contact support@liquidspace.com
\r\n
\r\n {\r\n (OldPassword || !ForcePasswordChange) &&\r\n
\r\n \r\n {\r\n OldPassword\r\n ? \r\n : \r\n }\r\n \r\n \r\n Set password\r\n
\r\n }\r\n
\r\n )\r\n}","import React, { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { useForm, Controller } from \"react-hook-form\";\r\nimport { yupResolver } from \"@hookform/resolvers/yup\";\r\nimport * as yup from \"yup\";\r\n\r\nexport interface SeparatorWithTextProps {\r\n text: string;\r\n}\r\nexport const SeparatorWithText: React.FC = ({ text }) => {\r\n return (\r\n
\r\n
{text}
\r\n
\r\n )\r\n}","import React, { useEffect, useState } from \"react\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport { yupResolver } from \"@hookform/resolvers/yup\";\r\nimport * as yup from \"yup\";\r\nimport { SpinningButton } from \"Components/ReactstrapSlim\";\r\nimport { InputFL, ValidationSummary } from \"Components/Inputs\";\r\nimport { AccountClient, TwoFactorResponse } from \"Services/LegacyAPI/AccountClient\";\r\nimport { useApiClient } from \"Services/API/useApiClient\";\r\n\r\ninterface TwoFactorConfirmFormModel {\r\n AuthyToken: string,\r\n}\r\n\r\nconst TwoFactorConfirmFormSchema: yup.SchemaOf = yup.object({\r\n AuthyToken: yup.string().required(\"Confrimation code is required\").defined(),\r\n}).defined();\r\n\r\n\r\n\r\nexport interface TwoFactorConfirmFormProps {\r\n isActive: boolean;\r\n email: string,\r\n lstoken: string,\r\n phoneNumberLast4: string,\r\n onSuccess: (logonResult: TwoFactorResponse) => boolean;\r\n}\r\n\r\nexport const TwoFactorConfirmForm: React.FC = function ({ isActive, email, lstoken, phoneNumberLast4, onSuccess }) {\r\n const accountClient = useApiClient(AccountClient);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [serverErrors, setServerErrors] = useState>([]);\r\n\r\n const formMethods = useForm({\r\n resolver: yupResolver(TwoFactorConfirmFormSchema),\r\n mode: \"onBlur\"\r\n });\r\n\r\n const onSubmit = async () => {\r\n if (isLoading)\r\n return;\r\n setIsLoading(true);\r\n setServerErrors([]);\r\n try {\r\n const isValid = await formMethods.trigger();\r\n if (isValid) {\r\n const formValues = formMethods.getValues();\r\n const twoFactorRegisterResult = await accountClient.twoFactorConfirm({\r\n ...formValues,\r\n UserName: email,\r\n LSToken: lstoken\r\n });\r\n if (twoFactorRegisterResult.success) {\r\n onSuccess(twoFactorRegisterResult);\r\n } else {\r\n setServerErrors([[\"email\", twoFactorRegisterResult.error]]);\r\n }\r\n }\r\n } catch (err: any) {\r\n if (err.error) {\r\n setServerErrors([[\"email\", err.error]]);\r\n }\r\n console.log(err);\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n }\r\n\r\n const submitOnEnterHandler = (e: React.KeyboardEvent) => {\r\n if (e.key === \"Enter\") {\r\n onSubmit();\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (isActive) {\r\n setTimeout(function () {\r\n formMethods.setFocus(\"AuthyToken\");\r\n }, 500);\r\n }\r\n }, [isActive])\r\n\r\n return (\r\n
\r\n
\r\n Two factor authentication\r\n
\r\n
\r\n We've sent you a confirmation code on your phone number ending with *{phoneNumberLast4}\r\n
\r\n
\r\n \r\n \r\n Confirm\r\n
\r\n
\r\n )\r\n}","import { yupResolver } from \"@hookform/resolvers/yup\";\r\nimport { SpinningButton } from \"Components/ReactstrapSlim\";\r\nimport { CheckboxControlled, InputFL, PasswordInputFL, ValidationSummary } from \"Components/Inputs\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { FieldErrors, useForm } from \"react-hook-form\";\r\nimport { useApiClient } from \"Services/API/useApiClient\";\r\nimport { AccountClient, isLogonSuccessResponseTwoFactorConfirmationRequired, isLogonSuccessResponseTwoFactorRegistrationRequired, LogonSuccessResponse } from \"Services/LegacyAPI/AccountClient\";\r\nimport * as yup from \"yup\";\r\nimport { SeparatorWithText } from \"./SeparatorWithText\";\r\nimport { SigningEmailProps, useSigningEmailEffect } from \"./SigningCommon\";\r\nimport { SsoButtons } from \"./SsoButtons\";\r\nimport { TermsOfUseModal } from \"./TermsOfUseModal\";\r\n\r\nexport interface LoginFormModel {\r\n email: string,\r\n password: string,\r\n rememberMe?: boolean,\r\n}\r\n\r\nconst LoginFormSchema: yup.SchemaOf = yup.object({\r\n email: yup.string()\r\n .required(\"Email is required\")\r\n .email(\"Email is not valid\")\r\n .defined(),\r\n password: yup.string().required(\"Password is required\")\r\n .min(LiquidSpaceConfig.MinPasswordLength, \"Password must be at least ${min} characters long\")\r\n .max(LiquidSpaceConfig.MaxPasswordLength, \"Enter no more than ${max} characters\")\r\n .test(\"no-spaces\", \"Password shouldn't contain spaces\", (value) =>\r\n !value || !value.includes(\" \")),\r\n rememberMe: yup.boolean().optional(),\r\n}).defined();\r\n\r\n\r\n\r\nexport type LoginFormProps = SigningEmailProps & LSStore.SigningLoginProps & {\r\n isActive: boolean;\r\n onSwitchToForgotPassword: () => void;\r\n onSwitchToSignup: () => void;\r\n onSwtichToChangePassword: (changePasswordOptions: LSWebUI.Models.ForgotPasswordViewModel) => void;\r\n onLoginSuccess: (logonResult: LogonSuccessResponse, model: LoginFormModel) => boolean;\r\n}\r\n\r\nexport const LoginForm: React.FC = function ({ isActive, onLoginSuccess, onSwitchToForgotPassword, onSwitchToSignup, onSwtichToChangePassword, message, ...signingEmailProps }) {\r\n const accountClient = useApiClient(AccountClient);\r\n // const layoutContext = useContext(LayoutContext);\r\n // const accountClient = useMemo(() => {\r\n // const client = new AccountClient();\r\n // client.onError = (message, response) => {\r\n // debugger;\r\n // layoutContext.showError(message);\r\n // };\r\n // return client;\r\n // }, [])\r\n\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [showTermsOfUse, setShowTermsOfUse] = useState(false);\r\n const [serverErrors, setServerErrors] = useState>([]);\r\n const [termsOfUseAccepted, setTermsOfUseAccepted] = useState(undefined);\r\n\r\n const formMethods = useForm({\r\n resolver: yupResolver(LoginFormSchema),\r\n defaultValues: {\r\n rememberMe: true,\r\n email: signingEmailProps.email,\r\n },\r\n mode: \"onTouched\"\r\n });\r\n\r\n useSigningEmailEffect(signingEmailProps, formMethods, \"email\");\r\n\r\n const onSubmit = async () => {\r\n if (isLoading)\r\n return;\r\n setIsLoading(true);\r\n setServerErrors([]);\r\n let finalIsLoading = false;\r\n try {\r\n const isValid = await formMethods.trigger();\r\n if (isValid) {\r\n const formValues = formMethods.getValues();\r\n\r\n const logonResult = await accountClient.logon({\r\n UserName: formValues.email,\r\n Password: formValues.password,\r\n RememberMe: formValues.rememberMe,\r\n TermsOfUseAccepted: termsOfUseAccepted\r\n });\r\n \r\n if (logonResult.success) {\r\n if (!isLogonSuccessResponseTwoFactorRegistrationRequired(logonResult)\r\n && !isLogonSuccessResponseTwoFactorConfirmationRequired(logonResult)\r\n && logonResult.showTermsOfUse) {\r\n setShowTermsOfUse(true);\r\n } else {\r\n finalIsLoading = onLoginSuccess(logonResult, formValues);\r\n }\r\n } else {\r\n if ((logonResult.logonStatus == LSCommon.Enums.LogonStatusEnum.ForcedPasswordChange\r\n || logonResult.logonStatus == LSCommon.Enums.LogonStatusEnum.PasswordExpired)\r\n && logonResult.passwordValid) {\r\n onSwtichToChangePassword({\r\n UserName: formValues.email,\r\n OldPassword: formValues.password,\r\n\r\n ConfirmPassword: null,\r\n ForcePasswordChange: false,\r\n NewPassword: null\r\n });\r\n }\r\n else {\r\n setServerErrors([[\"email\", logonResult.error]]);\r\n }\r\n }\r\n }\r\n else {\r\n let name: keyof FieldErrors;\r\n for (name in formMethods.formState.errors) {\r\n formMethods.setFocus(name);\r\n break;\r\n }\r\n }\r\n } catch (err: any) {\r\n if (err.error) {\r\n setServerErrors([[\"email\", err.error]]);\r\n }\r\n console.log(err);\r\n } finally {\r\n setIsLoading(finalIsLoading);\r\n }\r\n }\r\n\r\n const onForgotPasswordClick = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n onSwitchToForgotPassword();\r\n }\r\n const onSignUpClick = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n onSwitchToSignup();\r\n }\r\n\r\n const submitOnEnterHandler = (e: React.KeyboardEvent) => {\r\n if (e.key === \"Enter\") {\r\n onSubmit();\r\n }\r\n }\r\n\r\n const onTermsOfUseAccept = () => {\r\n setTermsOfUseAccepted(true);\r\n setShowTermsOfUse(false);\r\n onSubmit();\r\n }\r\n\r\n useEffect(() => {\r\n if (isActive) {\r\n setTimeout(function () {\r\n formMethods.setFocus(\"email\");\r\n }, 500);\r\n }\r\n }, [isActive])\r\n\r\n return (\r\n
\r\n
\r\n Log in\r\n
\r\n {message &&
{message}
}\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n Forgot password?\r\n
\r\n Log in\r\n
Don’t have an account? Sign up
\r\n \r\n \r\n
\r\n \r\n
\r\n )\r\n}","import React, { PropsWithChildren } from \"react\";\r\nimport { useState } from \"react\";\r\nimport { InputFL, InputFLProps } from \"./InputFL\";\r\nimport * as Icons from \"Components/Icons\";\r\nimport { FieldValues } from \"react-hook-form\";\r\n\r\nexport const PasswordInputFL = ({ children, type, ...rest }: PropsWithChildren>) => {\r\n const [isPasswordVisible, setIsPasswordVisible] = useState(false);\r\n const togglePasswordVisible = () => {\r\n setIsPasswordVisible((wasVisible) => !wasVisible);\r\n }\r\n return (\r\n \r\n {isPasswordVisible ? : }\r\n \r\n );\r\n}"],"names":["TwoFactorRegisterFormSchema","yup","PhoneNumber","required","phone","defined","TwoFactorRegisterForm","isActive","email","lstoken","onSuccess","accountClient","useApiClient","AccountClient","isLoading","setIsLoading","useState","serverErrors","setServerErrors","formMethods","useForm","resolver","yupResolver","mode","onSubmit","async","trigger","formValues","getValues","twoFactorRegisterResult","twoFactorRegister","UserName","LSToken","success","error","err","console","log","useEffect","setTimeout","setFocus","React","className","ValidationSummary","errors","formState","InputFL","control","name","placeholder","autoComplete","onKeyDown","e","key","SpinningButton","onClick","color","size","fluid","clientType","layoutContext","useContext","LayoutContext","useMemo","client","onError","message","httpStatus","showError","forwardRef","rest","ref","width","height","viewBox","fill","xmlns","fillRule","clipRule","d","isLocalUrl","url","match","AdfsFormSchema","AdfsForm","adfsProvider","signingEmailProps","defaultValues","useSigningEmailEffect","Name","href","preventDefault","LSHelper","Sso","popupSsoLoginCommon","addParamToUrl","Url","SAMLRequest","termsValidationMessage","RegisterFormModelSchema","FullName","fullName","Email","Password","min","LiquidSpaceConfig","NewMinPasswordLength","max","MaxPasswordLength","test","value","includes","RememberMe","AcceptTerms","oneOf","TermsLabel","target","RegisterForm","onRegisterSuccess","onSwitchToLogin","registerProps","registerModel","undefined","finalIsLoading","registerRequest","requestResult","register","length","map","submitOnEnterHandler","ssoRegistrationOptions","RegistrationType","MemberIdToLink","MemberId","Guid","Empty","OriginatingVenueId","InvitationId","InvitationOwnerId","OwnerId","ConnectionType","LSCommon","Enums","Direct","setValue","Message","PasswordInputFL","CheckboxControlled","label","SeparatorWithText","text","SsoButtons","ForgotPasswordFormSchema","ForgotPasswordForm","onSwitchBack","isSubmitted","setIsSubmitted","recaptchaToken","setRecaptchaToken","forgotPasswordRequest","forgotResult","forgotPassword","ForgotPasswordRequest","fromJS","errorMessage","onBackClick","Button","ReCAPTCHA","sitekey","RecaptchaKeys","Explicit","SiteKey","onChange","token","SsoButton","ssoType","popupWidth","popupHeight","LSCrossTier","SsoType","Apple","Facebook","Google","LinkedIn","Twitter","getPopupDimensions","modelJson","encodeURIComponent","JSON","stringify","popupSsoLogin","classNames","getKey","toLowerCase","describe","cookies","useCookies","buttonTypes","bt","TermsOfUseModal","show","onAccept","isOpen","setIsOpen","termOfUseHtml","setTermOfUseHtml","toggle","open","termsOfUseHtml","getTermsOfUseHtml","Modal","centered","ModalHeader","lightWordsCount","ModalBody","dangerouslySetInnerHTML","__html","formEmailFieldName","emailValue","watch","onEmailChange","shouldValidate","YUP_FULL_NAME_METHOD","errMsg","this","split","filter","s","YUP_IN_DOMAINS_METHOD","domains","domainIndex","indexOf","domain","substr","YUP_PHONE_METHOD","result","phoneUtil","PhoneNumberUtil","getInstance","phoneNumber","i","SupportedCountries","parse","isValidNumberForRegion","isValidNumber","Environment","Enum","EnvironmentType","Development","Staging","YUP_NAME_METHOD","YUP_UNIQUE_METHOD","field","array","notNullArray","row","uniqueData","Array","from","Set","index","findIndex","repeatedValue","firstIndex","secondIndex","createError","path","YUP_DATE_STRING_METHOD","moment","isValid","emailRegex","trim","every","SigningForm","LSStore","SigningMode","Login","initialEmail","returnUrl","closeModal","loginFormProps","registerFormProps","changePasswordFormProps","isModal","activeMode","setActiveMode","previousMode","setPreviousMode","setEmail","adfsProviders","setAdfsProviders","matchingAdfsProvider","setMatchingAdfsProvider","signingModalState","useSelector","state","signingModal","setLstoken","phoneNumberLast4","setPhoneNumberLast4","loginProps","setLoginProps","setRegisterProps","changePasswordProps","setChangePasswordProps","modeClassName","m","selectModeWithHistory","selectedMode","onLoginSuccess","logonResult","model","isLogonSuccessResponseTwoFactorRegistrationRequired","TwoFactorRegister","isLogonSuccessResponseTwoFactorConfirmationRequired","onSigningSuccess","userId","TwoFactorConfirm","data","ssoRedirectUrl","User","id","redirectUrl","Account","onLogInSuccessCallback","joinFlow","caller","document","dispatchEvent","CustomEvent","window","EMBEDDEDISLAND","onlyHeaderReload","reloadHeader","popUpRedirectUrl","location","reload","urlParams","URLSearchParams","search","returnUrlToUse","get","SSO_logon_Completed","function_SSO_accountLinking_Completed","params","abortController","AbortController","abortSignal","getAdfsProvides","signal","abort","j","EmailDomains","RegExp","Adfs","style","transform","Register","registerResponse","showTwoFactorForm","TwoFactorConfirmModel","InitialMode","PhoneNumberLast4","LoginForm","onSwitchToSignup","onSwitchToForgotPassword","Forgot","onSwtichToChangePassword","changePasswordOptions","ChangePassword","TwoFactorConfirmForm","ChangePasswordForm","Checkbox","type","CustomInput","Controller","render","onBlur","mergedClasses","resolvePath","checked","logonSuccessResponse","showTwoFactorRegister","showTwoFactorConfirmation","isChangePasswordSuccessResponse","response","showTermsOfUse","ClientBase","jsonParseReviver","constructor","super","logon","logonRequest","url_","request","IsDialog","content_","fetch","body","method","headers","then","_response","transformResult","json","twoFactorRegisterRequest","twoFactorConfirm","twoFactorConfirmRequest","changePasswordRequest","newScimClientToken","accountId","newScimClientSecret","ChangePasswordFormSchema","OldPassword","NewPassword","notOneOf","ConfirmPassword","ForcePasswordChange","changeResult","memberId","TwoFactorConfirmFormSchema","AuthyToken","LoginFormSchema","password","MinPasswordLength","rememberMe","optional","setShowTermsOfUse","termsOfUseAccepted","setTermsOfUseAccepted","TermsOfUseAccepted","logonStatus","LogonStatusEnum","ForcedPasswordChange","PasswordExpired","passwordValid","onTermsOfUseAccept","children","isPasswordVisible","setIsPasswordVisible","togglePasswordVisible","wasVisible","Icons"],"sourceRoot":""}