{"version":3,"sources":["assets/mail.svg","components/MailEmpty/index.tsx","components/ResendModal/index.tsx","utils/util.ts","components/PasswordStrength/index.tsx","utils/domain.ts","assets/flow360_logo.svg","constants/index.ts","constants/envConfig.ts","utils/cognitoHelper.ts","routes/ResetPassword/index.module.less","routes/SignUp/index.module.less","constants/providerConfig.ts","constants/portalConfig.ts","components/CountrySelect/index.tsx","routes/Login/index.module.less","routes/Challenge/index.module.less","routes/MicrosoftLogin/index.module.less","utils/request.ts","services/index.tsx","utils/apiGenerator.ts","assets/logo2.png","routes/Anduril/Login/index.tsx","assets/google_icon.svg","assets/microsoft_icon.svg","routes/Login/components/LoginPanel/index.tsx","routes/auth.tsx","routes/Login/index.tsx","routes/Challenge/components/ChallengePanel/index.tsx","routes/Challenge/index.tsx","routes/MicrosoftLogin/components/MicrosoftLoginPanel/index.tsx","routes/MicrosoftLogin/index.tsx","routes/ResetPassword/components/ResetPasswordPanel/index.tsx","routes/ResetPassword/index.tsx","routes/SignUp/components/SignUpPanel/index.tsx","routes/SignUp/components/Tidy3dSignUpPanel/index.tsx","components/ResendButton/index.tsx","routes/SignUp/index.tsx","IpStatusContext.ts","routes/Home/index.tsx","App.tsx","reportWebVitals.js","index.tsx","assets/logo.svg","assets/tidy3d_logo.svg","components/AuthLayout/index.tsx","routes/Challenge/components/ChallengePanel/index.module.less","routes/Login/components/LoginPanel/index.module.less","routes/SignUp/components/SignUpPanel/index.module.less","routes/SignUp/components/Tidy3dSignUpPanel/index.module.less","routes/MicrosoftLogin/components/MicrosoftLoginPanel/index.module.less","routes/ResetPassword/components/ResetPasswordPanel/index.module.less","constants/appConfig.ts","routes/Anduril/Login/index.module.less"],"names":["MailEmpty","props","_jsx","_Empty","image","src","mailIcon","width","height","alt","ResendModal","Component","constructor","_this","arguments","this","state","didResend","loading","length","undefined","setState","resend","async","email","api","resendEmail","e","_notification","error","message","description","render","content","_Modal","maskClosable","closable","footer","wrapClassName","centered","children","_jsxs","className","CheckCircleOutlined","style","color","ExclamationCircleOutlined","_Button","onClick","type","ONE_TIME_TOKEN_KEY","cookieBaseConfig","domain","cookieDomain","secure","getUrlQueryParams","search","window","location","startsWith","substring","querystring","parse","setToken","_ref","accessToken","refreshToken","idToken","config","finalConfig","Cookies","set","setUser","user","key","obj","JSON","stringify","setCookieObj","getUser","get","getCookieObj","setLoginFlag","Date","now","testPasswordStrength","pwd","strongRegex","RegExp","mediumRegex","test","isFromTidy3d","isFromApp","isFromFlow360","isFromAdmin","isFromBoss","isFromLog","isFromInternal","getAppNameFromUrl","appName","params","ref","decodeURIComponent","isFromAnduril","clientHost","host","concat","isFromClientHost","jumpToAnduril","getProviderConfig","href","loginUrl","initDocTitleAndDesc","title","desc","headTitleEle","document","getElementById","metaTitleEle","metaDescEle","innerText","encodeUrlJson","encodeURIComponent","console","decodeUrlJson","str","initHubspotForm","formId","formData","iframeName","form","createElement","id","display","target","Object","entries","forEach","_ref2","name","value","input","appendChild","submitBtn","iframe","visibility","body","submit","clearHubspotCache","setTimeout","click","removeChild","localStorage","removeItem","addTokenToUrl","url","token","resultUrl","URL","searchParams","PasswordStrength","level","tip","list","Array","fill","map","item","index","classnames","hostname","parseResult","parseDomain","ParseResultType","Listed","topLevelDomains","join","getCookieDomain","LOGIN_SALT","uat","s3","REGION","CASE_BUCKET","MESH_BUCKET","STUDIO_BUCKET","webapiV2","cognito","USER_POOL_ID","APP_CLIENT_ID","IDENTITY_POOL_ID","tidy3dCognito","getConfig","getCognitoConfig","cognitoConfig","poolData","UserPoolId","ClientId","CognitoUserPool","toUsername","toLowerCase","replace","hashPassword","password","sha512","module","exports","anduril","redirectUrl","provider","_providerConfigMap","dev","origin","homeUrl","getPortalConfig","Option","_Select","CountrySelect","_countryList$find","super","isRegionSelectVisible","needRegion","selectedCountry","regionList","onCountryChange","data","onChange","selectedRegion","onRegionChange","countryList","find","country","code","isRegionVisible","_Row","gutter","_Col","span","placeholder","showSearch","optionFilterProp","size","region","fetcher","axios","create","withCredentials","headers","Application","interceptors","request","use","_","Promise","reject","response","status","parseInt","checkStatus","_error$response","_error$response$data","_error$response2","_error$response2$data","APIS","login","method","oauth2","sendRegisterEmail","sendWaitingEmail","verifyEmail","forgotPassword","saveKyc","mfaAuth","mfaReset","mfaResetConfirm","confirmPassword","checkIp","timeout","getMicrosoftLoginMetadata","generator","apiKey","apiConfig","isUpload","toUpperCase","upload","FormData","post","delete","put","AndurilLoginPage","styles","anduril_login_page","AuthLayout","isFlow360","showLogo","login_panel","flow360Logo","welcome","intro","sign_in_btn","Item","_Form","Password","_Input","appTypeOptions","label","LoginPanel","appType","_this$form","validateFields","then","onLogin","referralCode","currentAppConfig","getCurrentAppConfig","labelCol","wrapperCol","me","_Radio","Group","defaultValue","options","optionType","buttonStyle","validateTrigger","rules","required","maxLength","onPressEnter","block","text","Link","to","pathname","link","_Fragment","_Divider","googleLogin","disabled","icon","googleIcon","appleLogin","AppleFilled","microsoftLogin","history","push","microsoftIcon","withRouter","auth","WrappedComponent","PureComponent","isLegal","isSimulationCloud","goHome","portalConfig","LoginPage","redirect","warning","LogRocket","identify","track","username","authResult","challengeName","challengeData","oneTimeToken","userEmail","identityId","expires","showResendModal","resendModalVisible","hideResendModal","componentDidMount","login_page","visible","onCancel","ChallengePanel","onSubmit","reset","_this$form2","setFieldsValue","mfaCode","onDisable","challenge_panel","layout","len","OtpInput","numInputs","containerStyle","opt_input","inputStyle","input_item","renderInput","ChallengePage","disableModal","isValidState","counter","session","countDown","challengeParameters","userName","USER_ID_FOR_SRP","challengeResponses","USERNAME","SOFTWARE_TOKEN_MFA_CODE","_e$message","indexOf","showDisableModal","confirm","okText","onOk","resolve","disableMfaSent","clearTimeout","destroy","catch","replaceState","invalidatePage","Redirect","success_msg","MicrosoftLoginPanel","microsoft_login_panel","MicrosoftLoginPage","invitationCode","companyInvitationCode","appConfig","targetUrl","clientId","invitation_code","micro_soft_page","ResetPasswordPanel","onReset","reset_password_panel","ResetPasswordPage","success","successEmail","reset_password_page","SignUpPanel","agreementChecked","agreementAlert","sign_up_panel","initialValues","validateFirst","whitespace","_Tooltip","placement","min","getFieldValue","validator","includes","Error","noStyle","shouldUpdate","passwordValue","passwordStrength","password_strength_wrapper","_ref3","CSSTransition","classNames","in","exit","onEntered","_Checkbox","checked","rel","Tidy3dSignUpPanel","countryRegion","rest","subscribed","isCompanyInvite","Boolean","tidy3d_sign_up_panel","autoComplete","position","border","padding","margin","valuePropName","ResendButton","whiteSpace","SignUpPage","isTidy3d","hsForm","_hsForm","rawPassword","trim","_formData$country","firstName","lastName","company","sign_up_page","marginTop","IpStatusContext","createContext","EIpStatus","loadableConfig","fallback","_Spin","indicator","LoadingOutlined","fontSize","spin","ChangePasswordPage","loadable","VerifyEmailPage","VerifyMfaPage","CallbackPage","HomePage","isLogRocketInited","ipStatus","unlisten","listen","destroyAll","initLogRocket","UNSAFE_componentWillReceiveProps","nextProps","componentWillUnmount","Normal","isAnduril","Provider","logo2","Switch","Route","path","component","App","BrowserRouter","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","React","StrictMode","isFlow360Props","isTidy3dProps","isDefault","flow360","tidy3d","tidy3dLogo","logo","googleLogout","getAppConfigMap","getAppConfig","app","appConfigMap"],"mappings":"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","file":"static/js/main.9dd72507.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/mail.d3651aff.svg\";","import React from 'react';\nimport { Empty, EmptyProps } from 'antd';\nimport mailIcon from '@/assets/mail.svg';\n\nexport default function MailEmpty(props: EmptyProps) {\n return (\n }\n {...props}\n />\n );\n}\n","import React, { Component } from 'react';\nimport {\n ExclamationCircleOutlined,\n CheckCircleOutlined,\n} from '@ant-design/icons';\nimport { notification, Modal, Button, ModalProps } from 'antd';\nimport MailEmpty from '../MailEmpty';\nimport api from '@/services';\nimport './index.less';\nexport interface ResendModalProps extends ModalProps {\n email: string;\n content: React.ReactNode;\n}\nexport interface ResendModalState {\n didResend: boolean;\n loading: boolean;\n}\nexport default class ResendModal extends Component<\n ResendModalProps,\n ResendModalState\n> {\n state = {\n didResend: false,\n loading: false,\n };\n loading = (loading = false) => {\n this.setState({\n loading,\n });\n };\n resend = async () => {\n try {\n this.loading(true);\n const { email } = this.props;\n await api.resendEmail({ email });\n this.setState({\n didResend: true,\n });\n } catch (e: any) {\n notification.error({\n message: 'Resend email error',\n description: e.message || 'Please try again or contact the admin',\n });\n } finally {\n this.loading(false);\n }\n };\n render() {\n const { content } = this.props;\n const { didResend, loading } = this.state;\n return (\n // @ts-ignore\n \n
\n
\n {didResend ? (\n \n ) : (\n \n )}\n {{didResend ? 'Success' : 'Warning'}}\n
\n
\n {didResend ? (\n \n We sent a verification email to your account. Please follow\n the instructions in the email to complete the signup\n process.\n
\n }\n />\n ) : (\n
{content}
\n )}\n
\n
\n {!didResend && (\n \n )}\n
\n \n \n );\n }\n}\n","import querystring from 'querystring';\nimport Cookies from 'js-cookie';\nimport { sha512 } from 'js-sha512';\n\nimport { UserInfo } from '../type';\nimport { cookieDomain } from './domain';\nimport { getProviderConfig } from '../constants/providerConfig';\nexport const ONE_TIME_TOKEN_KEY = '_token';\nexport interface CookieToken {\n accessToken: string;\n refreshToken: string;\n idToken: string;\n}\nexport interface CookieConfig {\n domain?: string;\n expires?: number;\n secure?: boolean;\n}\nconst cookieBaseConfig = {\n domain: cookieDomain,\n secure: !(isDev() || isLocal()),\n};\n\nexport function getUrlQueryParams(search = window.location.search): {\n [key: string]: string | string[] | undefined;\n} {\n try {\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n return querystring.parse(search) || {};\n } catch (e) {\n return {};\n }\n}\n\nexport function setToken(\n { accessToken, refreshToken, idToken }: CookieToken,\n config: CookieConfig = {}\n) {\n const finalConfig = {\n ...cookieBaseConfig,\n ...config,\n };\n Cookies.set('accessToken', accessToken, finalConfig);\n Cookies.set('refreshToken', refreshToken, finalConfig);\n Cookies.set('idToken', idToken, finalConfig);\n // Cookies.set('idpIdToken', idpIdToken, finalConfig);\n}\n\nexport function getToken(): CookieToken {\n return {\n accessToken: Cookies.get('accessToken') || '',\n refreshToken: Cookies.get('refreshToken') || '',\n idToken: Cookies.get('idToken') || '',\n };\n}\n\nexport function setUser(user: Partial, config: CookieConfig = {}) {\n const finalConfig = {\n ...cookieBaseConfig,\n ...config,\n };\n setCookieObj('user', user, finalConfig);\n}\n\nexport function getUser(): Partial | null {\n return getCookieObj('user');\n}\nexport function setLoginFlag(config: CookieConfig = {}) {\n const finalConfig = {\n ...cookieBaseConfig,\n ...config,\n };\n Cookies.set('loginTime', Date.now(), finalConfig);\n}\nexport function setCookieObj(key: string, obj: any, config: CookieConfig = {}) {\n try {\n Cookies.set(key, JSON.stringify(obj), config);\n } catch (e) {}\n}\n\nexport function getCookieObj(key: string) {\n try {\n return JSON.parse(Cookies.get(key));\n } catch (e) {\n return null;\n }\n}\n\nexport function clearToken() {\n Cookies.remove('accessToken', cookieBaseConfig);\n Cookies.remove('refreshToken', cookieBaseConfig);\n Cookies.remove('idToken', cookieBaseConfig);\n}\n\nexport function clearUser() {\n Cookies.remove('user', cookieBaseConfig);\n}\n\nexport function clearAllAuth() {\n clearToken();\n clearUser();\n}\n\n// return 1, 2, 3, 4 (strong)\nexport function testPasswordStrength(pwd = '') {\n let strongRegex = new RegExp(\n '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*])(?=.{8,})'\n );\n let mediumRegex = new RegExp(\n '^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{8,})'\n );\n if (strongRegex.test(pwd)) {\n return 4;\n }\n if (mediumRegex.test(pwd)) {\n if (pwd.length >= 6) {\n return 3;\n } else {\n return 2;\n }\n }\n return 1;\n}\n\nexport function testInviteCode(code: string) {\n const allowed = [\n '92f3bf45390c5bfc4fa03f9378486bec6395918e35f412faf5a78da96fddc1c198cd211d9fa1c5ae0b658dabc67788bf3e8d8835f3e7495e8162550de0dcf056',\n '498e2c4988a239aba05e9fdee2a307568facaf66cfcea06fe0f3631fb6a6ef066f6d2901473fe86591938689031e9bd933a259023ab0cec6f21821ec5bfaae28',\n '620c5756739d618c3b98e6d933ff9cb423de9f53c99002f2a5208b87e6a388d7509d75119e15561afdb551ddb469ad51b4ebda4cd84ed122ef130ec2448a9e77',\n 'fdecac90672d1743d5d3616f774cf0562d2e277007e8a96e8a9be89aacd5fed6a50bf3ad6f1ba5fa2fb0af20b020a54421f87139081406d0d0a62972bf519ce7',\n 'c19b36cc882f011f7c065215ebed135cf2df9956068c12bb5a80b2bbd091381eb6db4c086d548f8aede74c5458c8787956029bd567f645a9832444337119c8f1',\n ];\n const salt = 'xaareawdfgagpaw';\n const res = sha512(code + salt);\n return allowed.includes(res);\n}\n\nexport function isProd() {\n return process.env.REACT_APP_BUILD_ENV === 'prod';\n}\nexport function isDev() {\n return process.env.REACT_APP_BUILD_ENV === 'dev';\n}\nexport function isLocal() {\n return process.env.REACT_APP_BUILD_ENV === 'local';\n}\nexport function isFromTidy3d() {\n return isFromApp('tidy3d');\n}\n\nexport function isFromFlow360() {\n return isFromApp('flow360');\n}\n\nexport function isFromAdmin() {\n return isFromApp('admin');\n}\nexport function isFromBoss() {\n return isFromApp('boss');\n}\nexport function isFromLog() {\n return isFromApp('logapp');\n}\nexport function isFromInternal() {\n return isFromAdmin() || isFromLog() || isFromBoss();\n}\n/**\n * Parse and extract ${app} from URL\n * @returns {string}\n */\nexport function getAppNameFromUrl() {\n if (isFromTidy3d()) {\n return 'tidy3d';\n } else if (isFromAdmin()) {\n return 'admin';\n } else if (isFromBoss()) {\n return 'boss';\n } else if (isFromFlow360()) {\n return 'flow360';\n } else if (isFromLog()) {\n return 'logapp';\n }\n}\nexport function getAppTitleFromUrl() {\n if (isFromTidy3d()) {\n return 'Tidy3D - FDTD for Electromagnetic Simulation | Flexcompute Inc.';\n } else if (isFromFlow360()) {\n return 'Flow360 - The revolutionary CFD solver | Flexcompute Inc.';\n }\n return 'Flexcompute Inc.';\n}\nexport function getAppDescFromUrl() {\n if (isFromTidy3d()) {\n return 'Faster, Larger Simulations - A new solver dedicated to next-generation chips has yielded a simulation breakthrough';\n } else if (isFromFlow360()) {\n return 'A Scalable CFD Solver for Better Product Design - Flow360 Solver is a revolutionary CFD solver based on a breakthrough computing architecture that results in scalability of accurate aerodynamic simulations at unprecedented speeds.';\n }\n return 'Flexcompute Inc.';\n}\nexport function isFromApp(appName: string) {\n const params = getUrlQueryParams();\n const ref = decodeURIComponent((params.ref as string) || '');\n // const app = params.app || '';\n // const isFromApp =\n // ref.indexOf(`${appName}.simulation.cloud`) > -1 ||\n // app.toLowerCase() === appName;\n // const isFromApp = ref.indexOf(`${appName}.simulation.cloud`) > -1;\n const reg = new RegExp(\n appName + '\\\\.((dev\\\\-)|(uat\\\\-))??simulation\\\\.cloud',\n 'i'\n );\n const isFromApp = reg.test(ref);\n return isFromApp;\n}\nexport function isFromClientHost(\n clientHost: string,\n host = window.location.host\n) {\n const reg = new RegExp(\n `^${clientHost}-.*\\\\.((dev-)|(uat-))??simulation\\\\.cloud$`,\n 'i'\n );\n const isFromClientHost = reg.test(host);\n return isFromClientHost;\n}\nexport function isFromAnduril() {\n return isFromClientHost('anduril');\n}\nexport function jumpToAnduril() {\n const config = getProviderConfig('anduril');\n if (config) {\n window.location.href = config.loginUrl;\n }\n}\n// export function getDefaultAppHost(appName) {\n// appName = getAppNameFromUrl() || 'flow360';\n// if (isFromApp(appName)) {\n// return `${getDefaultHostPrefix()}${appName}.simulation.cloud`;\n// }\n// }\n\n// export function getDefaultHostPrefix() {\n// const BUILD_ENV = process.env.REACT_APP_BUILD_ENV;\n// if (BUILD_ENV === 'prod') {\n// return '';\n// } else if (BUILD_ENV === 'uat') {\n// return 'uat-';\n// }\n// return 'dev-';\n// }\n// const PAGE_TITLE_MAP = {\n// '/login': {\n// title: 'Sign In',\n// },\n// '/reset_password': {\n// title: 'Reset Password',\n// },\n// '/signup': {\n// title: 'Sign Up',\n// },\n// };\nexport function initDocTitleAndDesc() {\n const title = getAppTitleFromUrl();\n const desc = getAppDescFromUrl();\n // const pageTitle = PAGE_TITLE_MAP[location?.pathname]?.title || '';\n const headTitleEle = document.getElementById('headTitle') as HTMLTitleElement;\n const metaTitleEle = document.getElementById('metaTitle') as HTMLMetaElement;\n const metaDescEle = document.getElementById('metaDesc') as HTMLMetaElement;\n headTitleEle.innerText = title;\n metaTitleEle.content = title;\n metaDescEle.content = desc;\n}\nexport function encodeUrlJson(obj: any): string {\n try {\n return encodeURIComponent(JSON.stringify(obj)) || '';\n } catch (e) {\n console.error(e);\n return '';\n }\n}\nexport function decodeUrlJson(str: string) {\n try {\n return JSON.parse(decodeURIComponent(str)) || {};\n } catch (e) {\n console.error(e);\n return {};\n }\n}\nexport function initHubspotForm(formId: string, formData: any) {\n const iframeName = `${Date.now()}_form`;\n\n const form = document.createElement('form');\n form.id = formId;\n form.style.display = 'none';\n form.target = iframeName;\n Object.entries(formData ?? {}).forEach(([name, value]) => {\n const input = document.createElement('input');\n input.type = 'text';\n input.name = name;\n input.value = value as string;\n form.appendChild(input);\n });\n const submitBtn = document.createElement('button');\n submitBtn.type = 'submit';\n form.appendChild(submitBtn);\n\n const iframe = document.createElement('iframe');\n iframe.style.visibility = 'none';\n iframe.width = '0';\n iframe.height = '0';\n iframe.name = iframeName;\n // iframe.srcdoc = div.innerHTML;\n document.body.appendChild(iframe);\n document.body.appendChild(form);\n return {\n submit: () => {\n clearHubspotCache();\n setTimeout(() => {\n submitBtn.click();\n document.body.removeChild(iframe);\n document.body.removeChild(form);\n }, 1000);\n },\n };\n}\nexport function clearHubspotCache() {\n localStorage.removeItem('li_submission');\n}\nexport function addTokenToUrl(url: string, token: string) {\n const resultUrl = new URL(url);\n resultUrl.searchParams.set(ONE_TIME_TOKEN_KEY, token);\n return resultUrl.href;\n}\n","import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport './index.less';\n\nexport interface PasswordStrengthProps {\n level: number;\n}\nexport default class PasswordStrength extends Component {\n render() {\n const { level } = this.props;\n let tip = '';\n switch (level) {\n case 1:\n case 2:\n tip = 'weak';\n break;\n case 3:\n tip = 'medium';\n break;\n case 4:\n tip = 'strong';\n break;\n default:\n }\n const list = new Array(4).fill(1);\n return (\n
\n {list.map((item, index) => (\n = index + 1,\n })}\n />\n ))}\n
{tip}
\n
\n );\n }\n}\n","import { parseDomain, ParseResultType } from 'parse-domain';\n\nexport function getCookieDomain(hostname = window.location.hostname) {\n const parseResult = parseDomain(hostname);\n let cookieDomain;\n if (parseResult.type === ParseResultType.Listed) {\n const { domain, topLevelDomains } = parseResult;\n cookieDomain = `.${[domain, ...topLevelDomains].join('.')}`;\n }\n return cookieDomain;\n}\nconst cookieDomain = getCookieDomain();\nexport { cookieDomain };\n","export default __webpack_public_path__ + \"static/media/flow360_logo.33383d3d.svg\";","export const LOGIN_SALT = '5ac0e45f46654d70bda109477f10c299';\n","import { isFromTidy3d } from '../utils/util';\n\nexport interface EnvConfig {\n s3: S3Config;\n webapiV2: {\n URL: string;\n };\n cognito: CognitoConfig;\n tidy3dCognito: CognitoConfig;\n}\nexport interface S3Config {\n REGION: string;\n CASE_BUCKET: string;\n MESH_BUCKET: string;\n STUDIO_BUCKET: string;\n}\nexport interface CognitoConfig {\n REGION: string;\n USER_POOL_ID: string;\n APP_CLIENT_ID: string;\n IDENTITY_POOL_ID: string;\n}\nconst dev: EnvConfig = {\n s3: {\n REGION: 'us-east-1',\n CASE_BUCKET: 'flow360cases-v1',\n MESH_BUCKET: 'flow360meshes-v1',\n STUDIO_BUCKET: 'flow360-studio-v1',\n },\n webapiV2: {\n URL: 'https://portal-api.dev-simulation.cloud',\n //URL: \"http://localhost:5000\",\n },\n cognito: {\n REGION: 'us-east-1',\n USER_POOL_ID: 'us-east-1_t41TfpFiq',\n APP_CLIENT_ID: '58h5c2luqdrads6cpjtbjmabjr',\n IDENTITY_POOL_ID: 'us-east-1:7d23a768-ca1c-446b-b91b-31d3e1fe968a',\n },\n tidy3dCognito: {\n REGION: 'us-east-1',\n USER_POOL_ID: 'us-east-1_kjeChiCm8',\n APP_CLIENT_ID: '1imult4e80s1lfocqjpfv69rm2',\n IDENTITY_POOL_ID: 'us-east-1:6cdace1e-db96-4a52-b513-ceb212913de9',\n },\n};\n\nconst prod: EnvConfig = {\n s3: {\n REGION: 'us-gov-west-1',\n CASE_BUCKET: 'flow360cases',\n MESH_BUCKET: 'flow360meshes',\n STUDIO_BUCKET: 'flow360studio',\n },\n webapiV2: {\n URL: 'https://portal-api.simulation.cloud',\n },\n cognito: {\n REGION: 'us-east-1',\n USER_POOL_ID: 'us-east-1_Csq1uNAO3',\n APP_CLIENT_ID: 'scepvluho5eeehv297pvdunk5',\n IDENTITY_POOL_ID: 'us-east-1:68a3cf31-60fc-4def-8db2-4c3d48070756',\n },\n tidy3dCognito: {\n REGION: 'us-east-1',\n USER_POOL_ID: 'us-east-1_kfHmLjlPl',\n APP_CLIENT_ID: '45krrjc3bm1snlddbo79jfpk1d',\n IDENTITY_POOL_ID: 'us-east-1:dc691611-c253-4448-9b96-2bc507940155',\n },\n};\nconst uat: EnvConfig = {\n s3: {\n REGION: 'us-west-2',\n CASE_BUCKET: 'flow360cases-uat2',\n MESH_BUCKET: 'flow360meshes-uat2',\n STUDIO_BUCKET: 'flow360-studio-uat2',\n },\n webapiV2: {\n URL: 'https://portal-api.uat-simulation.cloud',\n //URL: \"http://localhost:5000\",\n },\n cognito: {\n REGION: 'us-west-2',\n USER_POOL_ID: 'us-west-2_Cb8xkdgub',\n APP_CLIENT_ID: '457ch71sk8k3cq5ki0o6k7ljhe',\n IDENTITY_POOL_ID: '',\n },\n tidy3dCognito: {\n REGION: 'us-west-2',\n USER_POOL_ID: 'us-west-2_1zBiqSz9j',\n APP_CLIENT_ID: '6rt02ramf9ajkh93redglq4b4h',\n IDENTITY_POOL_ID: '',\n },\n};\nconst pentest: EnvConfig = {\n ...uat,\n webapiV2: {\n URL: 'https://pentest-portal-api.uat-simulation.cloud',\n //URL: \"http://localhost:5000\",\n },\n};\nexport function getConfig(): EnvConfig {\n const BUILD_ENV = process.env.REACT_APP_BUILD_ENV;\n if (BUILD_ENV === 'prod') {\n return prod;\n } else if (BUILD_ENV === 'uat') {\n return uat;\n } else if (BUILD_ENV === 'pentest') {\n return pentest;\n }\n return dev;\n}\n\nexport default getConfig();\n\nexport function getCognitoConfig(): CognitoConfig {\n const config = getConfig();\n if (isFromTidy3d()) {\n return config.tidy3dCognito;\n }\n return config.cognito;\n}\n","import {\n CognitoUserPool,\n // CognitoUserAttribute,\n CognitoUser,\n} from 'amazon-cognito-identity-js';\nimport { sha512 } from 'js-sha512';\n\nimport { getCognitoConfig } from '../constants/envConfig';\nimport { LOGIN_SALT } from '../constants';\n\nconst cognitoConfig = getCognitoConfig();\nconst poolData = {\n UserPoolId: cognitoConfig.USER_POOL_ID,\n ClientId: cognitoConfig.APP_CLIENT_ID,\n};\nconst userPool = new CognitoUserPool(poolData);\n\n// export function resetPassword(email, { onSuccess, onError, ...rest }) {\n// createUser(email).forgotPassword({\n// onSuccess,\n// onFailure: onError,\n// ...rest,\n// });\n// }\n\n// export function confirmPassword(\n// { email, password, code },\n// { onSuccess, onError, ...rest }\n// ) {\n// createUser(email).confirmPassword(code, hashPassword(password), {\n// onSuccess,\n// onFailure: onError,\n// ...rest,\n// });\n// }\n\n// export function verifyEmail(email, code, callback) {\n// // @callback params\n// // (err,result)=>{}\n// createUser(email).confirmRegistration(code, true, callback);\n// }\n\nexport function createUser(email: string) {\n return new CognitoUser({\n Username: toUsername(email),\n Pool: userPool,\n });\n}\n\nexport function toUsername(email: string) {\n return email.toLowerCase().replace('@', '-at-');\n}\n\nexport function hashPassword(password: string) {\n return sha512(password + LOGIN_SALT);\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"reset_password_page\":\"index_reset_password_page__mza6C\",\"success_msg\":\"index_success_msg__3Td9p\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"sign_up_page\":\"index_sign_up_page__1i2qk\",\"success_msg\":\"index_success_msg__2Vb4k\"};","export interface ProviderConfigMap {\n anduril: ProviderConfig;\n}\nexport interface ProviderConfig {\n redirectUrl: string;\n loginUrl: string;\n}\nconst dev: ProviderConfigMap = {\n anduril: {\n redirectUrl: 'https://anduril-flow360.dev-simulation.cloud',\n loginUrl: `https://sso.dev-simulation.cloud/oauth2/authorize?client_id=3juubqouhhf354ai4b79tcal2j&response_type=code&scope=email+openid+profile&redirect_uri=https://anduril-my.dev-simulation.cloud/callback/flow360/anduril`,\n },\n};\nconst uat: ProviderConfigMap = {\n anduril: {\n redirectUrl: 'https://anduril-flow360.uat-simulation.cloud',\n loginUrl: `https://sso.uat-simulation.cloud/oauth2/authorize?client_id=24oodmcut9qcrbiij0i274cnrf&response_type=code&scope=email+openid+profile&redirect_uri=https://anduril-my.uat-simulation.cloud/callback/flow360/anduril`,\n },\n};\nconst pentest: ProviderConfigMap = { ...uat };\nconst prod: ProviderConfigMap = {\n anduril: {\n redirectUrl: 'https://anduril-flow360.simulation.cloud',\n loginUrl: `https://sso.simulation.cloud/oauth2/authorize?client_id=41ut0khprdcacuc5cfedl4s3hh&response_type=code&scope=email+openid+profile&redirect_uri=https://anduril-my.simulation.cloud/callback/flow360/anduril`,\n },\n};\n\nexport function getProviderConfigMap(): ProviderConfigMap {\n const BUILD_ENV = process.env.REACT_APP_BUILD_ENV;\n if (BUILD_ENV === 'prod') {\n return prod;\n } else if (BUILD_ENV === 'uat') {\n return uat;\n } else if (BUILD_ENV === 'pentest') {\n return pentest;\n }\n return dev;\n}\nexport function getProviderConfig(provider: string): ProviderConfig | null {\n const providerConfigMap = getProviderConfigMap();\n return providerConfigMap[provider as keyof typeof providerConfigMap] ?? null;\n}\n","import { cookieDomain } from '../utils/domain';\n\nexport interface PortalConfig {\n cookieDomain?: string;\n host: string;\n loginUrl: string;\n homeUrl: string;\n}\nconst dev: PortalConfig = {\n cookieDomain: cookieDomain,\n host: 'dev-my.simulation.cloud',\n loginUrl: `${window.location.origin}/login`,\n homeUrl: 'https://develop.d2dhrbzbpo6ev1.amplifyapp.com',\n};\nconst uat: PortalConfig = {\n ...dev,\n host: 'my.uat-simulation.cloud',\n // loginUrl: 'https://uat-my.simulation.cloud/login',\n homeUrl: 'https://www.simulation.cloud',\n};\nconst pentest: PortalConfig = {\n ...uat,\n host: 'pentest-my.uat-simulation.cloud',\n // loginUrl: 'https://uat-my.simulation.cloud/login',\n homeUrl: 'https://www.simulation.cloud',\n};\nconst prod: PortalConfig = {\n ...dev,\n host: 'my.simulation.cloud',\n // loginUrl: 'https://my.simulation.cloud/login',\n homeUrl: 'https://www.simulation.cloud',\n};\n\nexport function getPortalConfig(): PortalConfig {\n const BUILD_ENV = process.env.REACT_APP_BUILD_ENV;\n if (BUILD_ENV === 'prod') {\n return prod;\n } else if (BUILD_ENV === 'uat') {\n return uat;\n } else if (BUILD_ENV === 'pentest') {\n return pentest;\n }\n return dev;\n}\n\nexport default getPortalConfig();\n","import React, { Component } from 'react';\nimport { Row, Col, Select } from 'antd';\nimport countryList from './country-region.json';\n\nconst { Option } = Select;\n\nexport interface CountrySelectProps {\n value?: [Country | null, Region | null];\n needRegion: boolean;\n onChange?: (value: [Country | null, Region | null]) => void;\n}\nexport interface CountrySelectState {\n selectedCountry: Country | null;\n selectedRegion: Region | null;\n regionList: Region[];\n}\nexport interface Region {\n code: string;\n name: string;\n}\nexport interface Country extends Region {\n regionList?: Region[];\n}\nexport default class CountrySelect extends Component<\n CountrySelectProps,\n CountrySelectState\n> {\n constructor(props: CountrySelectProps) {\n super(props);\n const { value } = props;\n const [selectedCountry = null, selectedRegion = null] = value || [];\n const regionList =\n countryList.find(country => country.code === selectedCountry?.code)\n ?.regionList || [];\n this.state = {\n selectedCountry,\n selectedRegion,\n regionList,\n };\n }\n isRegionSelectVisible = () => {\n const { needRegion } = this.props;\n if (!needRegion) {\n return false;\n }\n const { selectedCountry, regionList } = this.state;\n if (!selectedCountry || regionList?.length) {\n // if (regionList?.length) {\n return true;\n } else {\n return false;\n }\n };\n onCountryChange = (value: string, { data }: { data: Country }) => {\n const { onChange } = this.props;\n //exclude regionList from data\n const { regionList, ...selectedCountry } = data;\n this.setState(\n {\n selectedCountry: selectedCountry,\n selectedRegion: null,\n regionList: regionList || [],\n },\n () => {\n onChange?.([selectedCountry, null]);\n }\n );\n };\n onRegionChange = (value: string, { data }: { data: Region }) => {\n const { onChange } = this.props;\n const { selectedCountry } = this.state;\n this.setState(\n {\n selectedCountry,\n selectedRegion: data,\n },\n () => {\n onChange?.([selectedCountry, data]);\n }\n );\n };\n render() {\n const { selectedCountry, selectedRegion, regionList } = this.state;\n const isRegionVisible = this.isRegionSelectVisible();\n return (\n \n \n \n {countryList.map(country => (\n \n ))}\n \n \n {isRegionVisible && (\n \n \n {regionList?.map(region => (\n \n ))}\n \n \n )}\n \n );\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"login_page\":\"index_login_page__1sYMo\",\"hidden\":\"index_hidden__1J7LR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"success_msg\":\"index_success_msg__gc3EQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"micro_soft_page\":\"index_micro_soft_page__1dyME\",\"success_msg\":\"index_success_msg__rkP0t\"};","import axios, { AxiosResponse } from 'axios';\nimport { isFromTidy3d } from './util';\nexport interface ResponseData {\n code: number | string;\n [key: string]: any;\n}\nlet fetcher = axios.create({\n withCredentials: false,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n 'content-type': 'application/json',\n Application: isFromTidy3d() ? 'TIDY3D' : '',\n },\n});\n\n// Request interceptors\nfetcher.interceptors.request.use(\n config => {\n const { headers = {}, params = {} } = config;\n const _ = Date.now();\n config.headers = {\n ...headers,\n };\n //add timestamp\n config.params = {\n _,\n ...params,\n };\n return config;\n },\n error => {\n return Promise.reject(error);\n }\n);\n\n// Response interceptors\nfunction checkStatus(response: AxiosResponse) {\n if (response.status >= 200 && response.status < 300) {\n response.data.code =\n parseInt(`${response.data.code}`, 10) || response.status;\n return response.data;\n }\n}\nfetcher.interceptors.response.use(\n function (response) {\n return checkStatus(response);\n },\n function (e) {\n return Promise.reject(e);\n }\n);\n\nfetcher.interceptors.response.use(\n function (response) {\n return response;\n },\n function (error) {\n const code = parseInt(error.response?.data?.code || error.response.status);\n const message = error.response?.data?.error || error.message;\n return Promise.reject({\n ...error,\n code,\n message,\n });\n }\n);\n\n// export const post = fetcher.post;\n// export const put = fetcher.put;\n// export const get = axios.get;\n// export const del = (url, params) => {\n// return fetcher.delete(url, { params });\n// };\nexport default fetcher;\n","import { generator, RequestApiConfigMap } from '../utils/apiGenerator';\nimport config from '../constants/envConfig';\nconst { webapiV2 } = config;\nconst APIS: RequestApiConfigMap = {\n login: {\n method: 'get',\n url: `${webapiV2.URL}/auth`,\n },\n oauth2: {\n method: 'get',\n url: `${webapiV2.URL}/oauth2/token`,\n },\n sendRegisterEmail: {\n method: 'post',\n url: `${webapiV2.URL}/auth/register`,\n },\n sendWaitingEmail: {\n method: 'post',\n url: `${webapiV2.URL}/anonymous/waitinglist`,\n },\n verifyEmail: {\n method: 'put',\n url: `${webapiV2.URL}/auth/verify`,\n },\n resendEmail: {\n method: 'put',\n url: `${webapiV2.URL}/auth/resend`,\n },\n forgotPassword: {\n method: 'post',\n url: `${webapiV2.URL}/auth/forgot-password`,\n },\n saveKyc: {\n method: 'put',\n url: `${webapiV2.URL}/auth/kyc`,\n },\n mfaAuth: {\n method: 'post',\n url: `${webapiV2.URL}/auth/challenge`,\n },\n mfaReset: {\n method: 'post',\n url: `${webapiV2.URL}/auth/mfa/reset`,\n },\n mfaResetConfirm: {\n method: 'post',\n url: `${webapiV2.URL}/auth/mfa/resetConfirm`,\n },\n confirmPassword: {\n method: 'post',\n url: `${webapiV2.URL}/auth/confirm-forget-password`,\n },\n checkIp: {\n method: 'get',\n url: `${webapiV2.URL}/auth/check`,\n timeout: 3000,\n },\n getMicrosoftLoginMetadata: {\n method: 'get',\n url: `${webapiV2.URL}/auth/pre/metadata`,\n timeout: 3000,\n },\n};\nexport default generator(APIS);\n","import { AxiosRequestConfig } from 'axios';\nimport request from './request';\n\nexport interface RequestApiConfig {\n method: 'get' | 'post' | 'put' | 'delete';\n url: string;\n isUpload?: boolean;\n timeout?: number;\n}\nexport interface RequestApiConfigMap {\n [key: string]: RequestApiConfig;\n}\nconst upload = (\n apiConfig: RequestApiConfig,\n data: any,\n config: AxiosRequestConfig\n) => {\n const { url, method } = apiConfig;\n if (data instanceof FormData) {\n }\n return request({\n url,\n method,\n data,\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n ...config,\n });\n};\n\nexport const generator = (APIS: RequestApiConfigMap) => {\n const api: { [key: string]: Function } = {};\n Object.entries(APIS).forEach(([apiKey = '', apiConfig]) => {\n const { method = 'get', url = '', isUpload = false } = apiConfig || {};\n if (!apiKey || !apiConfig || !url) {\n return;\n }\n switch (method.toUpperCase()) {\n case 'POST':\n api[apiKey] = (data: any, config = {}) =>\n isUpload\n ? upload(apiConfig, data, config)\n : request.post(url, data, config);\n break;\n case 'DELETE':\n api[apiKey] = (params: any, config = {}) =>\n request.delete(url, { params, ...config });\n break;\n case 'PUT':\n api[apiKey] = (data: any, config = {}) =>\n request.put(url, data, config);\n break;\n case 'GET':\n default:\n api[apiKey] = (params: any, config = {}) =>\n request.get(url, { params, ...config });\n }\n });\n return api;\n};\n","export default __webpack_public_path__ + \"static/media/logo2.1567433e.png\";","import React, { Component } from 'react';\nimport { Button } from 'antd';\nimport AuthLayout from '@/components/AuthLayout';\nimport flow360Logo from '../../../assets/flow360_logo.svg';\nimport { jumpToAnduril } from '../../../utils/util';\nimport styles from './index.module.less';\n\nexport default class AndurilLoginPage extends Component {\n render() {\n return (\n
\n \n
\n {'Flow360\n
Welcome to Flow360!
\n
\n Flow360 Solver is a Scalable CFD Solver for Better Product Design\n
\n
\n {\n jumpToAnduril();\n }}\n type={'primary'}\n className={styles.sign_in_btn}\n >\n Sign In\n \n
\n
\n
\n
\n );\n }\n}\n","export default __webpack_public_path__ + \"static/media/google_icon.e6226f71.svg\";","export default __webpack_public_path__ + \"static/media/microsoft_icon.28d8f59e.svg\";","import React, { Component } from 'react';\nimport { Link, RouteComponentProps, withRouter } from 'react-router-dom';\nimport {\n Form,\n Input,\n Button,\n Divider,\n FormInstance,\n Radio,\n RadioChangeEvent,\n} from 'antd';\nimport { AppleFilled } from '@ant-design/icons';\n\nimport styles from './index.module.less';\nimport { getCurrentAppConfig } from '@/constants/appConfig';\nimport googleIcon from '../../../../assets/google_icon.svg';\nimport microsoftIcon from '../../../../assets/microsoft_icon.svg';\nimport {\n encodeUrlJson,\n getUrlQueryParams,\n isFromFlow360,\n isFromTidy3d,\n isFromInternal,\n} from '../../../../utils/util';\n\nconst { Item } = Form;\nconst { Password } = Input;\nconst appTypeOptions = [\n { label: 'Flow360', value: 'FLOW360' },\n { label: 'Tidy3d', value: 'TIDY3D' },\n];\n\nexport interface LoginPanelProps extends RouteComponentProps {\n onLogin: (data: any) => void;\n loading: boolean;\n}\nexport interface LoginPanelState {\n referralCode: string;\n ref: string;\n appType: string;\n}\nclass LoginPanel extends Component {\n constructor(props: LoginPanelProps) {\n super(props);\n const params = getUrlQueryParams();\n let appType = 'FLOW360'; // Default to FLOW360\n\n if (isFromFlow360()) {\n appType = 'FLOW360';\n } else if (isFromTidy3d()) {\n appType = 'TIDY3D';\n }\n this.state = {\n referralCode: (params.referralCode as string) || '',\n ref: params.ref as string,\n appType: appType,\n };\n }\n form: FormInstance | null = null;\n onChange = (e: RadioChangeEvent) => {\n this.setState({ appType: e.target.value });\n };\n login = () => {\n this.form?.validateFields().then(formData => {\n const { email } = formData;\n const { onLogin } = this.props;\n onLogin({\n ...formData,\n appType: this.state.appType.toUpperCase(),\n email: email.toLowerCase(),\n });\n });\n };\n render() {\n const { referralCode, ref, appType } = this.state;\n const { loading, location } = this.props;\n const currentAppConfig = getCurrentAppConfig();\n const layout = {\n labelCol: {\n span: 0,\n },\n wrapperCol: {\n span: 24,\n },\n };\n return (\n
\n
Sign In
\n
\n (this.form = me)}\n // onFinish={this.onFinish}\n >\n {isFromInternal() && (\n \n
\n Account Type: \n \n
\n
\n )}\n \n \n \n \n \n \n \n \n Log In\n \n \n
\n
\n Forgot password? \n \n Reset Password\n \n
\n
\n Don’t have an account? \n \n Sign up\n \n {/**/}\n {/* Sign up*/}\n {/**/}\n
\n
\n {currentAppConfig && (\n <>\n OR\n \n {\n window.location.href = `${\n currentAppConfig.googleLogin\n }&state=${encodeUrlJson({\n referralCode,\n ref,\n })}`;\n }}\n disabled={loading}\n // className={'google_login'}\n size={'large'}\n icon={\n \n }\n >\n Sign in with Google\n \n \n {currentAppConfig.appleLogin && (\n \n {\n window.location.href = `${\n currentAppConfig.appleLogin\n }&state=${encodeUrlJson({\n referralCode,\n ref,\n })}`;\n }}\n disabled={loading}\n size={'large'}\n icon={}\n >\n Sign in with Apple\n \n \n )}\n {currentAppConfig.microsoftLogin && (\n \n {\n this.props.history.push({\n ...location,\n pathname: '/microsoft_login',\n });\n }}\n disabled={loading}\n // className={'google_login'}\n size={'large'}\n icon={\n \n }\n >\n Sign in with Microsoft\n \n \n )}\n \n )}\n \n
\n
\n );\n }\n}\nexport default withRouter(LoginPanel);\n","import React, { PureComponent } from 'react';\nimport { isFromApp } from '../utils/util';\nimport portalConfig from '../constants/portalConfig';\n\n// auth HOC, handle auth logic globally\nexport default function auth(WrappedComponent: Function) {\n return class extends PureComponent {\n isLegal = () => {\n const isSimulationCloud = isFromApp('');\n if (!isSimulationCloud) {\n this.goHome();\n return false;\n }\n return isSimulationCloud;\n };\n goHome = () => {\n window.location.href = portalConfig.homeUrl;\n };\n render() {\n if (!this.isLegal()) {\n return null;\n }\n return ;\n }\n };\n}\n","import React, { Component } from 'react';\nimport { notification } from 'antd';\nimport { sha512 } from 'js-sha512';\nimport LogRocket from 'logrocket';\n\nimport AuthLayout from '@/components/AuthLayout';\nimport { LOGIN_SALT } from '@/constants';\nimport {\n getUrlQueryParams,\n setToken,\n setUser,\n setLoginFlag,\n addTokenToUrl,\n} from '@/utils/util';\nimport api from '@/services';\nimport { RouteComponentProps } from 'react-router-dom';\nimport LoginPanel from './components/LoginPanel';\nimport auth from '../auth';\n\nimport styles from './index.module.less';\nimport ResendModal from '../../components/ResendModal';\n// import { getDefaultAppHost } from '../../utils/util';\n\nexport interface LoginPageProps extends RouteComponentProps {}\nexport interface LoginPageState {\n loading: boolean;\n ref: string;\n resendEmail: string;\n resendModalVisible: boolean;\n}\nclass LoginPage extends Component {\n constructor(props: LoginPageProps) {\n super(props);\n const params = getUrlQueryParams();\n this.state = {\n loading: false,\n ref: decodeURIComponent((params.ref as string) || ''),\n resendEmail: '',\n resendModalVisible: false,\n };\n }\n\n componentDidMount() {\n // bypass login if accessToken exists\n // if (Cookies.get('accessToken')) {\n // this.redirect();\n // }\n }\n\n redirect = (token: string) => {\n const { ref } = this.state;\n if (ref) {\n window.location.href = addTokenToUrl(ref, token);\n } else {\n notification.warning({\n message: 'No ref found',\n description: 'Login success, but no [ref] param found in url address',\n });\n // window.location.href = getDefaultAppHost();\n }\n };\n loading = (loading = false) => {\n this.setState({\n loading: loading,\n });\n };\n onLogin = async (formData: any) => {\n const { email, password, appType } = formData;\n\n try {\n this.loading(true);\n LogRocket.identify(email, {\n name: email,\n email,\n });\n LogRocket.track('login start', { email });\n const { data } = await api.login(\n {},\n {\n auth: {\n username: email,\n password: sha512(password + LOGIN_SALT),\n },\n headers: {\n Application: appType,\n },\n }\n );\n LogRocket.track('login success', { email });\n const { authResult } = data;\n if (authResult?.challengeName === 'SOFTWARE_TOKEN_MFA') {\n const { history, location } = this.props;\n history.push({\n ...location,\n pathname: '/challenge',\n state: {\n email,\n challengeData: authResult,\n },\n });\n } else {\n const {\n auth: {\n accessToken,\n refreshToken,\n idToken,\n // expiresIn = 36000\n },\n oneTimeToken,\n user,\n } = data;\n const { email: userEmail, identityId } = user;\n const expires = 365;\n // const expires = new Date(Date.now() + expiresIn * 1000);\n // save token to cookies, default alive in 36000 sec\n setToken({ accessToken, refreshToken, idToken }, { expires });\n setUser({ email: userEmail, identityId }, { expires });\n setLoginFlag();\n // window.frames[0].postMessage(JSON.stringify(user), ref);\n this.redirect(oneTimeToken);\n }\n } catch (e: any) {\n LogRocket.track('login error', { email, message: e.message });\n // unconfirmed user\n if (e.code === 4010000002) {\n this.showResendModal(email);\n } else {\n notification.error({\n message: 'Incorrect email or password',\n description: e.message || 'Please try again or contact the admin',\n });\n }\n } finally {\n this.loading(false);\n }\n };\n showResendModal = (resendEmail: string) => {\n this.setState({\n resendEmail,\n resendModalVisible: true,\n });\n };\n hideResendModal = () => {\n this.setState({\n resendModalVisible: false,\n });\n };\n render() {\n const { loading, resendEmail, resendModalVisible } = this.state;\n return (\n
\n \n \n \n {/* (this.iframe = me)}*/}\n {/* className={styles.hidden}*/}\n {/*/>*/}\n \n Your account has not been activated yet. To activate, please\n verify your email address by clicking the button and following the\n instructions in the verification email.\n
\n }\n email={resendEmail}\n visible={resendModalVisible}\n onCancel={this.hideResendModal}\n />\n \n );\n }\n}\nexport default auth(LoginPage);\n","import React, { Component } from 'react';\nimport { Link, RouteComponentProps, withRouter } from 'react-router-dom';\nimport { Form, Input, Button, FormInstance } from 'antd';\nimport OtpInput from 'react-otp-input';\n\nimport styles from './index.module.less';\n\nconst { Item } = Form;\n\nexport interface ChallengePanelProps extends RouteComponentProps {\n onSubmit: (data: any) => void;\n loading: boolean;\n onDisable: () => void;\n}\nclass ChallengePanel extends Component {\n form: FormInstance | null = null;\n submit = () => {\n this.form?.validateFields().then(async formData => {\n const { onSubmit } = this.props;\n try {\n await onSubmit(formData);\n } finally {\n this.reset();\n }\n });\n };\n reset = () => {\n this.form?.setFieldsValue({\n mfaCode: '',\n });\n };\n\n render() {\n const { loading, location, onDisable } = this.props;\n return (\n
\n
Multi-Factor Authentication
\n
\n
(this.form = me)}>\n \n {/**/}\n {/* @ts-ignore */}\n }\n containerStyle={styles.opt_input}\n inputStyle={styles.input_item}\n // @ts-ignore\n renderInput={props => }\n />\n \n \n \n Submit\n \n \n \n
\n
\n \n Cancel\n \n
\n
\n Lost binding account? \n \n Turn off MFA\n \n
\n
\n
\n
\n );\n }\n}\nexport default withRouter(ChallengePanel);\n","import React, { Component } from 'react';\nimport { notification, Modal } from 'antd';\nimport LogRocket from 'logrocket';\nimport { Redirect, RouteComponentProps } from 'react-router-dom';\n\nimport AuthLayout from '@/components/AuthLayout';\nimport { AuthInfo, ChallengeInfo } from '../../type';\nimport ChallengePanel from './components/ChallengePanel';\nimport api from '@/services';\nimport auth from '../auth';\nimport {\n getUrlQueryParams,\n setToken,\n setUser,\n setLoginFlag,\n addTokenToUrl,\n} from '@/utils/util';\nimport styles from './index.module.less';\n\nexport interface ChallengePageProps extends RouteComponentProps {}\nexport interface ChallengePageState {\n email: string;\n challengeData: ChallengeInfo;\n ref: string;\n counter: number;\n disableMfaSent: boolean;\n loading: boolean;\n}\nexport interface ChallengePageRouteState {\n challengeData: ChallengeInfo;\n email: string;\n}\nclass ChallengePage extends Component {\n constructor(props: ChallengePageProps) {\n super(props);\n const {\n location: { state },\n } = props;\n const { challengeData, email } = (state || {}) as ChallengePageRouteState;\n const params = getUrlQueryParams();\n this.state = {\n email,\n challengeData: { ...(challengeData || {}) },\n ref: decodeURIComponent((params.ref as string) || ''),\n counter: 180,\n disableMfaSent: false,\n loading: false,\n };\n }\n timeout: number | undefined;\n disableModal: any;\n componentDidMount() {\n // clear state in history. then if refresh page, redirect to login\n window.history.replaceState({}, document.title);\n // manually invalidate page in 180 sec\n this.countDown(180);\n }\n\n loading = (loading = false) => {\n this.setState({\n loading,\n });\n };\n isValidState = () => {\n const { email, challengeData, counter } = this.state;\n return (\n counter > 0 &&\n email &&\n challengeData.session &&\n challengeData.challengeName === 'SOFTWARE_TOKEN_MFA'\n );\n };\n countDown = (counter: number) => {\n this.setState({ counter }, () => {\n if (counter > 0) {\n this.timeout = window.setTimeout(() => {\n this.countDown(--counter);\n }, 1000);\n }\n });\n };\n onSubmit = async (formData: any) => {\n const { mfaCode } = formData;\n const {\n email,\n challengeData: { challengeName, session, challengeParameters },\n } = this.state;\n const userName = challengeParameters?.USER_ID_FOR_SRP;\n try {\n this.loading(true);\n LogRocket.identify(email, {\n name: email,\n email,\n });\n LogRocket.track('mfa auth start', { email });\n const { data }: { data: AuthInfo } = await api.mfaAuth({\n challengeName,\n session,\n challengeResponses: {\n USERNAME: userName,\n SOFTWARE_TOKEN_MFA_CODE: mfaCode,\n },\n });\n LogRocket.track('mfa auth success', { email });\n const {\n auth: {\n accessToken,\n refreshToken,\n idToken,\n // expiresIn = 36000\n },\n oneTimeToken,\n user,\n } = data;\n const { email: userEmail, identityId } = user;\n const expires = 365;\n setToken({ accessToken, refreshToken, idToken }, { expires });\n setUser({ email: userEmail, identityId }, { expires });\n setLoginFlag();\n this.redirect(oneTimeToken);\n } catch (e: any) {\n LogRocket.track('mfa auth error', { email, message: e.message });\n // set count down to 0 to invalidate page\n if (e.message?.indexOf('session') > -1) {\n this.countDown(0);\n } else {\n notification.error({\n message: 'MFA error',\n description: e.message || 'Please try again or contact the admin',\n });\n }\n } finally {\n this.loading(false);\n }\n };\n redirect = (token: string) => {\n const { ref } = this.state;\n if (ref) {\n window.location.href = addTokenToUrl(ref, token);\n } else {\n notification.warning({\n message: 'No ref found',\n description: 'Login success, but no [ref] param found in url address',\n });\n }\n };\n invalidatePage() {\n const { counter } = this.state;\n if (counter <= 0) {\n notification.error({\n message: 'MFA timeout, please login again',\n key: 'mfaError',\n });\n }\n return (\n \n );\n }\n // disableMfa = async () => {\n // try {\n // const { email } = this.state;\n // await api.mfaReset({ email });\n // this.setState({\n // disableMfaSent: true,\n // });\n // clearTimeout(this.timeout);\n // this.disableModal.destroy();\n // } catch (e) {\n // notification.error({\n // message: 'Turn off MFA error',\n // description: e.message || 'Please try again or contact the admin',\n // });\n // }\n // };\n showDisableModal = () => {\n this.disableModal = Modal.confirm({\n title: 'Turn off MFA',\n // footer: null,\n centered: true,\n width: 570,\n maskClosable: false,\n closable: false,\n content: (\n
\n If you have lost access to your Authenticator app and are unable to\n sign in, click the button below to send a verification link to your\n email. The link will allow you to temporarily disable MFA. After\n signing in, you can turn on MFA again to protect your account.\n
\n ),\n okText: 'Send verification email',\n onOk: async () => {\n return new Promise((resolve, reject) => {\n const { email } = this.state;\n\n api\n .mfaReset({ email })\n .then(() => {\n this.setState({\n disableMfaSent: true,\n });\n clearTimeout(this.timeout);\n this.disableModal.destroy();\n resolve(true);\n })\n .catch((e: any) => {\n notification.error({\n message: 'Turn off MFA error',\n description:\n e.message || 'Please try again or contact the admin',\n });\n reject(e);\n });\n });\n },\n });\n };\n render() {\n const { loading, disableMfaSent } = this.state;\n // if state not valid, redirect to login page\n if (!this.isValidState()) {\n return this.invalidatePage();\n }\n return (\n
\n \n {disableMfaSent ? (\n
\n Email sent, please check your inbox.\n
\n ) : (\n \n )}\n
\n
\n );\n }\n}\nexport default auth(ChallengePage);\n","import React, { Component } from 'react';\nimport { Link, RouteComponentProps, withRouter } from 'react-router-dom';\nimport { Form, Input, Button, FormInstance } from 'antd';\n\nimport styles from './index.module.less';\n\nconst { Item } = Form;\n\nexport interface MicrosoftLoginPanelProps extends RouteComponentProps {\n onLogin: (data: any) => void;\n loading: boolean;\n}\nclass MicrosoftLoginPanel extends Component {\n form: FormInstance | null = null;\n login = () => {\n this.form?.validateFields().then((formData: any) => {\n const { email } = formData;\n const { onLogin } = this.props;\n onLogin({\n ...formData,\n email: email.toLowerCase(),\n });\n });\n };\n render() {\n const { loading, location } = this.props;\n // const layout = {\n // labelCol: {\n // span: 0,\n // },\n // wrapperCol: {\n // span: 24,\n // },\n // };\n return (\n
\n
Sign in with Microsoft
\n
\n (this.form = me)}\n // onFinish={this.onFinish}\n >\n \n \n \n \n \n Log In\n \n \n \n
\n
\n Already have an account? \n \n Sign in\n \n
\n
\n
\n
\n );\n }\n}\nexport default withRouter(MicrosoftLoginPanel);\n","import React, { Component } from 'react';\n\nimport AuthLayout from '@/components/AuthLayout';\nimport { RouteComponentProps } from 'react-router-dom';\nimport { encodeUrlJson, getUrlQueryParams } from '../../utils/util';\nimport MicrosoftLoginPanel from './components/MicrosoftLoginPanel';\nimport api from '@/services';\nimport auth from '../auth';\nimport { getCurrentAppConfig } from '../../constants/appConfig';\n\nimport styles from './index.module.less';\n\nexport interface MicrosoftLoginPageProps extends RouteComponentProps {}\nexport interface MicrosoftLoginPageState {\n loading: boolean;\n referralCode: string;\n invitationCode: string;\n companyInvitationCode: string;\n}\nclass MicrosoftLoginPage extends Component<\n MicrosoftLoginPageProps,\n MicrosoftLoginPageState\n> {\n constructor(props: MicrosoftLoginPageProps) {\n super(props);\n const params = getUrlQueryParams();\n this.state = {\n loading: false,\n referralCode: (params.referralCode as string) || '',\n invitationCode: (params.invitation_code as string) || '',\n companyInvitationCode: (params.companyInvitationCode as string) || '',\n };\n }\n\n componentDidMount() {}\n\n loading = (loading = false) => {\n this.setState({\n loading: loading,\n });\n };\n\n onLogin = async (formData: { email: string }) => {\n try {\n const { referralCode, invitationCode, companyInvitationCode } =\n this.state;\n this.loading(true);\n const { email } = formData;\n const { data } = await api.getMicrosoftLoginMetadata({\n email,\n });\n const appConfig = getCurrentAppConfig();\n const loginUrl = appConfig?.microsoftLogin;\n if (loginUrl) {\n const targetUrl = new URL(loginUrl);\n targetUrl.searchParams.set('identity_provider', data.provider);\n targetUrl.searchParams.set('client_id', data.clientId);\n targetUrl.searchParams.set(\n 'state',\n encodeUrlJson({\n referralCode,\n companyInvitationCode,\n invitationCode,\n })\n );\n window.location.replace(targetUrl.href);\n }\n } finally {\n this.loading(false);\n }\n };\n render() {\n const { loading } = this.state;\n return (\n
\n \n \n \n
\n );\n }\n}\nexport default auth(MicrosoftLoginPage);\n","import React, { Component } from 'react';\nimport { Link, RouteComponentProps, withRouter } from 'react-router-dom';\nimport { Form, Input, Button, FormInstance } from 'antd';\n\nimport styles from './index.module.less';\n\nconst { Item } = Form;\n\nexport interface ResetPasswordPanelProps extends RouteComponentProps {\n onReset: (data: any) => void;\n loading: boolean;\n}\nclass ResetPasswordPanel extends Component {\n form: FormInstance | null = null;\n reset = () => {\n this.form?.validateFields().then((formData: any) => {\n const { email } = formData;\n const { onReset } = this.props;\n onReset({\n ...formData,\n email: email.toLowerCase(),\n });\n });\n };\n\n render() {\n const { loading, location } = this.props;\n // const layout = {\n // labelCol: {\n // span: 0,\n // },\n // wrapperCol: {\n // span: 24,\n // },\n // };\n return (\n
\n
Reset Password
\n
\n (this.form = me)}\n // onFinish={this.onFinish}\n >\n \n \n \n \n \n Get Verification Code\n \n \n \n
\n
\n Already have an account? \n \n Sign in\n \n
\n
\n
\n
\n );\n }\n}\nexport default withRouter(ResetPasswordPanel);\n","import React, { Component } from 'react';\nimport { notification } from 'antd';\nimport LogRocket from 'logrocket';\n\nimport AuthLayout from '@/components/AuthLayout';\nimport { RouteComponentProps } from 'react-router-dom';\nimport ResetPasswordPanel from './components/ResetPasswordPanel';\nimport ResendModal from '@/components/ResendModal';\nimport api from '@/services';\nimport auth from '../auth';\n\nimport styles from './index.module.less';\n\nexport interface ResetPasswordPageProps extends RouteComponentProps {}\nexport interface ResetPasswordPageState {\n loading: boolean;\n successEmail: string;\n resendEmail: string;\n resendModalVisible: boolean;\n}\nclass ResetPasswordPage extends Component<\n ResetPasswordPageProps,\n ResetPasswordPageState\n> {\n constructor(props: ResetPasswordPageProps) {\n super(props);\n this.state = {\n loading: false,\n successEmail: '',\n resendEmail: '',\n resendModalVisible: false,\n };\n }\n\n componentDidMount() {}\n\n loading = (loading = false) => {\n this.setState({\n loading: loading,\n });\n };\n\n onReset = async (data: any) => {\n const { email } = data;\n try {\n this.loading(true);\n LogRocket.identify(email, {\n name: email,\n email,\n });\n LogRocket.track('reset password start', { email });\n await api.forgotPassword({\n email,\n });\n LogRocket.track('reset password success', { email });\n notification.success({\n message: 'Reset password request is sent',\n description: `Reset password email will be sent to ${email}, please check your inbox or contact the support`,\n });\n this.setState({\n successEmail: email,\n });\n } catch (e: any) {\n LogRocket.track('reset password error', { email, message: e.message });\n if (e.code === 4030000001) {\n this.showResendModal(email);\n } else {\n notification.success({\n message: 'Reset password request is sent',\n description: `Reset password email will be sent to ${email}, please check your inbox or contact the support`,\n });\n this.setState({\n successEmail: email,\n });\n }\n } finally {\n this.loading(false);\n }\n\n // resetPassword(email, {\n // onSuccess: data => {\n // _this.loading(false);\n // notification.success({\n // message: 'Reset password request is sent',\n // description: `Reset password email will be sent to ${email}, please check your inbox or contact the support`,\n // });\n // LogRocket.track('reset password success', { email });\n // _this.setState({\n // successEmail: email,\n // });\n // },\n // onError: e => {\n // LogRocket.track('reset password error', { email, message: e.message });\n // _this.loading(false);\n // notification.success({\n // message: 'Reset password request is sent',\n // description: `Reset password email will be sent to ${email}, please check your inbox or contact the support`,\n // });\n // _this.setState({\n // successEmail: email,\n // });\n // },\n // });\n };\n showResendModal = (resendEmail: string) => {\n this.setState({\n resendEmail,\n resendModalVisible: true,\n });\n };\n hideResendModal = () => {\n this.setState({\n resendModalVisible: false,\n });\n };\n render() {\n const { loading, successEmail, resendEmail, resendModalVisible } =\n this.state;\n return (\n
\n \n {successEmail ? (\n //
\n // Reset password email has been sent to{' '}\n // {successEmail}, please check your inbox.\n //
\n
\n Email sent, please check your inbox.\n
\n ) : (\n \n )}\n
\n \n Your account has not been activated yet. To activate, please\n verify your email address by clicking the button and following the\n instructions in the verification email.\n
\n }\n email={resendEmail}\n visible={resendModalVisible}\n onCancel={this.hideResendModal}\n />\n \n );\n }\n}\nexport default auth(ResetPasswordPage);\n","import React, { Component } from 'react';\nimport { Link, RouteComponentProps, withRouter } from 'react-router-dom';\nimport { Form, Input, Button, Tooltip, Checkbox, FormInstance } from 'antd';\nimport {\n testPasswordStrength,\n getUrlQueryParams,\n // isFromTidy3d,\n} from '@/utils/util';\nimport { CSSTransition } from 'react-transition-group';\n\nimport styles from './index.module.less';\nimport PasswordStrength from '@/components/PasswordStrength';\n// import { getCurrentAppConfig } from '@/constants/appConfig';\n\ninterface SignUpPanelProps extends RouteComponentProps {\n onSubmit: (data: any) => void;\n loading: boolean;\n}\ninterface SignUpPanelState {\n agreementChecked: boolean;\n invitationCode: string;\n email: string;\n agreementAlert: boolean;\n}\nconst { Item } = Form;\nconst { Password } = Input;\n\nclass SignUpPanel extends Component {\n constructor(props: SignUpPanelProps) {\n super(props);\n const params = getUrlQueryParams();\n this.state = {\n agreementChecked: false,\n invitationCode: (params.invitation_code as string) || '',\n email: (params.email as string) || '',\n agreementAlert: false,\n };\n }\n form: FormInstance | null = null;\n submit = () => {\n this.form?.validateFields().then(formData => {\n const { agreementChecked } = this.state;\n if (!agreementChecked) {\n this.agreementAlert(true);\n return;\n }\n const { email } = formData;\n const { onSubmit } = this.props;\n onSubmit({\n ...formData,\n email: email.toLowerCase(),\n });\n });\n };\n agreementAlert = (agreementAlert = false) => {\n this.setState({\n agreementAlert,\n });\n };\n render() {\n const { loading, location } = this.props;\n // const currentAppConfig = getCurrentAppConfig();\n const layout = {\n labelCol: {\n span: 0,\n },\n wrapperCol: {\n span: 24,\n },\n };\n const { agreementChecked, invitationCode, email, agreementAlert } =\n this.state;\n return (\n
\n
Sign Up
\n
\n (this.form = me)}\n // onFinish={this.onFinish}\n initialValues={{ invitationCode, email }}\n >\n \n \n \n {/*{!isFromTidy3d() && (*/}\n \n \n \n {/*)}*/}\n \n ({\n validator(_, value) {\n const email = getFieldValue('email');\n if (\n email?.length &&\n value?.length &&\n value.toLowerCase().includes(email.toLowerCase())\n ) {\n return Promise.reject(\n new Error(\n 'Password should not contain current email address'\n )\n );\n }\n if (testPasswordStrength(value) < 4) {\n return Promise.reject(\n new Error(\n 'Please choose stronger password to protect your account'\n )\n );\n }\n return Promise.resolve();\n },\n }),\n ]}\n >\n \n \n \n \n {({ getFieldValue }) => {\n const passwordValue = getFieldValue('password') || '';\n const passwordStrength = testPasswordStrength(passwordValue);\n return (\n passwordValue.length > 0 && (\n
\n \n \n
\n )\n );\n }}\n
\n ({\n validator(_, value) {\n if (!value || getFieldValue('password') === value) {\n return Promise.resolve();\n }\n return Promise.reject(\n new Error('Passwords do not match, please check')\n );\n },\n }),\n ]}\n >\n \n \n {\n this.agreementAlert(false);\n }}\n >\n \n {\n this.setState({\n agreementChecked: e.target.checked,\n });\n }}\n >\n By checking this box and signing up, you agree to our{' '}\n \n terms of services\n {' '}\n and{' '}\n \n privacy policy\n \n .\n \n \n \n \n \n Sign Up\n \n \n
\n
\n Already have an account? \n \n Sign in\n \n
\n {/*
*/}\n {/* To use Flexcompute's Electromagnetic Product, please sign*/}\n {/* up */}\n {/* */}\n {/* here*/}\n {/* */}\n {/*
*/}\n
\n {/*{currentAppConfig && (*/}\n {/* <>*/}\n {/* OR*/}\n {/* */}\n {/* {*/}\n {/* if (!agreementChecked) {*/}\n {/* this.agreementAlert(true);*/}\n {/* return;*/}\n {/* }*/}\n {/* window.location.href = currentAppConfig.googleLogin;*/}\n {/* }}*/}\n {/* // disabled={!agreementChecked}*/}\n {/* className={'google_login'}*/}\n {/* loading={loading}*/}\n {/* >*/}\n {/* Continue with Google*/}\n {/* */}\n {/* */}\n {/* */}\n {/*)}*/}\n \n
\n
\n );\n }\n}\n\nexport default withRouter(SignUpPanel);\n","import React, { Component, MouseEvent } from 'react';\nimport { Link, RouteComponentProps, withRouter } from 'react-router-dom';\nimport {\n Form,\n Input,\n Button,\n Tooltip,\n Row,\n Col,\n Divider,\n Checkbox,\n FormInstance,\n} from 'antd';\nimport { AppleFilled } from '@ant-design/icons';\nimport {\n testPasswordStrength,\n getUrlQueryParams,\n // isFromTidy3d,\n} from '@/utils/util';\nimport microsoftIcon from '../../../../assets/microsoft_icon.svg';\nimport { encodeUrlJson } from '../../../../utils/util';\nimport { CSSTransition } from 'react-transition-group';\n// import { CSSTransition } from 'react-transition-group';\n\nimport styles from './index.module.less';\nimport PasswordStrength from '@/components/PasswordStrength';\nimport CountrySelect from '../../../../components/CountrySelect';\nimport { getCurrentAppConfig } from '@/constants/appConfig';\nimport googleIcon from '../../../../assets/google_icon.svg';\nexport interface Tidy3dSignUpPanelProps extends RouteComponentProps {\n onSubmit: (data: any) => void;\n loading: boolean;\n}\nexport interface Tidy3dSignUpPanelState {\n subscribed: boolean;\n invitationCode: string;\n email: string;\n referralCode: string;\n ref: string;\n companyInvitationCode: string;\n agreementChecked: boolean;\n agreementAlert: boolean;\n}\n\nconst { Item } = Form;\nconst { Password } = Input;\n\nclass Tidy3dSignUpPanel extends Component<\n Tidy3dSignUpPanelProps,\n Tidy3dSignUpPanelState\n> {\n constructor(props: Tidy3dSignUpPanelProps) {\n super(props);\n const params = getUrlQueryParams();\n this.state = {\n subscribed: true,\n invitationCode: (params.invitation_code as string) || '',\n email: (params.email as string) || '',\n referralCode: (params.referralCode as string) || '',\n companyInvitationCode: (params.companyInvitationCode as string) || '',\n ref: (params.ref as string) || '',\n agreementChecked: false,\n agreementAlert: false,\n };\n }\n form: FormInstance | null = null;\n submit = (e: MouseEvent) => {\n this.form?.validateFields().then(formData => {\n const { agreementChecked } = this.state;\n if (!agreementChecked) {\n this.agreementAlert(true);\n return;\n }\n const { email, countryRegion, ...rest } = formData;\n const [country] = countryRegion;\n const { referralCode, invitationCode, companyInvitationCode } =\n this.state;\n const { onSubmit } = this.props;\n onSubmit({\n ...rest,\n email: email.toLowerCase(),\n country,\n referralCode,\n invitationCode,\n companyInvitationCode,\n });\n });\n };\n agreementAlert = (agreementAlert = false) => {\n this.setState({\n agreementAlert,\n });\n };\n\n render() {\n const { loading, location } = this.props;\n const currentAppConfig = getCurrentAppConfig();\n const layout = {\n labelCol: {\n span: 0,\n },\n wrapperCol: {\n span: 24,\n },\n };\n const {\n invitationCode,\n email,\n subscribed,\n referralCode,\n companyInvitationCode,\n ref,\n agreementAlert,\n agreementChecked,\n } = this.state;\n const isCompanyInvite = Boolean(companyInvitationCode);\n return (\n
\n
\n {isCompanyInvite ? 'Join Your Group' : 'Sign Up'}\n
\n
\n (this.form = me)}\n // onFinish={this.onFinish}\n initialValues={{ invitationCode, email, subscribed }}\n // id={'tidy3d-sign-up-form'}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {/**/}\n {/* */}\n {/* */}\n {/* */}\n {/**/}\n \n {/*{!isFromTidy3d() && (*/}\n {/**/}\n {/* */}\n {/**/}\n {/*)}*/}\n ({\n // validator(_, value) {\n // const [country, region] = value;\n // if (country.code === 'US' && !region) {\n // return Promise.reject(\n // new Error('Please select your state/region')\n // );\n // }\n // return Promise.resolve();\n // },\n // }),\n ]}\n >\n \n \n \n \n ({\n validator(_, value) {\n const email = getFieldValue('email');\n if (\n email?.length &&\n value?.length &&\n value.toLowerCase().includes(email.toLowerCase())\n ) {\n return Promise.reject(\n new Error(\n 'Password should not contain current email address'\n )\n );\n }\n if (testPasswordStrength(value) < 4) {\n return Promise.reject(\n new Error(\n 'Please choose stronger password to protect your account'\n )\n );\n }\n return Promise.resolve();\n },\n }),\n ]}\n >\n \n \n \n \n {({ getFieldValue }) => {\n const passwordValue = getFieldValue('password') || '';\n const passwordStrength = testPasswordStrength(passwordValue);\n return (\n passwordValue.length > 0 && (\n
\n \n \n
\n )\n );\n }}\n
\n {/* ({*/}\n {/* validator(_, value) {*/}\n {/* if (!value || getFieldValue('password') === value) {*/}\n {/* return Promise.resolve();*/}\n {/* }*/}\n {/* return Promise.reject(*/}\n {/* new Error('Passwords do not match, please check')*/}\n {/* );*/}\n {/* },*/}\n {/* }),*/}\n {/* ]}*/}\n {/*>*/}\n {/* */}\n {/**/}\n \n Keep me updated about Tidy3D news\n \n {\n this.agreementAlert(false);\n }}\n >\n \n {\n this.setState({\n agreementChecked: e.target.checked,\n });\n }}\n >\n By checking this box and signing up, you agree to our{' '}\n \n terms of services\n {' '}\n and{' '}\n \n privacy policy\n \n .\n \n \n \n \n this.submit(e)}\n loading={loading}\n size={'large'}\n className={'sign_up_btn'}\n // htmlType={'submit'}\n // disabled={!agreementChecked}\n >\n {isCompanyInvite ? 'Sign Up & Accept' : 'Sign Up'}\n \n \n {!isCompanyInvite && (\n
\n
\n Already have an account? \n \n Sign in\n \n
\n {/*
*/}\n {/* To use Flexcompute's Electromagnetic Product, please sign*/}\n {/* up */}\n {/* */}\n {/* here*/}\n {/* */}\n {/*
*/}\n
\n )}\n {currentAppConfig && (\n <>\n OR\n \n {\n if (!agreementChecked) {\n this.agreementAlert(true);\n return;\n }\n window.location.href = `${\n currentAppConfig.googleLogin\n }&state=${encodeUrlJson({\n referralCode,\n companyInvitationCode,\n invitationCode,\n ref,\n })}`;\n }}\n // disabled={!agreementChecked}\n // className={'google_login'}\n disabled={loading}\n size={'large'}\n icon={\n \n }\n >\n Sign up with Google\n \n \n {currentAppConfig.appleLogin && (\n \n {\n if (!agreementChecked) {\n this.agreementAlert(true);\n return;\n }\n window.location.href = `${\n currentAppConfig.appleLogin\n }&state=${encodeUrlJson({\n referralCode,\n companyInvitationCode,\n invitationCode,\n ref,\n })}`;\n }}\n disabled={loading}\n size={'large'}\n icon={}\n >\n Sign up with Apple\n \n \n )}\n {currentAppConfig.microsoftLogin && (\n \n {\n if (!agreementChecked) {\n this.agreementAlert(true);\n return;\n }\n this.props.history.push({\n ...location,\n pathname: '/microsoft_login',\n });\n }}\n disabled={loading}\n // className={'google_login'}\n size={'large'}\n icon={\n \n }\n >\n Sign up with Microsoft\n \n \n )}\n \n )}\n \n
\n
\n );\n }\n}\n\nexport default withRouter(Tidy3dSignUpPanel);\n","import React, { Component } from 'react';\nimport { notification, Button } from 'antd';\nimport api from '@/services';\n\nexport interface ResendButtonProps {\n email: string;\n}\nexport interface ResendButtonState {\n counter: number;\n loading: boolean;\n}\nexport default class ResendButton extends Component<\n ResendButtonProps,\n ResendButtonState\n> {\n state = {\n counter: 0,\n loading: false,\n };\n loading = (loading = false) => {\n this.setState({\n loading,\n });\n };\n resend = async () => {\n try {\n this.loading(true);\n const { email } = this.props;\n await api.resendEmail({ email });\n this.countDown(60);\n notification.success({\n message: 'Email sent, please check your inbox',\n });\n } catch (e: any) {\n notification.error({\n message: 'Resend email error',\n description: e.message || 'Please try again or contact the admin',\n });\n } finally {\n this.loading(false);\n }\n };\n countDown = (counter: number) => {\n this.setState({ counter }, () => {\n if (counter > 0) {\n setTimeout(() => {\n this.countDown(--counter);\n }, 1000);\n }\n });\n };\n render() {\n const { email } = this.props;\n const { counter, loading } = this.state;\n\n return (\n 0}\n style={{ whiteSpace: 'normal' }}\n >\n {counter > 0 ? (\n Verification email sent ({counter})\n ) : (\n Resend verification email to {email}\n )}\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport { notification, Modal, Button } from 'antd';\nimport LogRocket from 'logrocket';\nimport AuthLayout from '@/components/AuthLayout';\nimport { RouteComponentProps } from 'react-router-dom';\nimport SignUpPanel from './components/SignUpPanel';\nimport Tidy3dSignUpPanel from './components/Tidy3dSignUpPanel';\nimport api from '@/services';\nimport auth from '../auth';\nimport styles from './index.module.less';\nimport { toUsername, hashPassword } from '@/utils/cognitoHelper';\nimport {\n getAppNameFromUrl,\n // isDev,\n isFromTidy3d,\n // getUrlQueryParams,\n initHubspotForm,\n} from '@/utils/util';\nimport MailEmpty from '../../components/MailEmpty';\nimport ResendButton from '../../components/ResendButton';\n// const CONTACT_LINK = 'https://www.flexcompute.com/contact/';\nexport interface SignUpPageProps extends RouteComponentProps {}\nexport interface SignUpPageState {\n loading: boolean;\n successEmail: string;\n}\nclass SignUpPage extends Component {\n constructor(props: SignUpPageProps) {\n super(props);\n this.state = {\n loading: false,\n successEmail: '',\n };\n }\n\n loading = (loading = false) => {\n this.setState({\n loading: loading,\n });\n };\n onSubmit = async (formData: any) => {\n // console.log('onSubmit', grecaptcha.getResponse());\n const { location } = this.props;\n const { email, invitationCode, password, ...rest } = formData;\n const isTidy3d = isFromTidy3d();\n let hsForm = null;\n try {\n this.loading(true);\n LogRocket.identify(email, {\n name: email,\n email,\n });\n LogRocket.track('sign up start', { email });\n const data = {\n ...rest,\n username: toUsername(email),\n password: hashPassword(password),\n rawPassword: password,\n invitationCode: invitationCode?.trim(),\n params: {\n email,\n // save the whole href to origin, then the querystring can be read in lambda\n 'custom:origin': window.location.href,\n 'custom:app': getAppNameFromUrl(),\n },\n };\n if (isTidy3d) {\n hsForm = initHubspotForm('tidy3d-sign-up-form', {\n email,\n firstName: formData.firstName,\n lastName: formData.lastName,\n company: formData.company,\n country: formData.country?.name,\n });\n }\n await api.sendRegisterEmail(data);\n LogRocket.track('sign up success', { email });\n notification.success({\n message: 'Email sent',\n // message: 'Send signup verification email success',\n // description: `Signup verification email has been sent to ${email}, please check your inbox.`,\n });\n hsForm?.submit();\n this.setState({\n successEmail: email,\n });\n } catch (e: any) {\n LogRocket.track('sign up error', { email, message: e.message });\n if (e.code === 4000000004) {\n // existing user\n Modal.warning({\n title: 'Warning',\n width: 520,\n content: (\n
\n
\n This email has already been used. If you are the owner of the\n account, please sign in below.\n
\n
\n
\n {\n window.location.href = `/login${location.search}`;\n }}\n >\n Sign in\n \n
\n
\n ),\n });\n }\n // else if (e.code === 1000) {\n // // kyc error\n // Modal.warning({\n // title: 'Warning',\n // width: 520,\n // content: (\n // <>\n //
Your account can not be created at this moment,
\n //
\n // please contact us for further\n // assistance.\n //
\n // \n // ),\n // });\n // }\n else {\n notification.error({\n message: 'Sign up error',\n // message: 'Send signup verification email error',\n description: e.message || 'Please try again or contact the admin',\n });\n }\n } finally {\n this.loading(false);\n }\n };\n\n render() {\n const isTidy3d = isFromTidy3d();\n const { loading, successEmail } = this.state;\n return (\n
\n \n {successEmail ? (\n \n
\n We sent a verification email to your account. Please follow\n the instructions in the email to complete the signup\n process.\n
\n
\n \n
\n
\n }\n />\n ) : (\n <>\n {isTidy3d ? (\n \n ) : (\n \n )}\n \n )}\n {/**/}\n \n \n );\n }\n}\nexport default auth(SignUpPage);\n","import { createContext } from 'react';\n\nconst IpStatusContext = createContext('');\n\nexport default IpStatusContext;\n","import LogRocket from 'logrocket';\nimport React, { PureComponent } from 'react';\nimport { Spin, Modal } from 'antd';\nimport { LoadingOutlined } from '@ant-design/icons';\nimport { isAndroid } from 'react-device-detect';\nimport { Route, Switch, Redirect, RouteComponentProps } from 'react-router-dom';\nimport loadable from '@loadable/component';\n// import portalConfig from '../../constants/portalConfig';\nimport logo2 from '../../assets/logo2.png';\nimport './index.less';\nimport AndurilLoginPage from '../Anduril/Login';\nimport LoginPage from '../Login';\nimport ChallengePage from '../Challenge';\nimport MicrosoftLoginPage from '../MicrosoftLogin';\nimport ResetPasswordPage from '../ResetPassword';\nimport SignUpPage from '../SignUp';\nimport IpStatusContext from '../../IpStatusContext';\n\nimport api from '@/services';\n\nimport {\n getUser,\n initDocTitleAndDesc,\n isFromAnduril,\n isFromInternal,\n} from '../../utils/util';\n\ninterface HomePageProps extends RouteComponentProps {}\nexport enum EIpStatus {\n HighRisk = 'HighRisk',\n Normal = 'Normal',\n}\ninterface HomePageState {\n isLogRocketInited: boolean;\n ipStatus: EIpStatus | null;\n}\nconst loadableConfig = {\n fallback: (\n
\n } />\n
\n ),\n};\n// const LoginPage = loadable(() => import('../Login'), loadableConfig);\n// const ResetPasswordPage = loadable(\n// () => import('../ResetPassword'),\n// loadableConfig\n// );\nconst ChangePasswordPage = loadable(\n () => import('../ChangePassword'),\n loadableConfig\n);\n// const SignUpPage = loadable(() => import('../SignUp'), loadableConfig);\n// const SignUpWaitingPage = loadable(() => import('../SignUpWaiting'));\nconst VerifyEmailPage = loadable(\n () => import('../VerifyEmail'),\n loadableConfig\n);\nconst VerifyMfaPage = loadable(() => import('../VerifyMfa'), loadableConfig);\nconst CallbackPage = loadable(() => import('../Callback'), loadableConfig);\n\nexport default class HomePage extends PureComponent<\n HomePageProps,\n HomePageState\n> {\n // UNSAFE_componentWillMount() {\n // this.unlisten = this.props.history.listen(() => {\n // Modal.destroyAll();\n // });\n // }\n state = {\n isLogRocketInited: false,\n ipStatus: null,\n };\n componentDidMount() {\n initDocTitleAndDesc();\n this.initLogRocket();\n }\n UNSAFE_componentWillReceiveProps(nextProps: HomePageProps) {\n if (nextProps.location.pathname !== this.props.location.pathname) {\n initDocTitleAndDesc();\n // this.initLogRocket();\n }\n }\n componentWillUnmount() {\n this.unlisten();\n }\n unlisten = this.props.history.listen(() => {\n Modal.destroyAll();\n });\n async initLogRocket() {\n const { isLogRocketInited } = this.state;\n let ipStatus: EIpStatus | null = this.state.ipStatus;\n if (isLogRocketInited) {\n return;\n }\n if (!ipStatus) {\n try {\n const { data } = await api.checkIp();\n ipStatus = data;\n } catch (e) {\n console.error(e);\n ipStatus = EIpStatus.Normal;\n }\n }\n this.setState(\n {\n ipStatus,\n },\n () => {\n const user = getUser();\n if (\n process.env.REACT_APP_LOGROCKET_ENABLED !== 'true' ||\n // check if android device\n isAndroid ||\n // check if ip illegal\n ipStatus !== EIpStatus.Normal ||\n // check if signup page\n // window.location.pathname.startsWith('/signup') ||\n // check if internal user\n user?.email?.endsWith('@flexcompute.com') ||\n user?.email?.endsWith('@magicloud.io') ||\n // check if from internal app\n isFromInternal()\n ) {\n // console.log('log session off');\n } else {\n LogRocket.init('eplwbm/simcloud-portal');\n LogRocket.getSessionURL(sessionURL => {\n LogRocket.log(`LogRocket session URL: ${sessionURL}`);\n });\n this.setState({\n isLogRocketInited: true,\n });\n // console.log('log session on');\n }\n }\n );\n }\n render() {\n const isAnduril = isFromAnduril();\n const { ipStatus } = this.state;\n // const isAnduril = true;\n return (\n \n
\n {/**/}\n \n {/**/}\n\n {isAnduril ? (\n \n \n \n \n \n ) : (\n \n \n \n \n \n \n \n \n \n \n \n \n )}\n
\n
\n );\n }\n}\n","import { Component } from 'react';\nimport { BrowserRouter, Route, Switch } from 'react-router-dom';\n// import loadable from '@loadable/component';\nimport HomePage from './routes/Home';\nimport './App.less';\nimport 'animate.css';\nimport './styles/animation.less';\n\nclass App extends Component {\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport 'normalize.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\nimport { initDocTitleAndDesc } from './utils/util';\ninitDocTitleAndDesc();\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n// console.log('log env', process.env.REACT_APP_LOGROCKET_ENABLED);\n\n// console.log('env', process.env.REACT_APP_BUILD_ENV);\n","export default __webpack_public_path__ + \"static/media/logo.615e9c0b.svg\";","export default __webpack_public_path__ + \"static/media/tidy3d_logo.038727a2.svg\";","import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport './index.less';\nimport { isFromFlow360, isFromTidy3d } from '../../utils/util';\nimport logo from '../../assets/logo.svg';\nimport flow360Logo from '../../assets/flow360_logo.svg';\nimport tidy3dLogo from '../../assets/tidy3d_logo.svg';\n\nexport interface AuthLayoutProps {\n isFlow360?: boolean;\n isTidy3d?: boolean;\n showLogo?: boolean;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n}\nexport default class AuthLayout extends Component {\n render() {\n const {\n isFlow360: isFlow360Props,\n isTidy3d: isTidy3dProps,\n showLogo = false,\n style,\n } = this.props;\n const isFlow360 = isFlow360Props || isFromFlow360();\n const isTidy3d = isTidy3dProps || isFromTidy3d();\n const isDefault = !isFlow360 && !isTidy3d;\n const { children } = this.props;\n return (\n <>\n \n
\n {showLogo && (\n
\n {isFlow360 && (\n {'Flow360\n )}\n {isTidy3d && (\n {'Tidy3d\n )}\n {isDefault && {'Flexcompute}\n
\n )}\n
\n {children}\n
\n
\n \n \n );\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"auth_content_inner_panel\":\"index_auth_content_inner_panel__1QvgT\",\"title\":\"index_title__hnzN-\",\"form\":\"index_form__2zDbr\",\"text\":\"index_text__14FNT\",\"link\":\"index_link__3jsE1\",\"challenge_panel\":\"index_challenge_panel__XSLnn\",\"opt_input\":\"index_opt_input__l1Fnq\",\"input_item\":\"index_input_item__3vMIx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"auth_content_inner_panel\":\"index_auth_content_inner_panel__2Ie4D\",\"title\":\"index_title__Rt0dN\",\"form\":\"index_form__1D7Pz\",\"text\":\"index_text__32657\",\"link\":\"index_link__222-i\",\"login_panel\":\"index_login_panel__PWZTz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"auth_content_inner_panel\":\"index_auth_content_inner_panel__3eJkp\",\"title\":\"index_title__24hX2\",\"form\":\"index_form__3EZ2s\",\"text\":\"index_text__WcaIy\",\"link\":\"index_link__HPOew\",\"sign_up_panel\":\"index_sign_up_panel__13NzT\",\"password_strength_wrapper\":\"index_password_strength_wrapper__1v7gc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"auth_content_inner_panel\":\"index_auth_content_inner_panel__1ccmK\",\"title\":\"index_title__pu_Wx\",\"form\":\"index_form__1Jzyw\",\"text\":\"index_text__2eNhX\",\"link\":\"index_link__26q-x\",\"tidy3d_sign_up_panel\":\"index_tidy3d_sign_up_panel__fTZOE\",\"password_strength_wrapper\":\"index_password_strength_wrapper__3vsRn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"auth_content_inner_panel\":\"index_auth_content_inner_panel__iplFX\",\"title\":\"index_title__3-ZQH\",\"form\":\"index_form__2MPQn\",\"text\":\"index_text__3tCX9\",\"link\":\"index_link__1qwjy\",\"microsoft_login_panel\":\"index_microsoft_login_panel__3no-F\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"auth_content_inner_panel\":\"index_auth_content_inner_panel__2Vmfy\",\"title\":\"index_title__-sXyO\",\"form\":\"index_form__17qN5\",\"text\":\"index_text__2sn3_\",\"link\":\"index_link__29WNZ\",\"reset_password_panel\":\"index_reset_password_panel__UdLrq\"};","import { isFromFlow360, isFromTidy3d } from '../utils/util';\n\nexport interface AppConfigMap {\n flow360: AppConfig;\n tidy3d: AppConfig;\n}\nexport interface AppConfig {\n redirectUrl: string;\n googleLogin: string;\n googleLogout: string;\n microsoftLogin: string;\n appleLogin: string;\n anduril: {\n redirectUrl: string;\n loginUrl: string;\n };\n}\nconst dev: AppConfigMap = {\n flow360: {\n redirectUrl: 'https://flow360.dev-simulation.cloud',\n googleLogin: `https://sso.dev-simulation.cloud/oauth2/authorize?identity_provider=Google&response_type=CODE&client_id=757hm5uf56qos64jo8ml6asd0g&scope=email%20openid%20profile&prompt=select_account&redirect_uri=https://my.dev-simulation.cloud/callback/flow360`,\n googleLogout: `https://sso.dev-simulation.cloud/logout?client_id=757hm5uf56qos64jo8ml6asd0g&logout_uri=`,\n appleLogin: '',\n microsoftLogin: '',\n anduril: {\n redirectUrl: 'https://anduril-flow360.dev-simulation.cloud',\n loginUrl: `https://sso.dev-simulation.cloud/oauth2/authorize?client_id=3juubqouhhf354ai4b79tcal2j&response_type=code&scope=email+openid+profile&redirect_uri=https://anduril-my.dev-simulation.cloud/callback/flow360/anduril`,\n },\n },\n tidy3d: {\n redirectUrl: 'https://tidy3d.dev-simulation.cloud',\n googleLogin: `https://sso.dev-simulation.cloud/oauth2/authorize?identity_provider=Google&response_type=CODE&client_id=1l5st1cgo1iee522neqbn5hbc9&scope=email%20openid%20profile&prompt=select_account&redirect_uri=https://my.dev-simulation.cloud/callback/tidy3d`,\n googleLogout: `https://sso.dev-simulation.cloud/logout?client_id=1l5st1cgo1iee522neqbn5hbc9&logout_uri=`,\n appleLogin: `https://sso.dev-simulation.cloud/oauth2/authorize?identity_provider=SignInWithApple&client_id=1l5st1cgo1iee522neqbn5hbc9&response_type=code&scope=email+openid+profile&prompt=select_account&redirect_uri=https://my.dev-simulation.cloud/callback/tidy3d`,\n microsoftLogin:\n 'https://sso.dev-simulation.cloud/oauth2/authorize?identity_provider=Microsoft&response_type=CODE&client_id=1l5st1cgo1iee522neqbn5hbc9&scope=email%20openid%20profile&prompt=select_account&redirect_uri=https://my.dev-simulation.cloud/callback/tidy3d',\n anduril: {\n redirectUrl: '',\n loginUrl: '',\n },\n },\n};\nconst uat: AppConfigMap = {\n flow360: {\n redirectUrl: 'https://flow360.uat-simulation.cloud',\n googleLogin: `https://sso.uat-simulation.cloud/oauth2/authorize?identity_provider=Google&response_type=CODE&client_id=1qn1ohmjth9eed3gpci5huq4f4&scope=email%20openid%20profile&prompt=select_account&redirect_uri=https://my.uat-simulation.cloud/callback/flow360`,\n googleLogout: `https://sso.uat-simulation.cloud/logout?client_id=1qn1ohmjth9eed3gpci5huq4f4&logout_uri=`,\n appleLogin: '',\n microsoftLogin: '',\n anduril: {\n redirectUrl: 'https://anduril-flow360.uat-simulation.cloud',\n loginUrl: `https://sso.uat-simulation.cloud/oauth2/authorize?client_id=24oodmcut9qcrbiij0i274cnrf&response_type=code&scope=email+openid+profile&redirect_uri=https://anduril-my.uat-simulation.cloud/callback/flow360/anduril`,\n },\n },\n tidy3d: {\n redirectUrl: 'https://tidy3d.uat-simulation.cloud',\n googleLogin: `https://sso.uat-simulation.cloud/oauth2/authorize?identity_provider=Google&response_type=CODE&client_id=6qq60ahpvp5ooglmofoffb5osi&scope=email%20openid%20profile&prompt=select_account&redirect_uri=https://my.uat-simulation.cloud/callback/tidy3d`,\n googleLogout: `https://sso.uat-simulation.cloud/logout?client_id=6qq60ahpvp5ooglmofoffb5osi&logout_uri=`,\n appleLogin: `https://sso.uat-simulation.cloud/oauth2/authorize?identity_provider=SignInWithApple&client_id=6qq60ahpvp5ooglmofoffb5osi&response_type=code&scope=email+openid+profile&prompt=select_account&redirect_uri=https://my.uat-simulation.cloud/callback/tidy3d`,\n microsoftLogin: `https://sso.uat-simulation.cloud/oauth2/authorize?identity_provider=Microsoft&response_type=CODE&client_id=6qq60ahpvp5ooglmofoffb5osi&scope=email%20openid%20profile&prompt=select_account&redirect_uri=https://my.uat-simulation.cloud/callback/tidy3d`,\n anduril: {\n redirectUrl: '',\n loginUrl: '',\n },\n },\n};\nconst pentest = {\n flow360: {\n redirectUrl: 'https://pentest-flow360.uat-simulation.cloud',\n googleLogin: `https://sso.uat-simulation.cloud/oauth2/authorize?identity_provider=Google&response_type=CODE&client_id=1qn1ohmjth9eed3gpci5huq4f4&scope=email%20openid%20profile&prompt=select_account&redirect_uri=https://pentest-my.uat-simulation.cloud/callback/flow360`,\n googleLogout: `https://sso.uat-simulation.cloud/logout?client_id=1qn1ohmjth9eed3gpci5huq4f4&logout_uri=`,\n appleLogin: '',\n microsoftLogin: '',\n anduril: {\n redirectUrl: 'https://anduril-flow360.uat-simulation.cloud',\n loginUrl: `https://sso.uat-simulation.cloud/oauth2/authorize?client_id=24oodmcut9qcrbiij0i274cnrf&response_type=code&scope=email+openid+profile&redirect_uri=https://anduril-my.uat-simulation.cloud/callback/flow360/anduril`,\n },\n },\n tidy3d: {\n redirectUrl: 'https://pentest-tidy3d.uat-simulation.cloud',\n googleLogin: `https://sso.uat-simulation.cloud/oauth2/authorize?identity_provider=Google&response_type=CODE&client_id=6qq60ahpvp5ooglmofoffb5osi&scope=email%20openid%20profile&prompt=select_account&redirect_uri=https://pentest-my.uat-simulation.cloud/callback/tidy3d`,\n googleLogout: `https://sso.uat-simulation.cloud/logout?client_id=6qq60ahpvp5ooglmofoffb5osi&logout_uri=`,\n appleLogin: `https://sso.uat-simulation.cloud/oauth2/authorize?identity_provider=SignInWithApple&client_id=6qq60ahpvp5ooglmofoffb5osi&response_type=code&scope=email+openid+profile&prompt=select_account&redirect_uri=https://pentest-my.uat-simulation.cloud/callback/tidy3d`,\n microsoftLogin: `https://sso.uat-simulation.cloud/oauth2/authorize?identity_provider=Microsoft&response_type=CODE&client_id=6qq60ahpvp5ooglmofoffb5osi&scope=email%20openid%20profile&prompt=select_account&redirect_uri=https://pentest-my.uat-simulation.cloud/callback/tidy3d`,\n anduril: {\n redirectUrl: '',\n loginUrl: '',\n },\n },\n};\nconst prod: AppConfigMap = {\n flow360: {\n redirectUrl: 'https://flow360.simulation.cloud',\n googleLogin: `https://sso.simulation.cloud/oauth2/authorize?identity_provider=Google&response_type=CODE&client_id=2oltenfma8olqqb9ecpsgl92lb&scope=email%20openid%20profile&prompt=select_account&redirect_uri=https://my.simulation.cloud/callback/flow360`,\n googleLogout: `https://sso.simulation.cloud/logout?client_id=2oltenfma8olqqb9ecpsgl92lb&logout_uri=`,\n microsoftLogin: '',\n appleLogin: '',\n anduril: {\n redirectUrl: 'https://anduril-flow360.simulation.cloud',\n loginUrl: `https://sso.simulation.cloud/oauth2/authorize?client_id=41ut0khprdcacuc5cfedl4s3hh&response_type=code&scope=email+openid+profile&redirect_uri=https://anduril-my.simulation.cloud/callback/flow360/anduril`,\n },\n },\n tidy3d: {\n redirectUrl: 'https://tidy3d.simulation.cloud',\n googleLogin:\n 'https://sso.simulation.cloud/oauth2/authorize?identity_provider=Google&response_type=CODE&client_id=7v1iulgpsnuc85k8hlv32sn7qs&scope=email%20openid%20profile&prompt=select_account&redirect_uri=https://my.simulation.cloud/callback/tidy3d',\n googleLogout:\n 'https://sso.simulation.cloud/logout?client_id=7v1iulgpsnuc85k8hlv32sn7qs&logout_uri=',\n appleLogin:\n 'https://sso.simulation.cloud/oauth2/authorize?identity_provider=SignInWithApple&client_id=7v1iulgpsnuc85k8hlv32sn7qs&response_type=code&scope=email+openid+profile&prompt=select_account&redirect_uri=https://my.simulation.cloud/callback/tidy3d',\n microsoftLogin:\n 'https://sso.simulation.cloud/oauth2/authorize?identity_provider=Microsoft&response_type=CODE&client_id=7v1iulgpsnuc85k8hlv32sn7qs&scope=email%20openid%20profile&prompt=select_account&redirect_uri=https://my.simulation.cloud/callback/tidy3d',\n anduril: {\n redirectUrl: '',\n loginUrl: '',\n },\n },\n};\n\nexport function getAppConfigMap(): AppConfigMap {\n const BUILD_ENV = process.env.REACT_APP_BUILD_ENV;\n if (BUILD_ENV === 'prod') {\n return prod;\n } else if (BUILD_ENV === 'uat') {\n return uat;\n } else if (BUILD_ENV === 'pentest') {\n return pentest;\n }\n return dev;\n}\nexport function getAppConfig(app: string): AppConfig | null {\n const appConfigMap = getAppConfigMap();\n return appConfigMap[app as keyof typeof appConfigMap];\n}\nexport function getCurrentAppConfig(): AppConfig | null {\n const appConfigMap = getAppConfigMap();\n if (isFromFlow360()) {\n return appConfigMap.flow360;\n }\n if (isFromTidy3d()) {\n return appConfigMap.tidy3d;\n }\n return null;\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"auth_content_inner_panel\":\"index_auth_content_inner_panel__3IBTL\",\"title\":\"index_title__2N75m\",\"form\":\"index_form__b4-iv\",\"text\":\"index_text__3FgGw\",\"link\":\"index_link__2rE7R\",\"anduril_login_page\":\"index_anduril_login_page__1O-tN\",\"login_panel\":\"index_login_panel__1mS3j\",\"welcome\":\"index_welcome__1BsC9\",\"intro\":\"index_intro__2Tysi\",\"sign_in_btn\":\"index_sign_in_btn__36EbD\"};"],"sourceRoot":""}