@authing/react-ui-components 4.0.7 → 4.0.8-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["reportWebVitals.ts","components/context/base.tsx","components/context/global/context.tsx","components/context/global/reducer.tsx","components/_utils/guardDocument.ts","components/AuthingGuard/types/GuardConfig.ts","components/Guard/core/useAppendConfig.tsx","components/_utils/appendConfig.ts","components/_utils/locales/index.ts","components/_utils/popupCenter.ts","components/_utils/index.ts","components/_utils/logger/interface.ts","components/_utils/corsVerification.ts","components/_utils/logger/index.ts","components/Guard/module.ts","components/_utils/config/index.ts","../../../src/types/graphql.v2.ts","../../../../src/lib/authentication/AuthenticationTokenProvider.ts","../../../src/lib/graphqlapi.ts","../../../../src/lib/jsencrypt/jsencrypt.js","../../../../../src/lib/sm-crypto/sm2/asn1.js","../../../../../src/lib/sm-crypto/sm2/ec.js","../../../../../src/lib/sm-crypto/sm2/utils.js","../../../../../src/lib/sm-crypto/sm2/sm3.js","../../../../../src/lib/sm-crypto/sm2/index.js","../../../src/lib/utils.ts","../../../../src/lib/authentication/types.ts","../../../../src/lib/common/GraphqlClient.ts","../../../../src/lib/authentication/BaseAuthenticationClient.ts","components/Guard/authClient.ts","components/Type/index.ts","../../../../src/lib/authentication/QrCodeAuthenticationClient.ts","../../../../src/lib/authentication/MfaAuthenticationClient.ts","../../../../src/lib/common/HttpClient.ts","../../../../src/lib/authentication/SocialAuthenticationClient.ts","../../../../src/lib/common/PublicKeyManager.ts","../../../../src/lib/authentication/EnterpriseAuthenticationClient.ts","../../../../src/lib/authentication/PrincipalAuthentication.ts","../../../../src/lib/authentication/AuthenticationClient.ts","components/AuthClientProvider/context.tsx","components/AuthClientProvider/AuthClientProvider.tsx","components/version/version.tsx","components/version/index.tsx","components/Guard/event.ts","components/Login/interface.ts","components/Register/interface.ts","components/_utils/context.tsx","components/ShieldSpin/loading.svg","components/Guard/config.tsx","components/ShieldSpin/index.tsx","components/Guard/GuardModule/stateMachine.ts","components/_utils/flowHandleStorage.ts","components/_utils/http.ts","components/_utils/responseManagement/index.ts","components/_utils/guardHttp.ts","components/_utils/GuardErrorCode.ts","components/Guard/sso.ts","components/IconFont/iconfont.ts","components/Guard/core/renderContext.tsx","components/_utils/initAppId.ts","components/IconFont/useGuardIconfont.ts","components/AuthingGuard/constants.ts","components/context/module/context.tsx","components/_utils/hooks/index.ts","components/BindTotp/businessRequest.ts","components/GuardButton/GuardButton.tsx","components/SubmitButton/index.tsx","components/MFA/interface.ts","components/BindTotp/core/bindSuccess.tsx","components/ImagePro/index.tsx","components/MFA/VerifyCodeInput/VerifyCodeFormItem.tsx","components/MFA/VerifyCodeInput/index.tsx","components/BindTotp/core/securityCode.tsx","components/BindTotp/index.tsx","components/IconFont/index.tsx","components/Back/index.tsx","components/ValidatorRules/useCheckRepeat.ts","components/ValidatorRules/ValidatorFormItem.tsx","components/ValidatorRules/index.ts","components/ValidatorRules/PasswordFormItem.tsx","components/AuthingGuard/IconFont/iconfont.js","components/AuthingGuard/IconFont/svg.js","components/ChangePassword/businessRequest.ts","components/AuthingGuard/IconFont/index.tsx","components/InputPassword/index.tsx","components/_utils/useErrorText.tsx","components/ChangePassword/core/completePassword.tsx","components/CompleteInfo/interface.ts","components/ChangePassword/core/firstLoginReset.tsx","components/ChangePassword/core/rotateReset.tsx","components/ChangePassword/core/PasswordNotSafeReset.tsx","components/ChangePassword/index.tsx","components/AuthingGuard/Forms/UploadImage/index.tsx","components/CompleteInfo/businessRequest.ts","components/InputNumber/index.tsx","components/SendCode/SendCodeBtn.tsx","components/SendCode/index.tsx","components/SendCode/SendCodeByEmail.tsx","components/SendCode/SendCodeByPhone.tsx","components/_utils/countryList.ts","components/Login/core/withVerifyCode/VirtualDropdown.tsx","components/Login/core/withVerifyCode/InputInternationPhone.tsx","components/CompleteInfo/core/completeInfo.tsx","components/DownloadAuthenticator/index.tsx","components/CompleteInfo/utils.tsx","components/CompleteInfo/index.tsx","components/ForgetPassword/core/resetPassword.tsx","components/Error/index.tsx","components/Login/core/withVerifyCode/FormItemIdentify.tsx","components/Login/core/withVerifyCode/inputIdentify.tsx","components/MFA/businessRequest.ts","components/ForgetPassword/index.tsx","components/Login/core/withPassword/FormItemAccount.tsx","components/Login/core/withPassword/InputAccount.tsx","components/Login/core/withPassword/GraphicVerifyCode.tsx","components/Register/components/Agreements/index.tsx","components/Login/core/withPassword/index.tsx","components/Login/core/withLDAP.tsx","components/Login/core/withAD.tsx","components/Login/core/withAppQrcode.tsx","components/Login/core/withWechatMiniQrcode.tsx","components/Login/core/withWechatmpQrcode.tsx","components/Login/codemap.ts","components/Login/socialLogin/IdpButton/index.tsx","components/Login/socialLogin/index.tsx","components/Login/socialLogin/postMessage.ts","components/ChangeLanguage/index.tsx","components/Login/core/withVerifyCode/index.tsx","components/Login/core/withLandrayQrcode.tsx","components/Login/index.tsx","components/_utils/facePlugin/index.ts","components/_utils/errorFace.ts","components/MFA/core/email.tsx","components/MFA/core/sms.tsx","components/MFA/core/face_deps.tsx","components/RecoveryCode/businessRequest.ts","components/MFA/core/face.tsx","components/MFA/core/totp.tsx","components/MFA/mfaMethods/index.tsx","components/MFA/codemap.ts","components/MFA/index.tsx","components/NeedHelpView/core/describeQuestions.tsx","components/NeedHelpView/index.tsx","components/RecoveryCode/core/saveCode.tsx","components/IdentityBinding/businessRequest.ts","components/RecoveryCode/core/useCode.tsx","components/RecoveryCode/index.tsx","components/Register/utils.ts","components/Register/core/WithEmail.tsx","components/Register/core/WithCode.tsx","components/Register/index.tsx","components/SubmitSuccess/index.tsx","components/SelfUnlock/core/selfUnlock.tsx","components/IdentityBinding/IdentityBinding.tsx","components/IdentityBindingAsk/IdentityBindingAsk.tsx","components/Guard/core/renderModule.tsx","components/SelfUnlock/index.tsx","components/_utils/responseManagement/interface.ts","components/Guard/core/usePlugin.ts","components/Guard/core/index.tsx","components/Guard/Guard.tsx","components/AuthingGuard/MfaLayout/Steps.ts","components/AuthingGuard/hooks/useScreenSize.tsx","components/AuthingGuard/api/appConfig.ts","components/AuthingGuard/LoginLayout/index.tsx","components/AuthingGuard/api/userPoolConfig.ts","components/AuthingGuard/index.tsx","examples.tsx"],"names":["reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","createBaseContext","ctx","React","createContext","undefined","ctxConst","useContext","Error","state","payloads","key","value","useBaseContext","useGuardContext","guardDocument","GuardMode","LoginMethods","RegisterMethods","GuardScenes","ResetPwdMethods","SocialConnections","Protocol","getGuardDocument","getGuardWindow","window","guardWindow","defaultView","useInitGuardAppendConfig","appId","appendConfig","useEffect","initAppendConfig","publicConfig","setPublicConfig","pageConfig","setPageConfig","langChangeFN","changeLang","lang","i18n","changeLanguage","initI18n","localesConfig","initLang","navigator","language","split","Boolean","use","LanguageDetector","initReactI18next","init","detection","order","resources","translation","enUsTrans","zhCnTrans","fallbackLng","debug","interpolation","escapeValue","onChange","popupCenter","url","w","h","document","dualScreenLeft","screenLeft","screenX","dualScreenTop","screenTop","screenY","width","innerWidth","documentElement","clientWidth","screen","height","innerHeight","clientHeight","systemZoom","availWidth","left","top","newWindow","open","focus","VALIDATE_PATTERN","email","phone","ip","host","username","validate","type","val","test","fieldRequiredRule","fieldRequiredRuleMessage","required","validateTrigger","message","t","name","whitespace","getDeviceName","userAgent","platform","os","indexOf","insertedRecord","appConfig","userConfig","insertStyles","styles","recordKey","styleElt","styleSheet","createStyleSheet","head","getElementsByTagName","createElement","appendChild","styleSheets","length","innerHTML","cssText","i","selector","insertRule","rule","addRule","removeStyles","parentNode","removeChild","getClassnames","classnames","filter","join","PasswordStrength","getUserRegisterParams","query","qs","parse","location","search","ignoreQueryPrefix","Object","keys","map","isWeChatBrowser","isLarkBrowser","isDingtalkBrowser","isSpecialBrowser","match","parser","UAParser","includes","browser","LoggerType","PASSWORD_STRENGTH_TEXT_MAP","NoCheck","placeholder","validateMessage","Low","Middle","High","AUTO","SYMBOL_TYPE_PATTERNS","getSymbolTypeLength","pwd","pattern","item","getPasswordValidate","strength","customPasswordStrength","validator","_","Promise","reject","resolve","validateMap","r","v","regex","getDocumentNode","node","nodeName","getLoginTypePipe","registerMethod","loginTabs","list","verifyCodeTabMethods","verifyCodeTabConfig","enabledLoginMethods","passwordTabMethods","passwordTabConfig","Phone","PhoneCode","specifyDefaultLoginMethod","lockMethod","Password","EmailCode","Email","getPasswordIdentify","identity","isOriginMatched","whitelist","corsWhitelist","origin","wildcard","require","some","allowedOrigin","corsVerification","allowedOrigins","allowed","Logger","INFO","log","console","JSON","stringify","this","WARN","ERROR","printType","GuardModuleType","publicConfigMap","getPublicConfig","config","requestPublicConfig","httpClient","a","get","res","error","code","data","setUserpoolId","userPoolId","assembledRequestHost","__internalRequest__","requestHostname","configHost","identifier","hostUrl","URL","splitHost","hostname","shift","port","protocol","utilAssembledRequestHost","useMergePublicConfig","setError","useState","initPublicConfig","useCallback","useMemo","title","logo","loginMethods","passwordLoginMethods","defaultLoginMethod","default","disableResetPwd","ssoPageComponentDisplay","forgetPasswordBtn","autoRegister","autoRegisterThenLoginHintInfo","registerMethods","registerTabs","defaultRegisterMethod","disableRegister","registerBtn","publicKey","agreementEnabled","agreements","contentCss","css","mergedPublicConfig","pageConfigMap","getPageConfig","requestGuardPageConfig","ResourceType","PolicyAssignmentTargetType","Operator","EmailTemplateType","SortByEnum","UserStatus","UdfDataType","PolicyEffect","UdfTargetType","WhitelistType","EmailScene","tokenKey","userKey","options","token","user","AuthenticationTokenProvider","localStorage","setItem","getItem","removeItem","RefreshTokenDocument","resetPassword","garpqhlClient","tokenProvider","variables","getToken","_a","request","udv","removeUdv","navigator2","window2","ASN1","Base64","Hex","crypto","href","int2char","n","charAt","op_and","x","y","op_or","op_xor","op_andnot","lbit","cbit","b64map","hex2b64","c","ret","parseInt","substring","b64tohex","s","k","slop","decoder","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","decoder$1","hex","ignore","toLowerCase","out","bits","char_count","decode","create","re","unarmor","m","exec","max","Int10","buf","prototype","mulAdd","l","sub","pop","toString","base","valueOf","simplify","reTimeS","reTimeL","stringCut","str","len","dbits","Stream","enc","pos","hexDigits","charCodeAt","hexByte","hexDump","start","end","raw","isASCII","parseStringISO","String","fromCharCode","parseStringUTF","parseStringBMP","hi","lo","parseTime","shortYear","parseInteger","neg","pad","parseBitString","maxLength","unusedBit","intro","skip","j","parseOctetString","parseOID","stream","header","tag","ASN1Tag","typeName","tagClass","tagNumber","content","Infinity","posContent","Math","abs","isUniversal","toPrettyString","indent","tagConstructed","posStart","posEnd","toHexString","decodeLength","getHexStringValue","hexString","offset","substr","streamStart","getSub","isEOC","e","lowprimes","lplim","BigInteger","fromNumber","fromString","negate","toRadix","km","DB","nbi","ZERO","subTo","compareTo","bitLength","nbits","DM","mod","divRemTo","modPowInt","z","isEven","Classic","Montgomery","exp","clone","copyTo","intValue","DV","byteValue","shortValue","signum","toByteArray","equals","min","and","bitwiseTo","or","xor","andNot","not","shiftLeft","rShiftTo","lShiftTo","shiftRight","getLowestSetBit","bitCount","testBit","floor","setBit","changeBit","clearBit","flipBit","add","addTo","subtract","multiply","multiplyTo","divide","remainder","divideAndRemainder","q","modPow","nbv","Barrett","g","k1","convert","g2","sqrTo","mulTo","is1","r2","revert","modInverse","ac","u","ONE","pow","NullExp","gcd","isProbablePrime","modInt","millerRabin","fromInt","fromRadix","mi","sh","intAt","clamp","dlShiftTo","drShiftTo","bs","cbs","bm","ds","am","squareTo","pm","pt","ts","ms","nsh","ys","y0","yt","F1","F2","d1","FV","d2","qd","invDigit","chunkSize","LN2","cs","dMultiply","dAddOffset","nextBytes","op","f","multiplyLowerTo","multiplyUpperTo","n1","random","square","gcda","callback","setTimeout","gcda1","fromNumberAsync","bnp_1","bnpfn1_1","reduce","mp","mpl","mph","um","mt2","u0","q3","mu","parseBigInt","xl","xh","rr","vv","BI_RC","Arcfour","S","next","rng_state","rng_pptr","rng_pool","getRandomValues","Uint32Array","onMouseMoveListener_1","ev","count","removeEventListener","detachEvent","mouseCoordinates","addEventListener","attachEvent","rng_get_byte","SecureRandom","ba","RSAKey","dmp1","dmq1","coeff","doPublic","doPrivate","xp","xq","setPublic","N","E","encrypt","text","rng","pkcs1pad2","setPrivate","D","setPrivateEx","P","Q","DP","DQ","C","generate","B","ee","p1","q1","phi","decrypt","ctext","pkcs1unpad2","generateAsync","rsa","loop1","loop4","loop3","loop2","sign","digestMethod","digestName","filler","pkcs1pad1","DIGEST_HEADERS","verify","signature","name_1","removeDigestHeader","replace","md2","md5","sha1","sha224","sha256","sha384","sha512","ripemd160","YAHOO","extend","subc","superc","overrides","F","constructor","superclass","_IEEnumFix","ADD","fname","ex","KJUR","JSEncryptRSAKey","_this","call","parseKey","hasPrivateKeyProperty","hasPublicKeyProperty","parsePropertiesFrom","JSEncrypt","default_key_size","default_public_exponent","asn1","ASN1Util","integerToByteHex","bigIntToMinTwosComplementsHex","bigIntegerValue","xorLen","hMask","getPEMStringFromHex","dataHex","pemHeader","hextopem","newObject","param","_KJUR_asn1","_DERBoolean","DERBoolean","_DERInteger","DERInteger","_DERBitString","DERBitString","_DEROctetString","DEROctetString","_DERNull","DERNull","_DERObjectIdentifier","DERObjectIdentifier","_DEREnumerated","DEREnumerated","_DERUTF8String","DERUTF8String","_DERNumericString","DERNumericString","_DERPrintableString","DERPrintableString","_DERTeletexString","DERTeletexString","_DERIA5String","DERIA5String","_DERUTCTime","DERUTCTime","_DERGeneralizedTime","DERGeneralizedTime","_DERSequence","DERSequence","_DERSet","DERSet","_DERTaggedObject","DERTaggedObject","_newObject","paramList","asn1Obj","push","array","tagParam","obj","explicit","newParam","jsonToASN1HEX","getEncodedHex","oidHexToInt","i01","binbuf","bin","slice","oidIntToHex","oidString","itox","roidtox","roid","padLen","bPad","b8","i0","splice","ASN1Object","getLengthHexFromValue","hV","hN","hNlen","hTLV","isModified","getFreshValueHex","hL","hT","getValueHex","DERAbstractString","params","getString","setString","newS","stohex","setStringHex","newHexString","DERAbstractTime","localDateToUTC","utc","getTime","getTimezoneOffset","Date","formatDate","dateObject","withMillis","zeroPadding","year","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","millis","getMilliseconds","sMillis","setByDateValue","month","day","hour","sec","UTC","setByDate","DERAbstractStructured","setByASN1ObjectArray","asn1ObjectArray","asn1Array","appendASN1Object","asn1Object","setByBigInteger","setByInteger","bi","setValueHex","o","setHexValueIncludingUnusedBits","newHexStringIncludingUnusedBits","setUnusedBitsAndHexValue","unusedBits","hValue","hUnusedBits","setByBinaryString","binaryString","setByBooleanArray","booleanArray","newFalseArray","nLength","setValueOidString","setValueName","oidName","oid","x509","OID","name2oid","date","sortFlag","sort","sortflag","isExplicit","setASN1Object","isExplicitFlag","tagNoHex","__","__extends","pem","modulus","public_exponent","der","private_exponent","prime1","prime2","exponent1","exponent2","coefficient","sequence","getPrivateBaseKey","int","bigint","getPrivateBaseKeyB64","getPublicBaseKey","first_sequence","second_sequence","bit_string","getPublicBaseKeyB64","wordwrap","RegExp","getPrivateKey","getPublicKey","setKey","warn","setPrivateKey","privkey","setPublicKey","pubkey","getKey","cb","getPrivateKeyB64","getPublicKeyB64","version","tlv","getValue","getLength","nHex","_super","mask","bigintToValue","THREE","ECFieldElementFp","other","toBigInteger","curve","zinv","ECPointFp","fromBigInteger","isInfinity","x1","y1","z1","x2","y2","z2","w1","w2","w3","w4","w5","w6","twice","infinity","w7","w8","w9","w10","w11","x3","y3","z3","k3","k3Bit","ECCurveFp","xHex","yHex","generateEcparam","G","getGlobalCurve","decodePointHex","generateKeyPairHex","privateKey","leftPad","getX","getY","utf8ToHex","input","unescape","encodeURIComponent","words","hexChars","bite","num","arrayToHex","arr","hexToArray","hexStr","hexStrLength","rotl","result","temp","sum","P0","X","FF","Y","Z","GG","CF","V","Bi","W","M","SS1","SS2","TT1","TT2","T1","T2","A","H","T","concat","sm3","kArr","len_1","lenArr","_b","createCssClassStyleSheet","className","styleTag","styleText","textNode","createTextNode","serialize","convertUdv","_i","dataType","Number","Datetime","convertUdvToKeyValuePair","isNaN","parseFloat","isWechatBrowser","isMobileBrowser","generateUidKey","number","rand","xhrUpload","file","formData","FormData","append","Blob","xhr","XMLHttpRequest","onreadystatechange","readyState","responseText","send","uploadFile","opts","accept","multiple","inputElem","onchange","files","promises","all","catch","click","convertObjectToKeyValueList","PasswordSecurityLevel","SocialConnectionProvider","AppPasswordStrengthLimit","OIDCConnectionMode","SceneType","RelayMethodEnum","pickBy","predicate","endpoint","axios","Axios","withCredentials","GraphqlClient","headers","tenantId","requestFrom","Authorization","errors","method","timeout","responseData","_c","statusCode","error_1","response","status","errorDetail","onError","errmsg_1","errcode_1","data_1","err","msg","_data","authClient","InputMethod","GuardPageSene","BaseAuthenticationClient","appHost","domain","scene","baseClient","QrCodeAuthenticationClient","domId","size","containerSize","_d","interval","onStart","onResult","onScanned","onExpired","onSuccess","onCancel","onCodeShow","onCodeLoaded","onCodeLoadFailed","onRetry","onMfa","onAuthFlow","_e","tips","context","customData","extIdpConnId","withCustomData","nowLang","defaultTitle","zh_CN","en_US","_f","_g","canceled","_h","expired","_j","succeed","_k","retry","getElementById","needGenerate","style","position","id","classList","styleNode","loading","unloading","child","genTip","formattedText","tip","genImage","src","qrcodeImage","setAttribute","onload","genLogoInCenter","qrcodeLogo","display","onerror","genShadow","aOnClick","shadowAId","shadowId","remove","shadow","shadowA","color","borderBottom","cursor","displayScannedUser","photo","img","geneCode","customLogo","qrcodeElm","tipText","retryId","nodeWrapper","textAlign","marginTop","dom","querySelector","genRetry","margin","canvas","context2D","getContext","drawImage","containerHalfWidth","containerHalfHeight","ww","hh","getOffset","save","radius","beginPath","moveTo","lineTo","quadraticCurveTo","closePath","roundedImage","clip","restore","base64","toDataURL","decoratedOnSuccess","userInfo","ticket","autoExchangeUserInfo","exchangeUserInfo","setUser","decoratedOnScanned","nickname","decoratedOnCancel","decoratedOnExpired","decoratedOnError","startPolling","api","autoMergeQrCode","calledOnScanned","callOnPoolingStart","timer","setInterval","checkStatus","status_1","clearInterval","scannedResult","mfaData","errmsg","error_2","MfaAuthenticationClient","source","mfaToken","authorization","authenticatorType","authenticator_type","totp","phoneCountryCode","recoveryCode","baseFace","compareFace","photoA","photoB","isExternal","uploadedKey","e_1","uploadUrl","keyA","keyB","e_2","HttpClient","unSetToken","__assign","FastHttpClient","NaiveHttpClient","SocialAuthenticationClient","provider","popup","authorization_params","authorizationParams","withIdentities","uuid","targetUrl","relayMethod","guardVersion","from_guard","app_id","with_identities","with_custom_data","target_url","relay_method","guard_version","tenant_id","custom_data","onMessage","resData","event","eventType","PublicKeyManager","EnterpriseAuthenticationClient","providerConfig","identityProviders","find","getProviderConfigAndError","OIDC","client_id","clientId","redirect_uri","redirectUri","scope","scopes","response_type","responseType","nonce","authorizationEdpoint","SAML","samlRequest","CAS","casConnectionLoginUrl","OAUTH","authUrl","AZURE_AD","authorizationUrl","windowRef","initProviderContext","referer","connection","providerIentifier","getLoginUrl","parsedMsg","assign","PrincipalAuthenticationClient","info","idCard","ext","bankCard","enterpriseName","enterpriseCode","legalPersonName","DEFAULT_OPTIONS","tokenEndPointAuthMethod","introspectionEndPointAuthMethod","revocationEndPointAuthMethod","encryptFunction","plainText","encryption","cipherMode","keypair","c1","c3","ct","nextT","c2","doEncrypt","jsencrypt","encrypted","forEach","graphqlEndpoint","graphqlClient","naiveHttpClient","publicKeyManager","wxqrcode","qrcode","wechatmpqrcode","landrayqrcode","mfa","social","enterprise","principal","setToken","AuthenticationClient","getUser","decoded","jwtDecode","userId","setOptions","password","profile","generateToken","clientIp","phoneToken","extraParams","extraContext","forceLogin","registerByEmail","setCurrentUser","emailToken","registerByUsername","registerByPhoneCode","checkPasswordStrength","captchaCode","loginByEmail","loginByUsername","loginByPhoneCode","loginByPhonePassword","account","loginBySubAccount","checkLoginStatus","sendEmail","newPassword","resetPasswordByFirstLoginToken","oldPassword","resetPasswordByForceResetToken","updates","checkLoggedIn","updated","updateUser","updatePassword","phoneCode","oldPhone","oldPhoneCode","oldPhoneCountryCode","updatePhone","emailCode","oldEmail","oldEmailCode","updateEmail","refreshToken","primaryUserToken","secondaryUserToken","bindPhone","unbindPhone","bindEmail","unbindEmail","clearUser","targetType","User","targetId","setUdv","departments","firstLevelDomain","websocketHost","authing","uploadAvatar","uploadPhoto","updateProfile","udvList","setUdvBatch","namespace","resourceType","totalCount","resource","externalId","isUserExists","highLevel","middleLevel","HIGH","MIDDLE","LOW","URLSearchParams","secret","Buffer","from","codeVerifier","qstr","_generateTokenRequest","client_secret","grant_type","code_verifier","_generateBasicAuthToken","_getAccessTokenByCodeWithClientSecretPost","_getAccessTokenByCodeWithClientSecretBasic","_getAccessTokenByCodeWithNone","characters","charactersLength","generateRandomString","codeChallenge","CryptoJS","accessKey","accessSecret","accessToken","tokenPlace","access_token","_buildOidcAuthorizeUrl","_buildOauthAuthorizeUrl","_buildSamlAuthorizeUrl","_buildCasAuthorizeUrl","responseMode","codeChallengeMethod","prompt","service","idToken","_buildCasLogoutUrl","expert","_buildOidcLogoutUrl","_buildEasyLogoutUrl","refresh_token","_getNewAccessTokenByRefreshTokenWithClientSecretPost","_getNewAccessTokenByRefreshTokenWithClientSecretBasic","_getNewAccessTokenByRefreshTokenWithNone","_revokeTokenWithClientSecretPost","_revokeTokenWithClientSecretBasic","_revokeTokenWithNone","_introspectTokenWithClientSecretPost","_introspectTokenWithClientSecretBasic","_introspectTokenWithNone","valid","format","roleCode","roleList","roles","hasRole","page","limit","id_token","AuthClientContext","useGlobalAuthClient","authClientContext","client","checkAuthClientProps","props","getGuardAuthClient","useGuardAuthClient","eventsMapping","onLogin","success","onRegister","guardEventsHijacking","events","openEventsMapping","newEvents","eventsKey","defaultG2Config","langRange","escCloseable","clickCloseable","mode","Normal","getDefaultG2Config","defaultConfig","getDefaultRegisterConfig","DefaultGuardX","finallyConfig","defaultMergedConfig","initData","currentModule","isAuthFlow","contextLoaded","guardPageConfig","GuardXContext","GuardButtonContext","spin","spinChange","useGuardButtonState","useGuardPublicConfig","useGuardHttpClient","useGuardAppId","useGuardTenantId","useGuardInitData","useGuardEvents","useGuardModule","guardX","changeModule","backModule","useGuardFinallyConfig","useGuardIsAuthFlow","_extends","target","arguments","apply","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","transform","fillRule","strokeWidth","SvgLoading","_ref","svgRef","titleId","viewBox","xmlns","xmlnsXlink","ref","QrCodeScanType","ForwardRef","ShieldSpin","customLoading","alt","Spin","ActionType","isSSO","defaultInitData","showLoading","loadingComponent","flowHandleStorage","GuardStateMachine","changeModuleEvent","moduleStateHistory","stateMachineLog","uninstallPopstate","globalWindow","onPopstate","nextModule","moduleData","moduleName","prevModuleData","isUseHistoryHijack","history","pushState","isEqual","back","historyPush","actionType","ChangeModule","unshift","action","dataSource","historyBack","Back","setConfig","Init","getFlowHandle","updateFlowHandle","flowHandle","requestClient","fetch","json","timeoutAction","cancel","path","langHeader","tenantHeader","CancelToken","race","baseUrl","addQueryPrefix","cancelToken","post","postForm","setBaseUrl","DEFAULT_LANG_HEADER","setLangHeader","setTenantHeader","setTenantId","InterceptorName","errorCodeInterceptor","callBack","apiCode","ApiCode","FLOW_END","CodeAction","CHANGE_MODULE","RENDER_MESSAGE","ErrorCode","GuardHttp","responseInterceptorMap","Map","getHeaders","responseIntercept","authFlow","requestData","initErrorCodeInterceptor","has","ERROR_CODE","set","values","acc","cur","getRequestClient","userpoolId","getGuardHttp","useGuardHttp","trackSession","GenerateSvg","svgString","svgDOM","tempDiv","tempSVG","overflow","body","firstChild","insertBefore","loadedFn","RenderContext","guardProps","initState","children","setEvents","authClint","setAuthClint","setHttpClient","cdnBase","setCdnBase","setIsAuthFlow","propsAppid","propsAuthClient","globalAuthClient","useInitAppId","guardStateMachine","setGuardStateMachine","Provider","Consumer","useReducer","payload","moduleState","onChangeModule","onBeforeChangeModule","mergedConfig","setMergedConfig","useMergeDefaultConfig","guardHttp","initGuardHttp","setAppId","serError","useGuardPageConfig","sdkClient","globalClient","setClient","useInitGuardAuthClient","iconfontLoaded","loaded","setLoaded","initIconfont","useGuardIconfont","sessionData","typedData","eventsNameWhiteList","startsWith","eventName","guardEventsFilter","__unAuthFlow__","moduleEvents","onLoad","contextValues","renderContext","renderErrorContext","ApplicationMfaType","LOGIN_METHODS_MAP","AppQr","WxMinQr","LDAP","AD","WechatMpQrcode","HIDE_SOCIALS","HIDE_SOCIALS_SHOWIN_ENTERPRISE","Login","SocialConnectionEvent","useMediaSize","isPhoneMedia","useMediaQuery","maxWidth","parsePhone","isInternationSms","fieldValue","areaCode","countryCode","phoneNumber","country","isValid","BindTotpBusinessAction","useMethod","enterpriseConnectionObjs","socialConnectionObjs","noLoginMethods","enterpriseConnections","socialConnections","socials","hiddenSocialConnection","wechatDisplayButtonsMessage","WECHATPC","GITHUB","QQ","APPLE_WEB","ALIPAY","LINKEDIN","BAIDU","GOOGLE","WEIBO","FACEBOOK","SLACK","DINGTALK","Message","Auth","qqbuiltDisplayButtonsMessage","WECHATMP","WECHATWORK_CORP_QRCONNECT","weWorkBuiltDisplayButtonsMessage","dingTalkDisplayButtonsMessage","larkDisplayButtonsMessage","pcDisplayButtonsMessage","isHost","postMessage","isNoMethod","socialLoginBtns","idpBtns","GuardButton","isLockButtonClick","buttonClassName","onClick","SubmitButton","buttonSpin","setSpin","shaking","setShaking","inputs","getElementsByClassName","saftyCode","bindTotpSecretSave","MountShaking","agreement","UnMountShaking","useShaking","timeOut","clearTimeout","useImperativeHandle","onSpin","sp","propsCls","htmlType","disabled","forwardRef","MFAType","Paragraph","BindSuccess","onBind","submitButtonRef","useRef","useForm","form","useTranslation","bindSuccess","current","validateFields","ConfirmTotpRecoveryCode","isFlowEnd","onGuardHandling","copyable","onFinish","onFinishFailed","Item","rules","valuePropName","ImagePro","borderRadius","noSpin","imgProps","draggable","VerifyCodeFormItem","codeLength","ruleKeyword","formItemProps","validateFirst","VerifyCodeInput","gutter","onEenter","showDivider","onChangeProps","rest","inputRef","codeInputRef","verifyCode","setVerifyCode","focusIndex","setFocusIndex","codes","handleChange","index","el","pasteEvent","preventDefault","stopPropagation","paste","clipboardData","getData","fill","minWidth","minHeight","lineHeight","marginLeft","autoFocus","onKeyDown","evt","currentVal","handleKeyDown","persist","nativeEvent","isComposing","nextValue","preValue","changeValue","SecurityCode","onNext","useAsyncFn","getFieldValue","VerifyTotpFirstTime","bindTotp","DOWNLOAD_AT","onSubmitCapture","BindTotpType","IconFont","xlinkHref","BackLogin","onBack","LOGIN","isRender","renderBack","REGISTER","defaultScenes","fontSize","BackCustom","GuardBindTotpView","setSecret","setQrcode","SECURITY_CODE","bindTotpType","setBindTotpType","LOGIN_INVALID","recovery_code","qrcode_data_url","bindInfo","fetchBindInfo","renderContent","BIND_SUCCESS","MFA","TOTP","resUser","useCheckRepeat","checkFn","setTimer","ValidatorFormItem","checkRepeat","checkExist","isCheckI18nSms","checkInternationalSms","internationalSmsConfig","enabled","methodContent","field","checkRepeatErrorMessage","formatErrorMessage","checkExistErrorMessage","checkRepeatFn","formatRules","CustomFormItem","FormItem","fromItemProos","passwordStrength","UserName","getAttribute","__iconfont__svg__cssinject__","write","doScroll","ChangePasswordBusinessAction","InputPassword","iconRender","visible","alignItems","usePasswordErrorText","show","setPasswordErrorTextShow","getPassWordUnsafeText","marginBottom","CompletePassword","businessRequestName","isChangeComplete","onRegisterSuccess","onRegisterFailed","REGISTER_COMPLETE_INFO","resCode","UNSAFE_PASSWORD_TIP","onRegisterError","errorMessage","autoComplete","prefix","FormValidateRule","CompleteInfoBaseControls","CompleteInfoExtendsControls","OmitCompleteInfo","FirstLoginReset","onReset","ABORT_FLOW","RotateReset","onFinishCallBack","ResetPassword","PasswordNotSafeReset","ResetPasswordStrengthDetection","GuardChangePassword","explain","typeContent","GuardFirstLoginPasswordResetView","coreForm","GuardPasswordNotSafeResetView","GuardForcedPasswordResetView","forcedCycle","GuardNoticePasswordResetView","GuardRegisterCompletePasswordView","UploadImage","uploading","setUploading","apiHost","uploadButton","PlusOutlined","listType","showUploadList","errMsg","spinning","CompleteInfoAuthFlowAction","InputNumber","propsValue","inputProps","setValue","valueChange","SendCodeBtn","sendDesc","beforeSend","btnRef","setSent","buttonProps","effect","countDown","setCountDown","timerRef","prev","useSentCounter","setLoading","time","SendCode","autoSubmit","justify","align","span","submit","SendCodeByEmail","onSendCodeBefore","fieldName","remainProps","SendCodeByPhone","sendPhone","sendSmsCode","isoInfo","iso","regions","regions_en","VirtualDropdown","label","region","region_en","showSearch","dropdownClassName","bordered","listHeight","optionLabelProp","dropdownMatchSelectWidth","filterOption","option","suffixIcon","InputInternationPhone","onAreaCodeChange","formValue","CompleteInfo","metaData","businessRequest","verifyCodeLength","countryList","setCountryList","defaultISOType","setAreaCode","loadInitCountryList","countryMap","zh","en","entries","PhoneAccount","baseControlMap","gender","image","datetime","select","dropdown","boolean","string","internalControlMap","SCENE_TYPE_COMPLETE_PHONE","INFORMATION_COMPLETION_VERIFY_CODE","generateRules","formRules","validateRules","replaceAll","inputElement","userFormItem","formFieldsV2","fieldKeys","fieldValues","baseData","checkResult","checkCode","checkMessage","layout","DownloadType","fnName","registerSkipMethod","registerRequest","registerFnName","registerContent","registerProfile","Skip","Complete","fieldValuesToRegisterProfile","extendsFields","udf","fieldType","GuardCompleteInfo","skipComplateFileds","skipLoading","setSkipLoading","onSkip","GuardLoginCompleteInfoView","GuardRegisterCompleteInfoView","selectOptions","setSelectOptions","setMetaData","loadSelectOptions","inputType","extendsFieldsToMetaData","InputMethodMap","GuardDownloadATView","downloadConfig","IOS","google","microsoft","Android","renderTab","TabPane","tab","defaultActiveKey","GuardErrorView","propsInitData","guardXInitData","messages","justifyContent","backgroundImage","backgroundSize","dangerouslySetInnerHTML","__html","FindMethodConversion","FormItemIdentify","methods","currentMethod","checkValue","renderTemplate","InputIdentify","verifyCodeMethodsText","renderInput","MfaBusinessAction","identify","setIdentify","codeMethod","setCodeMethod","tempPassword","onSend","onSendError","SCENE_TYPE_RESET","RESET_PASSWORD_VERIFY_CODE","GuardForgetPassword","onPwdResetError","onPwdReset","SUBMIT_SUCCESS","onPwdPhoneSend","onPwdEmailSend","onPwdPhoneSendError","onPwdEmailSendError","FormItemAccount","formItemPtops","runderTemplate","InputAccount","loginMethodsText","runderInput","GraphicVerifyCode","verifyCodeUrl","changeCode","Agreements","showError","acceptList","setAcceptList","isAccept","every","checked","LoginWithPassword","onLoginFailed","onLoginSuccess","saveIdentify","_firstItemInitialValue","acceptedAgreements","setAcceptedAgreements","validated","setValidated","showCaptcha","setShowCaptcha","setVerifyCodeUrl","remainCount","setRemainCount","accountLock","setAccountLock","getCaptchaUrl","pathname","loginRequest","loginInfo","onLoginRequest","loginData","mergeAdAndAccountPasswordLogin","trim","onBeforeLogin","onLoginRes","INPUT_CAPTCHACODE","PASSWORD_ERROR","ACCOUNT_LOCK","MULTIPLE_ERROR_LOCK","loginWay","submitText","submitButText","onValuesChange","changedValues","initialValue","LoginWithLDAP","captchaUrl","addonAfter","LoginWithAD","credentials","fetchRes","userPasswordInput","LoginWithAppQrcode","appQrcodeClient","_qrCodeScanOptions","canLoop","startScanning","currentDocument","qrCodeScanOptions","mes","appQrcode","LoginWithWechatMiniQrcode","wechatMiniQrcode","LoginWithWechatmpQrcode","wechatmpQrcode","codeMap","APP_MFA_CODE","module","OTP_MFA_CODE","totpMfaEnabled","IDENTITY_BINDING","IDENTITY_BINDING_ASK","LOGIN_COMPLETE_INFO","baseLoginPathMapping","loginUrlFieldMapping","IdpButton","initUrl","from_hosted_guard","redirected","redirect_url","iconType","block","icon","marginRight","displayName","name_en","basePath","renderBtn","SocialLogin","parsedMessage","authingCode","authingMessage","authingResData","usePostMessage","onPostMessage","idpButtons","socialLoginButtons","querystring","shape","socialConnectionsBtnShape","tooltip","trigger","overlayStyle","fontFamily","idp","socialLogin","direction","flex","ChangeLanguage","global","showChangeLanguage","switchText","onLangChange","LoginWithVerifyCode","_lockMethod","setCurrentMethod","isOnlyInternationSms","setInternationSms","SCENE_TYPE_LOGIN","LOGIN_VERIFY_CODE","reqContent","loginByEmailCode","AreaCodePhoneAccount","LoginWithLandrayQrcode","inputWays","qrcodeWays","Landray","GuardLoginView","dlm","propsMethods","intersection","useMethods","defaultMethod","renderInputWay","renderQrcodeWay","setLoginWay","setCanLoop","qrcodeTabsSettings","errorNumber","setErrorNumber","identifyRef","firstInputWay","way","firstQRcodeWay","useDisables","verifyCodeLogin","hiddenTab","scanLogins","defaultQrCodeWay","isDefault","onLoginError","inputNone","qrcodeNone","useSwitchStates","agree","availableAt","verifyLoginMethods","useLayoutEffect","containerDOM","innerContainer","welcomeMessage","placement","overlayClassName","getPopupContainer","parentElement","destroy","destroyInactiveTabPane","onLoginTabChange","activeKey","FORGET_PWD","ANY_QUESTIONS","facePluginInstance","FaceErrorName","VerifyEmail","VerifySms","VerifyTotp","VerifyFace","AssociateFace","isExternalPhoto","useMfaBusinessRequest","isFlow","BindMFAEmail","VerifyMFAEmail","onVerify","sendCodeRef","sent","sendVerifyCode","MFA_VERIFY_CODE","mfaCode","mail","mailArr","mailName","mailDesensitization","MFAEmail","userEmail","mfaLogin","setEmail","BindMFASms","VerifyMFASms","userPhone","phoneDesensitization","SCENE_TYPE_MFA_VERIFY","MFASms","setPhone","getFacePlugin","devicesConstraints","video","getFaceDetectorOptions","facePlugin","TinyFaceDetectorOptions","inputSize","scoreThreshold","getCurrentFaceDetectionNet","nets","tinyFaceDetector","dataURItoBlob","base64Data","byteString","atob","mimeString","ia","Uint8Array","TotpRecoveryCodeBusinessAction","MFAFace","mfaBackContext","MFABackStateContext","faceState","setFaceState","percent","setPercent","mfaBusinessRequest","verifyRequest","bindRequest","videoRef","canvasRef","p2","cooldown","dashStyle","useDashoffset","loadFromUri","mediaDevices","getUserMedia","srcObject","NotAllowedError","SecurityError","OverconstrainedError","faceErrorMessage","mfaBackState","setShowMethods","uploadImage","blob","getBase64","videoDom","clearRect","faceBind","faceCheck","quitIdentifying","faceMfaEnabled","goToCheckScene","goToBindScene","autoShoot","paused","ended","detectSingleFace","score","setMfaBackState","autoPlay","muted","playsInline","strokeDasharray","strokeDashoffset","cx","cy","opacity","BindMFATotp","BIND_TOTP","VerifyMFATotp","RECOVERY_CODE","MFATotp","methodTitleMapping","EMAIL","SMS","FACE","MFAMethods","onChangeMethod","applicationMfa","otherMethods","mfaPolicy","2021","1700","1701","1702","500","6001","602","ComponentsMapping","GuardMFAView","showMethods","__codePaser","__message","DescribeQuestions","typeProblemMap","0","1","2","3","4","5","6","typeOperations","setUploadUrl","previewVisible","setPreviewVisible","previewImage","setPreviewImage","fileList","setFileList","typeProblem","setTypeProblem","textMap","handlePreview","reader","FileReader","readAsDataURL","originFileObj","description","images","Option","TextArea","showCount","rows","onPreview","imgUrl","beforeUpload","itemRender","padding","border","showInfo","footer","GuardNeedHelpView","IdentityBindingBusinessAction","IdentityBindingAction","SaveCode","UseCode","onSubmit","RecoveryTotp","RecoveryCode","setCode","RecoveryCodeAuthFlow","setRecoveryCode","GuardRecoveryCodeView","useIsChangeComplete","currentMode","complateFiledsPlace","omit","RegisterWithEmail","onBeforeRegister","registeContext","device","onRegisterSuccessIntercept","registerFrom","RegisterWithCode","isPhoneChangeComplete","isEmailChangeComplete","needPassword","REGISTER_PASSWORD","registerByEmailCode","registerMessage","SCENE_TYPE_REGISTER","REGISTER_VERIFY_CODE","GuardRegisterView","verifyRegisterMethods","registerContextProps","registerInfo","loginInitData","registerContext","tabMapping","component","supportRegisterMethods","defaultValue","tabList","element","tabSort","Set","onRegisterTabChange","GuardSubmitSuccessView","__changeModule","countDesc","useIdentityBindingBusinessRequest","BindByPhoneCode","BindByEmailCode","BindByPassword","GuardIdentityBindingView","phoneCodeRequest","emailCodeRequest","PasswordRequest","bindMethodsMap","encryptPassword","onBinding","onBindingError","loginMethodsBase","codeLoginMethods","GuardIdentityBindingAskView","onCreate","onCreateError","CreateUser","createLoading","createAccount","LangMAP","SelfUnlock","defaultEmail","setFieldsValue","defaultPhone","encryptPassWord","SELF_UNLOCKING_VERIFY_CODE","GuardUnlockView","PREFIX_CLS","prefixCls","langMap","zhCn","zhCN","enUs","enUS","RenderModule","GuardButtonProvider","useGuardButtonContext","FIRST_LOGIN_PASSWORD","NOTICE_PASSWORD_RESET","FORCED_PASSWORD_RESET","SELF_UNLOCK","UNSAFE_PASSWORD_RESET","codeAction","ChangeModuleApiCodeMapping","nextData","newData","renderModule","renderGuardContent","locale","Modal","closeIcon","onClose","keyboard","maskClosable","getContainer","useGuardFacePlugin","guardFace","initFacePlugin","GuardCore","plugin","useGuardPlugin","propsAreEqual","pre","preAttribute","currentAttribute","GuardPropsFilter","Guard","memo","guardWindowMount","mounted","initGuardDocument","Steps","APP_MFA","COMPLETE_INFO","UNLOCK","ScreenSize","Mobile","Desktop","App","ReactDOM","render"],"mappings":"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M,oDAGpB+W,EAAMoE,IACN,IAAK,IAAIzT,EAAI,EAAGA,EAAIqP,EAAIxP,SAAUG,EAChC,GAAIqP,EAAIrP,GAAGkS,IAAIwB,QACb,MAAM,IAAIpb,MAAM,6CAGpB,MAAOqb,GACPtE,EAAM,KAGV,GAAY,OAARA,EAAc,CAChB,GAAY,OAARU,EACF,MAAM,IAAIzX,MACR,qEACEkY,GAGNwB,EAAO7B,IAAMK,EAAQkC,KAAKC,IAAI5C,GAEhC,OAAO,IAAIhE,EAAKyH,EAAavB,EAAQlC,EAAKmC,EAAK7C,IAE1CtD,EA9SG,GAgTRoG,GAAW,WACb,SAASA,EAAQH,GACf,IAAI/C,EAAM+C,EAAOrL,MAIjB,GAHA,KAAK0L,SAAWpD,GAAO,EACvB,KAAK8D,eAAkC,KAAV,GAAN9D,GACvB,KAAKqD,UAAkB,GAANrD,EACK,IAAlB,KAAKqD,UAAmB,CAC1B,IAAIjG,EAAI,IAAI2C,GACZ,GACEC,EAAM+C,EAAOrL,MACb0F,EAAE8C,OAAO,IAAW,IAANF,SACD,IAANA,GACT,KAAKqD,UAAYjG,EAAEqD,YASvB,OANAyC,EAAQjD,UAAU0D,YAAc,WAC9B,OAAyB,IAAlB,KAAKP,UAEdF,EAAQjD,UAAUwE,MAAQ,WACxB,OAAyB,IAAlB,KAAKrB,UAAwC,IAAnB,KAAKC,WAEjCH,EArBM,GA0BXyB,GAAY,CACd,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEEC,IAAS,GAAK,IAAMD,GAAUA,GAAU/T,OAAS,GACjDiU,GAAc,WAChB,SAASA,EAAWpN,EAAGkH,EAAGX,GACf,MAALvG,IACE,iBAAmBA,EACrB,KAAKqN,WAAWrN,EAAGkH,EAAGX,GACR,MAALW,GAAa,iBAAmBlH,EACzC,KAAKsN,WAAWtN,EAAG,KAEnB,KAAKsN,WAAWtN,EAAGkH,IAgrCzB,OA5qCAkG,EAAW5E,UAAUK,SAAW,SAAS3B,GACvC,GAAI,KAAKN,EAAI,EACX,MAAO,IAAM,KAAK2G,SAAS1E,SAAS3B,GAEtC,IAAIL,EACJ,GAAS,IAALK,EACFL,EAAI,OACC,GAAS,GAALK,EACTL,EAAI,OACC,GAAS,GAALK,EACTL,EAAI,OACC,GAAS,IAALK,EACTL,EAAI,MACC,IAAS,GAALK,EAGT,OAAO,KAAKsG,QAAQtG,GAFpBL,EAAI,EAIN,IACII,EADAwG,GAAM,GAAK5G,GAAK,EAEhBsB,GAAI,EACJtL,EAAI,GACJvD,EAAI,KAAKzB,EACTyP,EAAI,KAAKoG,GAAOpU,EAAI,KAAKoU,GAAM7G,EACnC,GAAIvN,KAAM,EAKR,IAJIgO,EAAI,KAAKoG,KAAOzG,EAAI,KAAK3N,IAAMgO,GAAK,IACtCa,GAAI,EACJtL,EAAI6I,GAASuB,IAER3N,GAAK,GACNgO,EAAIT,GACNI,GAAK,KAAK3N,IAAO,GAAKgO,GAAK,IAAQT,EAAIS,EACvCL,GA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","file":"static/js/main.5735e6f1.chunk.js","sourcesContent":["import { ReportHandler } from 'web-vitals'\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\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'\n\n// create context with no upfront defaultValue\n// without having to do undefined check all the time\nexport function createBaseContext<C>() {\n const ctx = React.createContext<C | undefined>(undefined)\n function useBaseContext() {\n const ctxConst = React.useContext(ctx)\n if (!ctxConst)\n throw new Error('useBaseContext must be inside a Provider with a value')\n return ctxConst\n }\n // make TypeScript infer a tuple, not an array of union types\n return [ctx, useBaseContext] as const\n}\n\nexport interface IBaseAction<ActionType = string> {\n type: ActionType & string\n payload?: any\n [key: string]: string\n}\n\nexport interface IBaseContext<S> {\n state: S\n [k: string]: any\n}\n\nexport type BaseContextComponent<Props> = React.PropsWithChildren<Props>\n","import React, { useCallback, useReducer } from 'react'\nimport { createBaseContext, IBaseContext, BaseContextComponent } from '../base'\nimport { reducer, IState } from './reducer'\n\n// 页面上下文,除了状态外还有公开的方法\nexport interface IGuardContext extends IBaseContext<IState> {\n dispatch: Function\n getValue: (key: keyof IState) => any\n setValue: (key: keyof IState, value: any) => void\n}\n\n// 实例化上下文,这里避免了为空检查\nconst [Context, useBaseContext] = createBaseContext<IGuardContext>()\n\nexport function useGuardContext(): IGuardContext {\n const guardContext = useBaseContext()\n // TODO: custom some\n return guardContext\n}\n\nexport function GuardContext({\n children = null,\n value,\n}: BaseContextComponent<Record<string, any>>) {\n const [state, dispatch] = useReducer(reducer, value)\n const getValue = (key: keyof IState) => state[key]\n const setValue = useCallback((key: keyof IState, value: any) => {\n dispatch({ type: 'SET_VALUE', key, value })\n }, [])\n\n let ctx: IGuardContext = {\n state,\n dispatch,\n getValue,\n setValue,\n }\n\n return <Context.Provider value={ctx}>{children}</Context.Provider>\n}\n","import {\n GuardConfig,\n ActiveTabs,\n GuardScenes,\n UserConfig,\n GuardEventsHandler,\n LocalesConfig,\n Lang,\n} from '../../AuthingGuard/types'\nimport { AuthenticationClient } from 'authing-js-sdk'\nimport { IBaseAction } from '../base'\nimport { ApplicationMfaType } from '../../AuthingGuard/api/appConfig'\n\nexport type IState = {\n config: GuardConfig // 处理后的 Guard 配置\n userConfig: UserConfig // 用户传入的配置\n authClient: AuthenticationClient\n activeTabs: ActiveTabs // 登录、注册方式\n guardScenes: GuardScenes // 当前在哪个界面\n guardTitle: string\n // 需要 mfa 登录时后端返回的错误信息\n mfaData: {\n mfaToken: string\n phone?: string\n email?: string\n applicationMfa?: {\n status: 0 | 1\n mfaPolicy: ApplicationMfaType\n sort: number\n }[]\n }\n userPoolId: string\n appId: string\n guardEvents: GuardEventsHandler\n localesConfig: LocalesConfig\n lang?: Lang\n realHost: string\n}\n\nconst handlers: any = {\n // eslint-disable-next-line\n ['SET_VALUE']: (state: IState, payloads: any) => {\n return {\n ...state,\n [payloads.key]: payloads.value,\n }\n },\n}\n\nexport const reducer = (state: IState, { type, ...payloads }: IBaseAction) => {\n const handler = handlers[type]\n if (handler) {\n return handler(state, payloads)\n }\n return state\n}\n","let guardDocument: Document\n\nexport const getGuardDocument = (): Document => {\n return guardDocument\n}\n\nexport const useAppendConfig = getGuardDocument\n\nexport const initGuardDocument = (document: Document) => {\n guardDocument = document\n}\n","import {\n AuthenticationClient,\n AuthenticationClientOptions,\n CommonMessage,\n SocialConnectionProvider,\n User,\n} from 'authing-js-sdk'\nimport { QrCodeAuthenticationClient } from 'authing-js-sdk/build/main/lib/authentication/QrCodeAuthenticationClient'\n\nimport {\n SocialConnectionItem,\n EnterpriseConnectionItem,\n ApplicationConfig,\n PasswordLoginMethods,\n Agreement,\n QrcodeTabsSettings,\n} from '../../../components/AuthingGuard/api'\nimport { Lang } from './Locales'\n\nexport type { AuthenticationClient, CommonMessage, User } from 'authing-js-sdk'\n\nexport enum GuardMode {\n Modal = 'modal',\n Normal = 'normal',\n}\n\nexport enum LoginMethods {\n LDAP = 'ldap',\n AppQr = 'app-qrcode',\n Password = 'password',\n PhoneCode = 'phone-code',\n WxMinQr = 'wechat-miniprogram-qrcode', // 对应社会化登录的 wechat:miniprogram:qrconnect(小程序扫码登录)\n AD = 'ad', // 对应企业身份源的 Windows AD 登录\n WechatMpQrcode = 'wechatmp-qrcode', // 微信扫码关注登录\n Landray = 'landray', //蓝凌kk扫码登录\n}\n\nexport enum RegisterMethods {\n Email = 'email',\n Phone = 'phone',\n EmailCode = 'emailCode',\n}\n\nexport enum GuardScenes {\n Login = 'login',\n Register = 'register',\n MfaVerify = 'mfaVerify',\n AppMfaVerify = 'appMfaVerify',\n RestPassword = 'restPassword',\n CompleteUserInfo = 'completeUserInfo',\n}\n\nexport enum ResetPwdMethods {\n Email = 'email',\n Phone = 'phone',\n}\n\nexport enum SocialConnections {\n Qq = 'qq',\n Weibo = 'weibo',\n Github = 'github',\n Google = 'google',\n WxPc = 'wechat:pc',\n Dingtalk = 'dingtalk',\n WxWCorpQr = 'wechatwork:corp:qrconnect',\n WxWSPQr = 'wechatwork:service-provider:qrconnect',\n WxWSPAuth = 'wechatwork:service-provider:authorization',\n AlipayWeb = 'alipay:web',\n AppleWeb = 'apple:web',\n Baidu = 'baidu',\n LarkInternalApp = 'lark-internal',\n LarkMarketPlaceApp = 'lark-public',\n}\n\nexport enum Protocol {\n AD = 'ad',\n CAS = 'cas',\n LDAP = 'ldap',\n OIDC = 'oidc',\n SAML = 'saml',\n OAUTH = 'oauth',\n AZURE_AD = 'azure-ad',\n}\n\n// export enum GuardEventsKebab {\n// // 加载完成,userPool 配置和应用配置(如果有 appId)加载完成\n// Load = 'load',\n// // 加载失败\n// LoadError = 'load-error',\n// // 用户登录成功\n// Login = 'login',\n// // 用户登录失败\n// LoginError = 'login-error',\n// // 注册成功\n// Register = 'register',\n// // 注册失败\n// RegisterError = 'register-error',\n// // 忘记密码邮件发送成功\n// PwdEmailSend = 'pwd-email-send',\n// // 忘记密码邮件发送失败\n// PwdEmailSendError = 'pwd-email-send-error',\n// // 忘记密码手机验证码发送成功\n// PwdPhoneSend = 'pwd-phone-send',\n// // 忘记密码手机验证码发送失败\n// PwdPhoneSendError = 'pwd-phone-send-error',\n// // 重置密码成功\n// PwdReset = 'pwd-reset',\n// // 重置密码失败\n// PwdResetError = 'pwd-reset-error',\n// // 表单关闭事件\n// Close = 'close',\n// }\n\n// export interface GuardEventsCamelCase {\n// // 加载完成,userPool 配置和应用配置(如果有 appId)加载完成\n// [GuardEvents.Load]: 'onLoad'\n// // 加载失败\n// [GuardEvents.LoadError]: 'onLoadError'\n// // 用户登录成功\n// [GuardEvents.Login]: 'onLogin'\n// // 用户登录失败\n// [GuardEvents.LoginError]: 'onLoginError'\n// // 注册成功\n// [GuardEvents.Register]: 'onRegister'\n// // 注册失败\n// [GuardEvents.RegisterError]: 'onRegisterError'\n// // 忘记密码邮件发送成功\n// [GuardEvents.PwdEmailSend]: 'onPwdEmailSend'\n// // 忘记密码邮件发送失败\n// [GuardEvents.PwdEmailSendError]: 'onPwdEmailSendError'\n// // 忘记密码手机验证码发送成功\n// [GuardEvents.PwdPhoneSend]: 'onPwdPhoneSend'\n// // 忘记密码手机验证码发送失败\n// [GuardEvents.PwdPhoneSendError]: 'onPwdPhoneSendError'\n// // 重置密码成功\n// [GuardEvents.PwdReset]: 'onPwdReset'\n// // 重置密码失败\n// [GuardEvents.PwdResetError]: 'onPwdResetError'\n// // 表单关闭事件\n// [GuardEvents.Close]: 'onClose'\n// }\n\n// export enum GuardEvents {\n// // 加载完成,userPool 配置和应用配置(如果有 appId)加载完成\n// Load = 'onLoad',\n// // 加载失败\n// LoadError = 'onLoadError',\n// // 用户登录成功\n// Login = 'onLogin',\n// // 用户登录失败\n// LoginError = 'onLoginError',\n// // 注册成功\n// Register = 'onRegister',\n// // 注册失败\n// RegisterError = 'onRegisterError',\n// // 忘记密码邮件发送成功\n// PwdEmailSend = 'onPwdEmailSend',\n// // 忘记密码邮件发送失败\n// PwdEmailSendError = 'onPwdEmailSendError',\n// // 忘记密码手机验证码发送成功\n// PwdPhoneSend = 'onPwdPhoneSend',\n// // 忘记密码手机验证码发送失败\n// PwdPhoneSendError = 'onPwdPhoneSendError',\n// // 重置密码成功\n// PwdReset = 'onPwdReset',\n// // 重置密码失败\n// PwdResetError = 'onPwdResetError',\n// // 表单关闭事件\n// Close = 'onClose',\n// }\n\nexport const GuardEventsCamelToKebabMap = {\n onLoad: 'load',\n onLoadError: 'load-error',\n onLogin: 'login',\n onBeforeLogin: 'before-login',\n onLoginError: 'login-error',\n onRegister: 'register',\n onBeforeRegister: 'before-register',\n onRegisterError: 'register-error',\n onPwdEmailSend: 'pwd-email-send',\n onPwdEmailSendError: 'pwd-email-send-error',\n onPwdPhoneSend: 'pwd-phone-send',\n onPwdPhoneSendError: 'pwd-phone-send-error',\n onPwdReset: 'pwd-reset',\n onPwdResetError: 'pwd-reset-error',\n onClose: 'close',\n onLoginTabChange: 'login-tab-change',\n onRegisterTabChange: 'register-tab-change',\n onRegisterInfoCompleted: 'register-info-completed',\n onRegisterInfoCompletedError: 'register-info-completed-error',\n} as const\n\nexport interface GuardEventsHandlerKebab {\n // 加载完成,userPool 配置和应用配置(如果有 appId)加载完成\n load: GuardEventsHandler['onLoad']\n // 加载失败\n 'load-error': GuardEventsHandler['onLoadError']\n // 登录前,即表单校验完成,请求接口前\n 'before-login': GuardEventsHandler['onBeforeLogin']\n // 用户登录成功\n login: GuardEventsHandler['onLogin']\n // 用户登录失败\n 'login-error': GuardEventsHandler['onLoginError']\n // 注册前,即表单校验完成,请求接口前\n 'before-register': GuardEventsHandler['onBeforeRegister']\n // 注册成功\n register: GuardEventsHandler['onRegister']\n // 注册失败\n 'register-error': GuardEventsHandler['onRegisterError']\n // 忘记密码邮件发送成功\n 'pwd-email-send': GuardEventsHandler['onPwdEmailSend']\n // 忘记密码邮件发送失败\n 'pwd-email-send-error': GuardEventsHandler['onPwdEmailSendError']\n // 忘记密码手机验证码发送成功\n 'pwd-phone-send': GuardEventsHandler['onPwdPhoneSend']\n // 忘记密码手机验证码发送失败\n 'pwd-phone-send-error': GuardEventsHandler['onPwdPhoneSendError']\n // 重置密码成功\n 'pwd-reset': GuardEventsHandler['onPwdReset']\n // 重置密码失败\n 'pwd-reset-error': GuardEventsHandler['onPwdResetError']\n // 表单关闭事件\n close: GuardEventsHandler['onClose']\n // 登录的 tab 切换\n 'login-tab-change': GuardEventsHandler['onLoginTabChange']\n // 注册的 tab 切换\n 'register-tab-change': GuardEventsHandler['onRegisterTabChange']\n // 注册信息补充完毕\n 'register-info-completed': GuardEventsHandler['onRegisterInfoCompleted']\n // 注册信息补充失败\n 'register-info-completed-error': GuardEventsHandler['onRegisterInfoCompletedError']\n}\n\nexport interface PasswordLoginParams {\n type: LoginMethods.Password\n data: {\n // 标识,可能是用户名、邮箱、手机号\n identity: string\n // 密码\n password: string\n // 图形验证码\n captchaCode?: string\n }\n}\n\nexport interface LDAPLoginParams {\n type: LoginMethods.LDAP\n data: {\n // 标识,可能是用户名、邮箱、手机号\n identity: string\n // 密码\n password: string\n // 图形验证码\n captchaCode?: string\n }\n}\n\nexport interface ADLoginParams {\n type: LoginMethods.AD\n data: {\n // 标识,可能是用户名、邮箱、手机号\n identity: string\n // 密码\n password: string\n }\n}\n\nexport interface PhoneCodeLoginParams {\n type: LoginMethods.PhoneCode\n data: {\n // 手机号\n phone: string\n // 手机验证码\n code: string\n }\n}\n\nexport interface EmailRegisterParams {\n type: RegisterMethods.Email\n data: {\n // 邮箱\n email: string\n // 密码\n password: string\n }\n}\n\nexport interface PhoneRegisterParams {\n type: RegisterMethods.Phone\n data: {\n // 手机号\n phone: string\n // 密码\n password: string\n // 手机验证码\n code: string\n }\n}\n\nexport interface GuardEventsHandler {\n onLoad?: (authClient: AuthenticationClient) => void\n onLoadError?: (error: CommonMessage) => void\n onBeforeLogin?: (\n loginInfo:\n | PasswordLoginParams\n | LDAPLoginParams\n | ADLoginParams\n | PhoneCodeLoginParams,\n authClient: AuthenticationClient\n ) => boolean | Promise<boolean>\n onLogin?: (user: User, authClient: AuthenticationClient) => void\n onLoginError?: (user: User, authClient: AuthenticationClient) => void\n onBeforeRegister?: (\n registerInfo: EmailRegisterParams | PhoneRegisterParams,\n authClient: AuthenticationClient\n ) => boolean | Promise<boolean>\n onRegister?: (user: User, authClient: AuthenticationClient) => void\n onRegisterError?: (user: User, authClient: AuthenticationClient) => void\n onPwdEmailSend?: (authClient: AuthenticationClient) => void\n onPwdEmailSendError?: (\n error: CommonMessage,\n authClient: AuthenticationClient\n ) => void\n onPwdPhoneSend?: (authClient: AuthenticationClient) => void\n onPwdPhoneSendError?: (\n error: CommonMessage,\n authClient: AuthenticationClient\n ) => void\n onPwdReset?: (authClient: AuthenticationClient) => void\n onPwdResetError?: (\n error: CommonMessage,\n authClient: AuthenticationClient\n ) => void\n onClose?: () => void\n onLoginTabChange?: (activeTab: LoginMethods) => void\n onRegisterTabChange?: (activeTab: RegisterMethods) => void\n onRegisterInfoCompleted?: (\n user: User,\n udfs: {\n definition: any\n value: any\n }[],\n authClient: AuthenticationClient\n ) => void\n onRegisterInfoCompletedError?: (\n error: CommonMessage,\n udfs: {\n definition: any\n value: any\n }[],\n authClient: AuthenticationClient\n ) => void\n}\n\nexport interface UserConfig {\n logo?: string\n title?: string\n description?: string\n zIndex?: number\n isSSO?: boolean\n mode?: GuardMode\n /**\n * @deprecated 使用 appHost\n */\n apiHost?: string\n /**\n * @deprecated 使用 appHost\n */\n appDomain?: string\n appHost?: string\n contentCss?: string\n text?: {\n loginBtn?: {\n normal?: string\n loading?: string\n }\n registerBtn?: {\n normal?: string\n loading?: string\n }\n // 登录 tab\n loginTabs?: Partial<Record<LoginMethods, string>>\n }\n escCloseable?: boolean\n autoRegister?: boolean\n clickCloseable?: boolean\n disableResetPwd?: boolean\n disableRegister?: boolean\n defaultScenes?: GuardScenes\n loginMethods?: LoginMethods[]\n target?: string | HTMLElement\n enterpriseConnections?: string[]\n defaultLoginMethod?: LoginMethods\n registerMethods?: RegisterMethods[]\n socialConnections?: (SocialConnections | SocialConnectionProvider)[]\n defaultRegisterMethod?: RegisterMethods\n qrCodeScanOptions?: Parameters<QrCodeAuthenticationClient['startScanning']>[1]\n /**\n * 国际化处理\n */\n localesConfig?: LocalesConfig\n lang?: Lang\n /**\n * 用于去品牌化\n */\n headers?: AuthenticationClientOptions['headers']\n passwordLoginMethods?: PasswordLoginMethods[]\n}\n\nexport interface GuardConfig extends UserConfig {\n socialConnectionObjs: SocialConnectionItem[]\n enterpriseConnectionObjs: EnterpriseConnectionItem[]\n extendsFields: ApplicationConfig['extendsFields']\n publicKey: ApplicationConfig['publicKey']\n agreementEnabled: boolean\n agreements: Agreement[]\n loginMethodTitleMapping: Record<string, string>\n qrcodeTabsSettings: QrcodeTabsSettings\n}\n\nexport interface LocalesConfig {\n defaultLang?: Lang\n isShowChange?: boolean\n onChange?: (lang: Lang) => void\n}\n","import { useEffect } from 'react'\nimport { GuardAppendConfig, setPublicConfig } from '../..'\nimport { initAppendConfig } from '../../_utils/appendConfig'\nimport { setPageConfig } from '../../_utils/config'\nimport { getGuardDocument } from '../../_utils/guardDocument'\n\nexport const getGuardWindow = () => {\n if (typeof window === 'undefined') {\n return undefined\n }\n\n const guardDocument = getGuardDocument()\n\n const guardWindow = guardDocument?.defaultView\n\n if (guardWindow) {\n return guardWindow\n }\n\n return window\n}\n\nexport const useGuardWindow = getGuardWindow\n\nexport const useInitGuardAppendConfig = (\n appId?: string,\n appendConfig?: GuardAppendConfig\n) => {\n useEffect(() => {\n if (!appId) return\n\n initAppendConfig(appendConfig)\n\n if (appendConfig?.publicConfig) {\n setPublicConfig(appId, appendConfig.publicConfig)\n }\n\n if (appendConfig?.pageConfig) {\n setPageConfig(appId, appendConfig.pageConfig)\n }\n }, [appId, appendConfig])\n}\n","import { GuardAppendConfig } from '..'\n\nlet appendConfigMapping: GuardAppendConfig\n\nexport const getAppendConfig = (): GuardAppendConfig => {\n return appendConfigMapping\n}\n\nexport const useAppendConfig = getAppendConfig\n\nexport const initAppendConfig = (appendConfig: GuardAppendConfig = {}) => {\n appendConfigMapping = appendConfig\n}\n","import i18n from 'i18next'\nimport { initReactI18next } from 'react-i18next'\nimport LanguageDetector from 'i18next-browser-languagedetector'\n\nimport * as enUsTrans from './en'\nimport * as zhCnTrans from './zh'\nimport { LocalesConfig, Lang } from '../../AuthingGuard/types'\nimport { getGuardWindow } from '../../Guard/core/useAppendConfig'\n\nlet langChangeFN: (lang: Lang) => void = () => {}\n\nexport const changeLang = (lang: Lang) => {\n i18n.changeLanguage(lang)\n langChangeFN && langChangeFN(lang)\n}\n\nconst initI18n = (localesConfig: LocalesConfig = {}, lang?: string) => {\n let initLang: 'zh-CN' | 'en-US' = 'zh-CN'\n\n const guardWindow = getGuardWindow()\n\n if (guardWindow) {\n initLang =\n guardWindow?.navigator?.language?.split('-')?.[0] === 'zh'\n ? 'zh-CN'\n : 'en-US'\n }\n\n if (Boolean(i18n.language)) {\n i18n.changeLanguage(lang)\n } else {\n i18n\n .use(LanguageDetector) // 监测当前浏览器语言\n .use(initReactI18next) // 初始化 i18n\n .init({\n detection: {\n order: [],\n },\n resources: {\n 'en-US': {\n translation: enUsTrans,\n },\n 'zh-CN': {\n translation: zhCnTrans,\n },\n },\n fallbackLng: lang ?? initLang,\n debug: false,\n interpolation: {\n escapeValue: false, // react already safes from xss\n },\n })\n if (localesConfig.onChange) {\n langChangeFN = localesConfig.onChange\n }\n }\n}\n\nexport { i18n, initI18n }\n","import { getGuardWindow } from '../Guard/core/useAppendConfig'\n\n/**\n * 在屏幕中心弹出新窗口加载 url\n * @param url\n * @param param1\n */\nexport const popupCenter = (\n url: string,\n { w, h }: { w: number; h: number } = { w: 585, h: 649 }\n) => {\n const guardWindow = getGuardWindow()\n\n if (!guardWindow) return\n\n const document = guardWindow.document\n\n // Fixes dual-screen position Most browsers Firefox\n const dualScreenLeft =\n guardWindow.screenLeft !== undefined\n ? guardWindow.screenLeft\n : guardWindow.screenX\n const dualScreenTop =\n guardWindow.screenTop !== undefined\n ? guardWindow.screenTop\n : guardWindow.screenY\n\n const width = guardWindow.innerWidth\n ? guardWindow.innerWidth\n : document.documentElement.clientWidth\n ? document.documentElement.clientWidth\n : guardWindow.screen.width\n const height = guardWindow.innerHeight\n ? guardWindow.innerHeight\n : document.documentElement.clientHeight\n ? document.documentElement.clientHeight\n : guardWindow.screen.height\n\n const systemZoom = width / guardWindow.screen.availWidth\n const left = (width - w) / 2 / systemZoom + dualScreenLeft\n const top = (height - h) / 2 / systemZoom + dualScreenTop\n const newWindow = guardWindow.open(\n url,\n '_blank',\n `\n toolbar=no,\n menubar=no,\n scrollbars=no,\n resizable=no,\n location=no,\n status=no\n width=${w / systemZoom}, \n height=${h / systemZoom}, \n top=${top}, \n left=${left}\n `\n )\n\n newWindow?.focus()\n}\n","import { useEffect } from 'react'\nimport { Rule } from 'antd/lib/form'\nimport qs from 'qs'\nimport { useGuardContext } from '../context/global/context'\nimport { i18n } from './locales'\nimport { User } from 'authing-js-sdk'\nimport { ApplicationConfig, ComplateFiledsPlace } from '../AuthingGuard/api'\nimport { GuardProps } from '../Guard'\nimport isEqual from 'lodash/isEqual'\nimport omit from 'lodash/omit'\nimport { getGuardWindow } from '../Guard/core/useAppendConfig'\nimport UAParser from 'ua-parser-js'\nimport { LoginMethods, RegisterMethods } from '../AuthingGuard/types'\nexport * from './popupCenter'\nexport * from './clipboard'\n\nexport const VALIDATE_PATTERN = {\n // https://emailregex.com/\n // eslint-disable-next-line no-control-regex\n email: /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n // https://cloud.tencent.com/developer/article/1751120\n // email: /^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$/,\n // 以下的来自 authing-user-portal 项目\n phone: /^1(3\\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\\d|9[0-35-9])\\d{8}$/,\n ip: /^((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})(\\.((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})){3}$/,\n host: /^[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+.?$/,\n username: /.?/,\n} as const\n\nexport const validate = (type: keyof typeof VALIDATE_PATTERN, val: string) => {\n return VALIDATE_PATTERN[type].test(val)\n}\n\nexport const getRequiredRules = (msg: string): Rule[] => {\n return [\n {\n required: true,\n message: msg,\n },\n ]\n}\n\nexport const fieldRequiredRule = (\n fieldRequiredRule: string,\n fieldRequiredRuleMessage?: string\n): Rule[] => {\n return [\n {\n required: true,\n validateTrigger: ['onChange'],\n message:\n fieldRequiredRuleMessage ||\n i18n.t('common.isMissing', {\n name: fieldRequiredRule,\n }),\n whitespace: true,\n },\n ]\n}\n\nexport function getDeviceName() {\n const guardWindow = getGuardWindow()\n\n if (!guardWindow) return\n\n const userAgent = guardWindow.navigator.userAgent\n const platform = guardWindow.navigator.platform\n const macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K']\n const windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE']\n const iosPlatforms = ['iPhone', 'iPad', 'iPod']\n\n let os = null\n\n if (macosPlatforms.indexOf(platform) !== -1) {\n os = 'Mac OS'\n } else if (iosPlatforms.indexOf(platform) !== -1) {\n os = 'iOS'\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\n os = 'Windows'\n } else if (/Android/.test(userAgent)) {\n os = 'Android'\n } else if (!os && /Linux/.test(platform)) {\n os = 'Linux'\n }\n\n return os\n}\n\nexport type STYLE_RECORD_KEY = 'appConfig' | 'userConfig'\n\n/**\n * 传对象 {'background-color': 'red'}\n * 传字符串 \"CSS 样式\"\n */\nconst insertedRecord: Record<STYLE_RECORD_KEY, any> = {\n appConfig: null,\n userConfig: null,\n}\nexport const insertStyles = (\n styles: string | any,\n recordKey?: STYLE_RECORD_KEY\n) => {\n const guardWindow = getGuardWindow()\n\n if (!guardWindow) return\n\n const document = guardWindow.document\n\n let styleElt, styleSheet\n if ((document as any).createStyleSheet) {\n // IE\n styleSheet = (document as any).createStyleSheet()\n } else {\n let head = document.getElementsByTagName('head')[0]\n styleElt = document.createElement('style')\n head.appendChild(styleElt)\n styleSheet = document.styleSheets[document.styleSheets.length - 1]\n }\n if (typeof styles === 'string') {\n if (styleElt) styleElt.innerHTML = styles\n else styleSheet.cssText = styles // IE\n } else {\n let i = 0\n for (let selector in styles) {\n if (styleSheet.insertRule) {\n let rule = selector + ' {' + styles[selector] + '}'\n styleSheet.insertRule(rule, i++)\n } else {\n styleSheet.addRule(selector, styles[selector], i++)\n }\n }\n }\n\n if (recordKey) {\n insertedRecord[recordKey] = styleElt || styleSheet\n }\n}\n\nexport const removeStyles = (recordKey: STYLE_RECORD_KEY) => {\n if (!insertedRecord[recordKey]) {\n return\n }\n\n const styleElt = insertedRecord[recordKey]\n styleElt.parentNode?.removeChild(styleElt)\n\n insertedRecord[recordKey] = null\n}\n\nexport const useTitle = (title: string, prefix?: string) => {\n const {\n state: { config },\n } = useGuardContext()\n\n useEffect(() => {\n document.title = `${prefix ?? `${config.title} `} ${title}`\n }, [config.title, prefix, title])\n}\n\nexport const getClassnames = (classnames: (string | boolean | undefined)[]) => {\n return classnames.filter(Boolean).join(' ')\n}\n\n/**\n * https://www.itranslater.com/qa/details/2115518846294557696\n * Simple object check.\n * @param item\n * @returns {boolean}\n */\nexport function isObject(item: any) {\n return item && typeof item === 'object' && !Array.isArray(item)\n}\n\n/**\n * https://www.itranslater.com/qa/details/2115518846294557696\n * Deep merge two objects.\n * @param target\n * @param ...sources\n */\nexport function deepMerge<T extends any = any>(\n target: T,\n ...sources: any[]\n): T {\n if (!sources.length) return target\n const source = sources.shift()\n\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n // @ts-ignore\n if (!target[key]) {\n Object.assign(target, { [key]: {} })\n }\n // @ts-ignore\n deepMerge(target[key], source[key])\n } else {\n Object.assign(target, { [key]: source[key] })\n }\n }\n }\n\n return deepMerge(target, ...sources)\n}\n\nexport const getUserRegisterParams = () => {\n const query = qs.parse(window.location.search, {\n ignoreQueryPrefix: true,\n })\n return Object.keys(query).map((key) => ({\n key,\n value: query[key],\n }))\n}\n// 微信内置浏览器\nexport const isWeChatBrowser = () => {\n if (typeof navigator === 'undefined') {\n return null\n }\n return (\n /MicroMessenger/i.test(navigator?.userAgent) &&\n !/wxwork/i.test(navigator.userAgent)\n )\n}\n\nexport const isLarkBrowser = () => {\n if (typeof navigator === 'undefined') {\n return null\n }\n return /Lark/i.test(navigator.userAgent)\n}\n\nexport const isQtWebEngine = () => {\n if (typeof navigator === 'undefined') {\n return null\n }\n return /QtWebEngine/i.test(navigator.userAgent)\n}\n\nexport const isXiaomiBrowser = () => {\n if (typeof navigator === 'undefined') {\n return null\n }\n return /MiuiBrowser/i.test(navigator.userAgent)\n}\nexport const isDingtalkBrowser = () => {\n if (typeof navigator === 'undefined') {\n return null\n }\n return /dingtalk/i.test(navigator.userAgent)\n}\nexport const isQQBrowser = () => {\n if (typeof navigator === 'undefined') {\n return null\n }\n return /MQQBrowser/i.test(navigator.userAgent)\n}\n// qq 内置浏览器\nexport const isQQBuiltInBrowser = () => {\n if (typeof navigator === 'undefined') {\n return null\n }\n return / QQ/i.test(navigator.userAgent)\n}\n// 企业微信内置浏览器\nexport const isWeWorkBuiltInBrowser = () => {\n if (typeof navigator === 'undefined') {\n return null\n }\n return (\n /MicroMessenger/i.test(navigator.userAgent) &&\n /wxwork/i.test(navigator.userAgent)\n )\n}\n// 特殊浏览器 后续可能会增加\n\nexport const isEdgeBrowser = () => {\n const parser = UAParser()\n\n return parser.browser.name === 'Edge'\n}\n\nexport const isWeiboBrowser = () => {\n if (typeof navigator === 'undefined') {\n return null\n }\n return /Weibo/i.test(navigator.userAgent)\n}\n\nexport const isAlipayBrowser = () => {\n if (typeof navigator === 'undefined') {\n return null\n }\n return /Alipay/i.test(navigator.userAgent)\n}\n\nexport const isBaiduBrowser = () => {\n if (typeof navigator === 'undefined') {\n return null\n }\n return /Baidu/i.test(navigator.userAgent)\n}\n\nexport const isWeComeBrowser = () => /wxwork/i.test(navigator.userAgent)\n\nexport const isMobile = () => {\n return window.navigator.userAgent.match(\n /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i\n )\n}\n\n/* 利用浏览器的 UA 判断是否为不支持弹窗的特殊浏览器 */\nexport const isSpecialBrowser = () => {\n // 1. 首先筛选出一定是特殊浏览器的 UA\n if (\n isWeChatBrowser() ||\n isWeComeBrowser() ||\n isLarkBrowser() ||\n isDingtalkBrowser() ||\n isQtWebEngine() ||\n isXiaomiBrowser() ||\n isQQBrowser() ||\n isMobile()\n ) {\n return true\n }\n\n // 2. 利用 ua-parser-js 进一步判断,筛选出很可能不是特殊浏览器的 UA\n // 由于一些特殊浏览器也可能会被误判为非特殊,所以需要首先经过第 1 步筛选\n const parser = UAParser()\n const nonSpecialBrowsers = [\n 'Chrome',\n 'Firefox',\n 'Safari',\n 'Opera',\n 'IE',\n 'Edge',\n ]\n if (nonSpecialBrowsers.includes(parser.browser.name ?? '')) {\n return false\n }\n\n // 3. 可能有一些 UA 没有任何特征,这种情况下一律默认为特殊浏览器\n return true\n}\n\nexport const assembledAppHost = (identifier: string, host: string) => {\n const hostUrl = new URL(host)\n\n const splitHost = hostUrl.hostname.split('.')\n\n const port = hostUrl.port\n\n splitHost.shift()\n\n // eslint-disable-next-line prettier/prettier\n return `${hostUrl.protocol}//${identifier}.${splitHost.join('.')}${\n port && `:${port}`\n }`\n}\n\n// 拼接请求链接\nexport const assembledRequestHost = (\n requestHostname: string,\n configHost: string\n) => {\n const identifier = requestHostname.split('.')[0]\n\n const hostUrl = new URL(configHost)\n const splitHost = hostUrl.hostname.split('.')\n\n splitHost.shift()\n\n // 看看是否有端口号\n const port = hostUrl.port\n\n return `${hostUrl.protocol}//${identifier}.${splitHost.join('.')}${\n port && `:${port}`\n }`\n}\n\nexport enum PasswordStrength {\n NoCheck,\n Low,\n Middle,\n High,\n AUTO,\n}\n\nexport const PASSWORD_STRENGTH_TEXT_MAP: Record<\n PasswordStrength,\n {\n placeholder: () => string\n validateMessage: () => string\n }\n> = {\n [PasswordStrength.NoCheck]: {\n placeholder: () => i18n.t('login.inputPwd'),\n validateMessage: () => i18n.t('login.inputPwd'),\n },\n [PasswordStrength.Low]: {\n placeholder: () => i18n.t('login.setPwdLimit1'),\n validateMessage: () => i18n.t('login.setPwdLimitMsg1'),\n },\n [PasswordStrength.Middle]: {\n placeholder: () => i18n.t('login.login.setPwdLimit2'),\n validateMessage: () => i18n.t('login.setPwdLimitMsg2'),\n },\n [PasswordStrength.High]: {\n placeholder: () => i18n.t('login.login.setPwdLimit3'),\n validateMessage: () => i18n.t('login.setPwdLimitMsg3'),\n },\n [PasswordStrength.AUTO]: {\n placeholder: () => i18n.t('login.inputPwd'),\n validateMessage: () => i18n.t('login.inputPwd'),\n },\n}\n\nconst SYMBOL_TYPE_PATTERNS = [\n /\\d+/,\n /[a-zA-Z]/,\n /[`~!@#$%^&*()_\\-+=<>?:\"{}|,.\\\\/;'\\\\[\\]·~!@#¥%……&*()——\\-+={}|《》?:“”【】、;‘',。、]/,\n // /[-!$%^&*()_+|~=`{}[\\]:\";'<>?,@./]/,\n]\n\nexport const getSymbolTypeLength = (pwd: string) => {\n return SYMBOL_TYPE_PATTERNS.map((pattern) => pattern.test(pwd)).filter(\n (item) => item\n ).length\n}\n\nexport const getPasswordValidate = (\n strength: PasswordStrength = PasswordStrength.NoCheck,\n customPasswordStrength: any = {},\n fieldRequiredRuleMessage?: string\n): Rule[] => {\n const required = [\n ...fieldRequiredRule(i18n.t('common.password'), fieldRequiredRuleMessage),\n {\n validateTrigger: 'onBlur',\n validator(_: any, value: any) {\n if ((value ?? '').indexOf(' ') !== -1) {\n return Promise.reject(i18n.t('common.checkPasswordHasSpace'))\n }\n return Promise.resolve()\n },\n },\n ]\n\n const validateMap: Record<PasswordStrength, Rule[]> = {\n [PasswordStrength.NoCheck]: [...required],\n [PasswordStrength.Low]: [\n ...required,\n {\n validateTrigger: 'onBlur',\n validator(r, v) {\n if (v && v.length < 6) {\n return Promise.reject(\n PASSWORD_STRENGTH_TEXT_MAP[PasswordStrength.Low].validateMessage()\n )\n }\n return Promise.resolve()\n },\n },\n ],\n [PasswordStrength.Middle]: [\n ...required,\n {\n validateTrigger: 'onBlur',\n validator(r, v) {\n if (v && (v.length < 6 || getSymbolTypeLength(v) < 2)) {\n return Promise.reject(\n PASSWORD_STRENGTH_TEXT_MAP[\n PasswordStrength.Middle\n ].validateMessage()\n )\n }\n return Promise.resolve()\n },\n },\n ],\n [PasswordStrength.High]: [\n ...required,\n {\n validateTrigger: 'onBlur',\n validator(r, v) {\n if (v && (v.length < 6 || getSymbolTypeLength(v) < 3)) {\n return Promise.reject(\n PASSWORD_STRENGTH_TEXT_MAP[\n PasswordStrength.High\n ].validateMessage()\n )\n }\n return Promise.resolve(true)\n },\n },\n ],\n [PasswordStrength.AUTO]: [\n ...required,\n {\n validateTrigger: 'onBlur',\n pattern: customPasswordStrength?.regex,\n message: customPasswordStrength?.message,\n },\n ],\n }\n\n return validateMap[strength]\n}\n\nexport const sleep = (delay: number) =>\n new Promise((resolve) => setTimeout(resolve, delay))\n\nexport const shoudGoToComplete = (\n user: User,\n contextType: ComplateFiledsPlace,\n config: ApplicationConfig | undefined,\n autoRegister?: boolean //是否登录注册合并\n) => {\n // console.log('需要补全吗?', user, contextType, config)\n // 先判断开关,再对比字段。\n let needGo = false\n // 判断新版本\n if (\n config?.complateFiledsPlace?.length &&\n config.complateFiledsPlace.includes(contextType) &&\n config?.extendsFields &&\n config?.extendsFields?.length > 0\n ) {\n needGo = true\n }\n\n //autoRegister 开启注册登录合并后 就不区分登录注册场景 只要 complateFiledsPlace 有值即可\n\n if (\n autoRegister &&\n config?.complateFiledsPlace?.length &&\n config?.extendsFields &&\n config?.extendsFields?.length > 0\n ) {\n needGo = true\n }\n // 兼容老版本\n if (\n !config?.complateFiledsPlace?.length &&\n config?.extendsFieldsEnabled &&\n config?.extendsFields &&\n config?.extendsFields?.length > 0\n ) {\n needGo = true\n }\n // 对比字段\n const allFieldsToComp = config?.extendsFields\n if (\n needGo &&\n contextType === 'register' &&\n allFieldsToComp &&\n allFieldsToComp.length > 0\n ) {\n if (\n user.email &&\n allFieldsToComp?.length === 1 &&\n allFieldsToComp[0]?.type === 'internal' &&\n allFieldsToComp[0]?.name === 'email'\n ) {\n return false\n }\n if (\n user.phone &&\n allFieldsToComp?.length === 1 &&\n allFieldsToComp[0]?.type === 'internal' &&\n allFieldsToComp[0]?.name === 'phone'\n ) {\n return false\n }\n if (\n allFieldsToComp\n .filter((item) => item.type === 'user')\n .map((i) => i.name)\n //@ts-ignore\n .map((i) => user[i])\n .filter((i) => Boolean(i)).length === 0\n )\n return false\n\n return true\n }\n if (\n needGo &&\n contextType === 'login' &&\n allFieldsToComp &&\n allFieldsToComp.length > 0\n ) {\n // console.log('判断补全')\n // TODO 自动注册登录\n needGo = false\n const userFields = allFieldsToComp.filter(\n (item) => item.type === 'internal'\n )\n const udvs = allFieldsToComp.filter((item) => item.type !== 'internal')\n for (const f of userFields) {\n const currKey = f.name\n // gender 特例\n if (currKey === 'gender' && user['gender'] === 'U') {\n needGo = true\n break\n }\n //@ts-ignore\n if (!user[currKey] || user[currKey] === '') {\n needGo = true\n break\n }\n }\n if (!needGo) {\n const { customData } = user\n if (customData) {\n for (const f of udvs) {\n if (!customData[f.name] || customData[f.name] === '') {\n needGo = true\n break\n }\n }\n }\n }\n }\n return needGo\n}\n\nexport const tabSort = (\n defaultValue: any,\n tabList: RegisterMethods[]\n): RegisterMethods[] => {\n const index = tabList.indexOf(defaultValue)\n const element = tabList.splice(index, 1)[0]\n tabList.unshift(element)\n return tabList\n}\n\nexport const mailDesensitization = (mail: string) => {\n const mailArr = mail.split('@')\n const mailName = mailArr[0].substr(0, 1) + '***'\n return mailName + '@' + mailArr[1]\n}\n\nexport const phoneDesensitization = (phone: string) => {\n return phone.replace(/(\\d{3})\\d*(\\d{4})/, '$1****$2')\n}\n\nexport const getHundreds = (num: number) => {\n return Math.floor(num / 100)\n}\n\nexport const GuardPropsFilter = (pre: GuardProps, current: GuardProps) => {\n const preAttribute = Object.keys(pre).filter((name) => name.startsWith('on'))\n\n const currentAttribute = Object.keys(current).filter((name) =>\n name.startsWith('on')\n )\n\n return isEqual(omit(pre, preAttribute), omit(current, currentAttribute))\n}\n\nexport const getDocumentNode = (node: Node & ParentNode): Document => {\n if (node.nodeName === '#document') {\n return node as Document\n }\n\n return getDocumentNode(node.parentNode as Node & ParentNode)\n}\n\n// 1. 手机号验证码注册\n// - 手机号验证码登录\n// - 手机号密码登录\n// - 非手机号的密码登录\n// 2. 邮箱验证码注册\n// - 邮箱验证码登录\n// - 邮箱密码登录\n// - 非邮箱的密码登录\n// 3. 邮箱密码注册\n// - 邮箱密码登录\n// - 邮箱验证码登录\n// - 非邮箱的密码登录\n\nexport const getLoginTypePipe = (\n publicConfig: ApplicationConfig,\n registerMethod: RegisterMethods\n) => {\n const loginTabs = publicConfig?.loginTabs.list // 支持的登录方式\n const verifyCodeTabMethods =\n publicConfig?.verifyCodeTabConfig?.enabledLoginMethods ?? [] // 支持的验证码登录方式\n const passwordTabMethods =\n publicConfig?.passwordTabConfig?.enabledLoginMethods ?? [] // 支持的密码登录方式\n // 通过手机验证码注册成功\n if (registerMethod === RegisterMethods.Phone) {\n if (\n loginTabs.includes(LoginMethods.PhoneCode) &&\n verifyCodeTabMethods.includes('phone-code')\n ) {\n // situation 1 手机号验证码登录\n return {\n specifyDefaultLoginMethod: LoginMethods.PhoneCode,\n lockMethod: 'phone-code',\n }\n } else if (\n loginTabs.includes(LoginMethods.Password) &&\n passwordTabMethods.includes('phone-password')\n ) {\n // situation 2 手机号密码登录\n return { specifyDefaultLoginMethod: LoginMethods.Password }\n } else {\n return undefined\n }\n }\n // 通过邮箱验证码注册成功\n if (registerMethod === RegisterMethods.EmailCode) {\n if (\n loginTabs.includes(LoginMethods.PhoneCode) &&\n verifyCodeTabMethods.includes('email-code')\n ) {\n // situation 1 邮箱验证码登录\n return {\n specifyDefaultLoginMethod: LoginMethods.PhoneCode,\n lockMethod: 'email-code',\n }\n } else if (\n loginTabs.includes(LoginMethods.Password) &&\n passwordTabMethods.includes('email-password')\n ) {\n // situation 2 邮箱密码登录\n return { specifyDefaultLoginMethod: LoginMethods.Password }\n } else {\n return undefined\n }\n }\n // 通过邮箱密码注册成功\n if (registerMethod === RegisterMethods.Email) {\n if (\n loginTabs.includes(LoginMethods.Password) &&\n passwordTabMethods.includes('email-password')\n ) {\n // situation 1 邮箱密码登录\n return { specifyDefaultLoginMethod: LoginMethods.Password }\n } else if (\n loginTabs.includes(LoginMethods.PhoneCode) &&\n verifyCodeTabMethods.includes('email-code')\n ) {\n // situation 2 邮箱验证码登录\n return {\n specifyDefaultLoginMethod: LoginMethods.PhoneCode,\n lockMethod: 'email-code',\n }\n } else {\n return undefined\n }\n }\n}\n\n// 对用户输入的数据进行校验判断是否是手机号或者邮箱\nexport const getPasswordIdentify = (identity: string): string => {\n return validate('phone', identity) || validate('email', identity)\n ? identity\n : ''\n}\n","export enum LoggerType {\n INFO = 'INFO',\n WARN = 'WARN',\n ERROR = 'ERROR',\n}\n","import some from 'lodash/some'\nimport { getGuardWindow } from '../Guard/core/useAppendConfig'\nimport { i18n } from './locales'\n\nconst isOriginMatched = (\n whitelist: string[],\n corsWhitelist: string[],\n origin: string\n) => {\n const wildcard = require('wildcard')\n\n if (corsWhitelist.includes(origin)) {\n return true\n }\n\n if (\n some(corsWhitelist, (allowedOrigin) => {\n return !!wildcard(allowedOrigin, origin)\n })\n ) {\n return true\n }\n\n if (whitelist.includes(origin)) {\n return true\n }\n\n if (\n some(whitelist, (allowedOrigin) => {\n return !!wildcard(allowedOrigin, origin)\n })\n ) {\n return true\n }\n return false\n}\n\nexport const corsVerification = (\n allowedOrigins: string[] = [],\n corsWhitelist: string[] = []\n) => {\n const guardWindow = getGuardWindow()\n\n if (guardWindow && allowedOrigins.length > 0) {\n const origin = guardWindow.location.origin\n const allowed = isOriginMatched(allowedOrigins, corsWhitelist, origin)\n if (!allowed) {\n throw new Error(\n `${i18n.t('common.corsErrorMessage')}${i18n.t(\n 'common.corsErrorMessage2'\n )}`\n )\n }\n }\n}\n","import { LoggerType } from './interface'\n\nlet logger: Logger\n\nexport class Logger {\n public static printType = [LoggerType.ERROR]\n\n /**\n * 打印日志\n * @param message 日志信息\n * @param type 日志类型\n */\n public static log(message: string, type: LoggerType = LoggerType.INFO) {\n const log = {\n type,\n message,\n }\n console.log(JSON.stringify(log))\n }\n\n public static info(message: string) {\n this.log(message, LoggerType.INFO)\n }\n\n public static warn(message: string) {\n this.log(message, LoggerType.WARN)\n }\n\n public static error(message: string) {\n this.log(message, LoggerType.ERROR)\n }\n}\n\nexport const getLogger = () => {\n if (logger === undefined) logger = new Logger()\n\n return logger\n}\n\nexport const useLogger = getLogger\n","export enum GuardModuleType {\n ERROR = 'error',\n LOGIN = 'login',\n REGISTER = 'register',\n MFA = 'mfa',\n FORGET_PWD = 'forgetPassword',\n FORCED_PASSWORD_RESET = 'forcedPasswordReset',\n NOTICE_PASSWORD_RESET = 'noticePasswordReset',\n FIRST_LOGIN_PASSWORD = 'firstLoginPassword',\n UNSAFE_PASSWORD_RESET = 'unsafePasswordReset',\n DOWNLOAD_AT = 'downloadAT',\n BIND_TOTP = 'bindTotp',\n ANY_QUESTIONS = 'anyQuestions',\n LOGIN_COMPLETE_INFO = 'loginCompleteInfo',\n REGISTER_PASSWORD = 'registerPassword',\n REGISTER_COMPLETE_INFO = 'registerCompleteInfo',\n RECOVERY_CODE = 'recoveryCode',\n SUBMIT_SUCCESS = 'submitSuccess',\n IDENTITY_BINDING_ASK = 'identityBindingAsk',\n IDENTITY_BINDING = 'identityBinding',\n SELF_UNLOCK = 'selfUnlock',\n}\nexport interface GuardModuleAction {\n action: string\n module?: GuardModuleType\n message?: string\n initData?: any\n}\n","import { ApplicationConfig } from '../../AuthingGuard/api'\nimport { assembledRequestHost as utilAssembledRequestHost } from '..'\nimport { GuardComponentConfig, GuardLocalConfig } from '../../Guard/config'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\nimport { AuthingResponse } from '../http'\nimport { GuardHttp } from '../guardHttp'\nimport { corsVerification } from '../corsVerification'\nimport { Logger } from '../logger'\nimport { GuardPageConfig } from '../../Type'\nimport { LoginMethods, RegisterMethods } from '../../AuthingGuard/types'\n\nlet publicConfigMap: Record<string, ApplicationConfig> = {}\n\nexport const getPublicConfig = (appId: string) => publicConfigMap?.[appId]\n\nexport const setPublicConfig = (appId: string, config: ApplicationConfig) => {\n return (publicConfigMap[appId] = config)\n}\n\nconst requestPublicConfig = async (\n appId: string,\n httpClient: GuardHttp\n): Promise<ApplicationConfig> => {\n let res: AuthingResponse<ApplicationConfig>\n\n const { get } = httpClient\n\n try {\n res = await get<ApplicationConfig>(\n `/api/v2/applications/${appId}/public-config`\n )\n } catch (error) {\n Logger.error('Please check your config or network')\n throw new Error('Please check your config or network')\n }\n\n if (res.code !== 200 || !res.data) {\n Logger.error(res?.message ?? 'Please check your config')\n throw new Error(res?.message ?? 'Please check your config')\n }\n\n corsVerification(res.data.allowedOrigins, res.data.corsWhitelist)\n\n setPublicConfig(appId, res.data)\n\n httpClient.setUserpoolId(res.data.userPoolId)\n\n return getPublicConfig(appId)\n}\n\nexport const useMergeDefaultConfig = (\n defaultConfig: GuardLocalConfig,\n config?: GuardComponentConfig\n): GuardLocalConfig | undefined => {\n const [mergedConfig, setMergedConfig] = useState<GuardLocalConfig>()\n\n useEffect(() => {\n setMergedConfig({\n ...defaultConfig,\n ...config,\n })\n }, [defaultConfig, config])\n\n return mergedConfig\n}\n\nconst mergedPublicConfig = (\n config: GuardLocalConfig,\n publicConfig: ApplicationConfig\n): GuardLocalConfig => {\n const mergedPublicConfig: GuardLocalConfig = {\n ...config,\n title: config.title ?? publicConfig.name,\n logo: !!config.logo ? config.logo : publicConfig.logo,\n loginMethods:\n config?.loginMethods ??\n (publicConfig.loginTabs?.list as LoginMethods[]) ??\n [],\n passwordLoginMethods:\n config?.passwordLoginMethods ??\n publicConfig.passwordTabConfig?.enabledLoginMethods ??\n [],\n // 默认登录方式\n defaultLoginMethod:\n config.defaultLoginMethod ??\n (publicConfig.loginTabs.default as LoginMethods),\n // 禁止重制密码\n disableResetPwd: !!(\n config.disableResetPwd ??\n !publicConfig.ssoPageComponentDisplay?.forgetPasswordBtn\n ),\n // 是否自动注册\n autoRegister:\n config.autoRegister ??\n publicConfig.ssoPageComponentDisplay.autoRegisterThenLoginHintInfo,\n registerMethods:\n config.registerMethods ??\n (publicConfig.registerTabs?.list as RegisterMethods[]),\n defaultRegisterMethod:\n config.defaultRegisterMethod ??\n (publicConfig.registerTabs.default as RegisterMethods),\n // 禁止注册\n disableRegister: !!(\n config.disableRegister ??\n !publicConfig.ssoPageComponentDisplay.registerBtn\n ),\n // publicKey\n publicKey: config.publicKey ?? publicConfig.publicKey,\n // 注册协议\n agreementEnabled: config.agreementEnabled ?? publicConfig.agreementEnabled,\n agreements: config.agreements ?? publicConfig.agreements,\n contentCss: config.contentCss ?? publicConfig.css,\n }\n\n return mergedPublicConfig\n}\n\n// host 拼接\nconst assembledRequestHost = (\n config: GuardLocalConfig,\n publicConfig: ApplicationConfig\n) => {\n const host = config?.__internalRequest__\n ? config?.host\n : utilAssembledRequestHost(publicConfig.requestHostname, config?.host!)\n\n return host\n}\n\nexport const useMergePublicConfig = (\n appId?: string,\n config?: GuardLocalConfig,\n httpClient?: GuardHttp,\n setError?: any\n) => {\n const [publicConfig, setPublicConfig] = useState<ApplicationConfig>()\n\n const initPublicConfig = useCallback(async () => {\n if (httpClient && appId) {\n if (!getPublicConfig(appId)) {\n try {\n await requestPublicConfig(appId, httpClient)\n } catch (error) {\n setError(error)\n }\n }\n\n setPublicConfig(getPublicConfig(appId))\n }\n }, [appId, httpClient, setError])\n\n useEffect(() => {\n initPublicConfig()\n }, [initPublicConfig])\n\n return useMemo(() => {\n if (publicConfig && config) {\n return {\n ...mergedPublicConfig(config, publicConfig),\n host: assembledRequestHost(config, publicConfig),\n }\n }\n }, [config, publicConfig])\n}\n\nlet pageConfigMap: Record<string, GuardPageConfig> = {}\n\nexport const getPageConfig = (appId: string) => pageConfigMap?.[appId]\n\nexport const setPageConfig = (appId: string, config: GuardPageConfig) =>\n (pageConfigMap[appId] = config)\n\nexport const requestGuardPageConfig = async (\n appId: string,\n httpClient: GuardHttp\n): Promise<GuardPageConfig> => {\n let res: AuthingResponse<GuardPageConfig>\n\n const { get } = httpClient\n\n try {\n res = await get<GuardPageConfig>(\n `/api/v2/applications/${appId}/components-public-config/guard`\n )\n } catch (error) {\n Logger.error('Please check your config or network')\n throw new Error('Please check your config or network')\n }\n\n if (res.code !== 200 || !res.data) {\n Logger.error(res?.message ?? 'Please check your config')\n throw new Error(res?.message ?? 'Please check your config')\n }\n\n setPageConfig(appId, res.data)\n\n return getPageConfig(appId)\n}\n\nexport const useGuardPageConfig = (\n appId?: string,\n httpClient?: GuardHttp,\n serError?: any\n) => {\n const [pageConfig, setPageConfig] = useState<GuardPageConfig>()\n\n const initPublicConfig = useCallback(async () => {\n if (httpClient && appId) {\n if (!getPageConfig(appId)) {\n try {\n await requestGuardPageConfig(appId, httpClient)\n } catch (error) {\n serError(error)\n }\n }\n\n setPageConfig(getPageConfig(appId))\n }\n }, [appId, httpClient, serError])\n\n useEffect(() => {\n initPublicConfig()\n }, [initPublicConfig])\n\n if (pageConfig) {\n return pageConfig\n }\n}\n",null,null,null,null,null,null,null,null,null,null,null,null,null,"import { AuthenticationClient } from 'authing-js-sdk'\nimport { Lang } from 'authing-js-sdk/build/main/types'\nimport { useEffect, useMemo, useState } from 'react'\nimport { useGlobalAuthClient } from '../AuthClientProvider/AuthClientProvider'\nimport version from '../version'\nimport { GuardLocalConfig } from './config'\n\nlet authClient: AuthenticationClient\n\nconst checkAuthClientProps = (\n client: AuthenticationClient,\n props: {\n appId: string\n tenantId?: string\n }\n): boolean => {\n const { appId, tenantId } = props\n\n if (client.options.appId !== appId) {\n throw new Error(\n 'AuthClientProvider 与 Guard AppId 初始化不同,请检查初始化时传入的 AppId 是否正确'\n )\n }\n\n if (tenantId && client.options.tenantId !== tenantId) {\n throw new Error(\n 'AuthClientProvider 与 Guard TenantId 初始化不同,请检查初始化时传入的 TenantId 是否正确'\n )\n }\n\n return true\n}\n\nexport const initGuardAuthClient = (\n config: GuardLocalConfig,\n appId: string,\n tenantId?: string\n) => {\n const host = config.host\n const lang = config.lang\n\n if (!authClient) {\n try {\n authClient = new AuthenticationClient({\n appHost: host,\n tenantId: tenantId,\n appId,\n lang: lang as Lang,\n requestFrom: `Guard@${version}`,\n onError: (code, msg: any) => {\n console.error(code, msg)\n },\n })\n } catch (error: any) {\n throw error\n }\n }\n\n return authClient\n}\n\nexport const useInitGuardAuthClient = (props: {\n config?: GuardLocalConfig\n appId?: string\n authClient?: AuthenticationClient\n setError?: any\n tenantId?: string\n}) => {\n const { config, appId, setError, tenantId } = props\n const globalClient = useGlobalAuthClient()\n\n const [client, setClient] = useState<AuthenticationClient>()\n\n useEffect(() => {\n if (!config || !appId) return\n\n const host = config.host\n const lang = config.lang\n const propsAuthClient = authClient\n\n // 优先检测 props 中的 authClient 对象\n if (propsAuthClient) {\n try {\n checkAuthClientProps(propsAuthClient, { appId, tenantId })\n\n setClient(propsAuthClient)\n\n return\n } catch (error) {\n setError(error)\n }\n }\n // 如果 props 中的 authClient 对象不存在,则检测全局的 authClient 对象\n if (globalClient) {\n try {\n checkAuthClientProps(globalClient, { appId, tenantId })\n\n setClient(globalClient)\n\n return\n } catch (error) {\n setError(error)\n }\n }\n\n // 如果全局的 authClient 对象也不存在,则初始化一个新的 authClient 对象\n try {\n const authClient = new AuthenticationClient({\n appHost: host,\n tenantId: tenantId,\n appId,\n lang: lang as Lang,\n requestFrom: `Guard@${version}`,\n onError: (code, msg: any) => {\n console.error(code, msg)\n },\n })\n\n setClient(authClient)\n } catch (error) {\n setError(error)\n }\n }, [appId, config, globalClient, setError, tenantId])\n\n useMemo(() => {\n if (!client) return\n authClient = client\n }, [client])\n\n return client\n}\n\nexport const getGuardAuthClient = () => {\n if (!authClient) {\n throw new Error('Please initialize GuardAuthClient')\n }\n\n return authClient\n}\n\nexport const useGuardAuthClient = () => getGuardAuthClient()\n","import { AuthenticationClient, CommonMessage } from 'authing-js-sdk'\nimport { Lang } from 'authing-js-sdk/build/main/types'\nimport { ApplicationConfig } from '../AuthingGuard/api'\nimport { GuardMode } from '../AuthingGuard/types/GuardConfig'\nimport { GuardModuleType } from '../Guard/module'\nimport { FacePlugin } from '../_utils/facePlugin/interface'\n\nexport interface IG2FCProps extends IG2Events {\n appId?: string\n tenantId?: string\n config?: Partial<IG2Config>\n visible?: boolean\n initData?: any\n appendConfig?: GuardAppendConfig\n facePlugin?: FacePlugin\n authClient?: AuthenticationClient\n}\n\nexport interface GuardAppendConfig {\n internalRequest?: boolean\n singleComponent?: boolean\n unAuthFlow?: boolean\n publicConfig?: ApplicationConfig\n pageConfig?: GuardPageConfig\n}\n\nexport interface IG2FCViewProps extends IG2FCProps {\n config: IG2Config\n}\n\nexport interface IG2Config {\n title?: string\n logo?: string\n lang: string\n langRange: string[]\n host: string\n isHost?: boolean // 判断是否处于托管页面\n mode: GuardMode\n clickCloseable: boolean\n escCloseable: boolean\n userpool?: string\n contentCss?: string\n target?: HTMLElement | string\n __internalRequest__?: boolean\n __singleComponent__?: boolean\n __unAuthFlow__?: boolean\n}\n\nconst defaultG2Config: IG2Config = {\n lang: 'zh-CN',\n langRange: ['zh-CN', 'en-US'],\n escCloseable: true,\n clickCloseable: true,\n mode: GuardMode.Normal,\n host: 'https://core.authing.cn',\n}\n\nexport interface IG2Events {\n onLoad?: (authClient: AuthenticationClient) => void\n onLoadError?: (error: CommonMessage) => void\n onClose?: () => void\n onLangChange?: (lang: Lang) => void\n // __codePaser?: (code: number) => Function\n __changeModule?: (moduleName: GuardModuleType, initData?: any) => void\n}\n\nexport const getDefaultG2Config = (): IG2Config => defaultG2Config\n\nexport const LanguageMap: any = {\n 'en-US': 'US',\n en: 'GB',\n 'en-GB': 'GB',\n ja: 'JP',\n 'de-DE': 'DE',\n 'zh-CN': 'CN',\n}\n\nexport enum InputMethod {\n EmailCode = 'email-code',\n PhoneCode = 'phone-code',\n}\n\nexport enum GuardPageSene {\n Global = 'global',\n}\n\nexport interface GuardPageConfig {\n [GuardPageSene.Global]: {\n showChangeLanguage: boolean\n }\n}\n\nexport enum EmailScene {\n // 通知模版\n // - 欢迎邮件 WELCOME\n WELCOME_EMAIL = 'WELCOME_EMAIL',\n // - 首次创建用户通知 FIRST_LOGIN_VERIFY\n FIRST_CREATED_USER = 'FIRST_CREATED_USER',\n\n // 注册/登录验证码模板 VERIFY_CODE\n // - 注册验证码\n REGISTER_VERIFY_CODE = 'REGISTER_VERIFY_CODE',\n // - 登录验证码\n LOGIN_VERIFY_CODE = 'LOGIN_VERIFY_CODE',\n // - MFA 验证\n MFA_VERIFY_CODE = 'MFA_VERIFY_CODE',\n // - 信息补全验证码\n INFORMATION_COMPLETION_VERIFY_CODE = 'INFORMATION_COMPLETION_VERIFY_CODE',\n\n // 验证模版 VERIFY_EMAIL\n // - 首次邮箱登录验证\n FIRST_EMAIL_LOGIN_VERIFY = 'FIRST_EMAIL_LOGIN_VERIFY',\n // - 在控制台发起验证\n CONSOLE_CONDUCTED_VERIFY = 'CONSOLE_CONDUCTED_VERIFY',\n\n // 重置密码模版 RESET_PASSWORD\n // - 重置密码验证码\n RESET_PASSWORD_VERIFY_CODE = 'RESET_PASSWORD_VERIFY_CODE',\n\n // 邮箱绑定模版 CHANGE_EMAIL\n // - 邮箱绑定验证码\n EMAIL_BIND_VERIFY_CODE = 'EMAIL_BIND_VERIFY_CODE',\n // - 邮箱解绑验证码\n EMAIL_UNBIND_VERIFY_CODE = 'EMAIL_UNBIND_VERIFY_CODE',\n // 自助解锁验证码\n SELF_UNLOCKING_VERIFY_CODE = 'SELF_UNLOCKING_VERIFY_CODE',\n}\n",null,null,null,null,null,null,null,null,"import { AuthenticationClient } from 'authing-js-sdk'\nimport React from 'react'\n\nexport interface AuthClientContextProps {\n client: AuthenticationClient\n}\n\nexport const AuthClientContext = React.createContext<\n AuthClientContextProps | undefined\n>(undefined)\n","import React, { useContext } from 'react'\nimport { AuthClientContext, AuthClientContextProps } from './context'\n\nexport const AuthClientProvider: React.FC<AuthClientContextProps> = (props) => {\n const { children, client } = props\n\n const Provider = AuthClientContext.Provider\n\n return <Provider value={{ client }}>{children}</Provider>\n}\n\nexport const useGlobalAuthClient = () => {\n const authClientContext = useContext(AuthClientContext)\n\n return authClientContext?.client\n}\n","export default '3.1.28-rc.1'","import version from './version'\n\nexport default version\n","import { message } from 'antd'\nimport { GuardModuleType } from '.'\nimport { CompleteInfoEvents } from '../CompleteInfo/interface'\nimport { ForgetPasswordEvents } from '../ForgetPassword/interface'\nimport { IdentityBindingEvents } from '../IdentityBinding/interface'\nimport { IdentityBindingAskEvents } from '../IdentityBindingAsk'\nimport { LoginEvents } from '../Login/interface'\nimport { RegisterEvents } from '../Register/interface'\nimport { i18n } from '../_utils/locales'\n\nexport interface GuardEvents\n extends LoginEvents,\n RegisterEvents,\n CompleteInfoEvents,\n ForgetPasswordEvents,\n IdentityBindingEvents,\n IdentityBindingAskEvents {\n onBeforeChangeModule?: (\n key: GuardModuleType,\n initData?: any\n ) => boolean | Promise<boolean>\n}\n\nexport const guardEventsFilter = (props: any, openEventsMapping?: boolean) => {\n const events: GuardEvents = {}\n\n const eventsNameWhiteList = ['__changeModule']\n\n const eventsName = Object.keys(props).filter(\n (name) => name.startsWith('on') || eventsNameWhiteList.includes(name)\n )\n\n eventsName.forEach((eventName) => {\n events[eventName as keyof GuardEvents] = props[eventName]\n })\n\n return guardEventsHijacking(events, openEventsMapping)\n}\n\nconst eventsMapping: Partial<GuardEvents> = {\n onLogin: (user, client) => {\n message.success(i18n.t('common.LoginSuccess'))\n\n if (user) {\n user?.token && client.setToken(user.token)\n client.setCurrentUser(user)\n }\n\n return [user, client]\n },\n\n onRegister: (...props) => {\n message.success(i18n.t('common.registrationSuccess'))\n return props\n },\n}\n\nexport const guardEventsHijacking = (\n events: GuardEvents,\n openEventsMapping?: boolean\n): GuardEvents => {\n const newEvents: GuardEvents = {}\n Object.keys(eventsMapping).forEach((eventsKey) => {\n // @ts-ignore\n newEvents[eventsKey] = (...props) => {\n // @ts-ignore\n openEventsMapping && eventsMapping[eventsKey](...props)\n // @ts-ignore\n events[eventsKey]?.(...props)\n }\n })\n\n return {\n ...events,\n ...newEvents,\n }\n}\n\nexport const GuardEventsCamelToKebabMapping = {\n onLoad: 'load',\n onLoadError: 'load-error',\n onLogin: 'login',\n onBeforeLogin: 'before-login',\n onLoginError: 'login-error',\n onRegister: 'register',\n onBeforeRegister: 'before-register',\n onRegisterError: 'register-error',\n onPwdEmailSend: 'pwd-email-send',\n onPwdEmailSendError: 'pwd-email-send-error',\n onPwdPhoneSend: 'pwd-phone-send',\n onPwdPhoneSendError: 'pwd-phone-send-error',\n onPwdReset: 'pwd-reset',\n onPwdResetError: 'pwd-reset-error',\n onClose: 'close',\n onLoginTabChange: 'login-tab-change',\n onRegisterTabChange: 'register-tab-change',\n onRegisterInfoCompleted: 'register-info-completed',\n onRegisterInfoCompletedError: 'register-info-completed-error',\n onLangChange: 'lang-change',\n} as const\n\nexport interface GuardEventsKebabToCamelType {\n // 加载完成,userPool 配置和应用配置(如果有 appId)加载完成\n load: GuardEvents['onLoad']\n // 加载失败\n 'load-error': GuardEvents['onLoadError']\n // 登录前,即表单校验完成,请求接口前\n 'before-login': GuardEvents['onBeforeLogin']\n // 用户登录成功\n login: GuardEvents['onLogin']\n // 用户登录失败\n 'login-error': GuardEvents['onLoginError']\n // 注册前,即表单校验完成,请求接口前\n 'before-register': GuardEvents['onBeforeRegister']\n // 注册成功\n register: GuardEvents['onRegister']\n // 注册失败\n 'register-error': GuardEvents['onRegisterError']\n // 忘记密码邮件发送成功\n 'pwd-email-send': GuardEvents['onPwdEmailSend']\n // 忘记密码邮件发送失败\n 'pwd-email-send-error': GuardEvents['onPwdEmailSendError']\n // 忘记密码手机验证码发送成功\n 'pwd-phone-send': GuardEvents['onPwdPhoneSend']\n // 忘记密码手机验证码发送失败\n 'pwd-phone-send-error': GuardEvents['onPwdPhoneSendError']\n // 重置密码成功\n 'pwd-reset': GuardEvents['onPwdReset']\n // 重置密码失败\n 'pwd-reset-error': GuardEvents['onPwdResetError']\n // 表单关闭事件\n close: GuardEvents['onClose']\n // 登录的 tab 切换\n 'login-tab-change': GuardEvents['onLoginTabChange']\n // 注册的 tab 切换\n 'register-tab-change': GuardEvents['onRegisterTabChange']\n // 注册信息补充完毕\n 'register-info-completed': GuardEvents['onRegisterInfoCompleted']\n // 注册信息补充失败\n 'register-info-completed-error': GuardEvents['onRegisterInfoCompletedError']\n // 语言切换\n 'lang-change': GuardEvents['onLangChange']\n}\n","import {\n getDefaultG2Config,\n IG2Config,\n IG2Events,\n IG2FCProps,\n IG2FCViewProps,\n} from '../Type'\nimport { SocialConnectionProvider } from 'authing-js-sdk'\nimport { QrCodeAuthenticationClient } from 'authing-js-sdk/build/main/lib/authentication/QrCodeAuthenticationClient'\nimport { Agreement, PasswordLoginMethods } from '../AuthingGuard/api'\nimport {\n PasswordLoginParams,\n LDAPLoginParams,\n ADLoginParams,\n PhoneCodeLoginParams,\n AuthenticationClient,\n User,\n} from '..'\nimport { LoginMethods } from '../AuthingGuard/types'\n\nexport interface LoginConfig extends IG2Config {\n autoRegister?: boolean\n disableResetPwd?: boolean\n disableRegister?: boolean\n defaultLoginMethod?: LoginMethods\n loginMethods?: LoginMethods[]\n passwordLoginMethods?: PasswordLoginMethods[]\n socialConnections?: SocialConnectionProvider[]\n socialConnectionsBtnShape?: 'default' | 'button' | 'icon'\n enterpriseConnections?: string[]\n qrCodeScanOptions?: Parameters<QrCodeAuthenticationClient['startScanning']>[1]\n publicKey?: string\n agreementEnabled?: boolean\n agreements?: Agreement[]\n}\n\nexport interface LoginEvents extends IG2Events {\n onLogin?: (user: User, authClient: AuthenticationClient) => void\n onLoginError?: (errorMessages: any) => void\n onLoginTabChange?: (activeTab: LoginMethods) => void\n onBeforeLogin?: (\n loginInfo:\n | PasswordLoginParams\n | LDAPLoginParams\n | ADLoginParams\n | PhoneCodeLoginParams,\n authClient: AuthenticationClient\n ) => boolean | Promise<boolean>\n}\n\nexport interface GuardLoginProps extends IG2FCProps, LoginEvents {\n config?: Partial<LoginConfig>\n}\nexport interface GuardLoginViewProps extends GuardLoginProps, IG2FCViewProps {\n config: LoginConfig\n}\n\nexport interface GuardLoginInitData {\n specifyDefaultLoginMethod?: LoginMethods //指定登录页默认登录方式\n _firstItemInitialValue?: string //第一个输入框的回填值\n _lockMethod?: string //锁定登录方式\n}\n\nexport const getDefaultLoginConfig = (): LoginConfig => ({\n ...getDefaultG2Config(),\n})\n","import { IG2FCProps, IG2Config, getDefaultG2Config, IG2Events } from '../Type'\nimport {\n AuthenticationClient,\n User,\n EmailRegisterParams,\n PhoneRegisterParams,\n RegisterMethods,\n} from '..'\nimport { Agreement } from '../AuthingGuard/api'\n\nexport interface RegisterConfig extends IG2Config {\n disableRegister?: boolean\n registerMethods?: RegisterMethods[]\n defaultRegisterMethod?: RegisterMethods\n publicKey?: string\n agreementEnabled?: boolean\n agreements?: Agreement[]\n registerContext?: any\n}\n\nconst defaultConfig: RegisterConfig = {\n ...getDefaultG2Config(),\n}\n\nexport interface RegisterEvents extends IG2Events {\n onBeforeRegister?: (\n registerInfo: EmailRegisterParams | PhoneRegisterParams,\n authClient: AuthenticationClient\n ) => boolean | Promise<boolean>\n onRegister?: (user: User, authClient: AuthenticationClient) => void\n onRegisterError?: (error: any) => void\n onRegisterTabChange?: (activeTab: RegisterMethods) => void\n}\n\nexport interface GuardRegisterProps extends IG2FCProps, RegisterEvents {\n config?: Partial<RegisterConfig>\n}\n\nexport interface GuardRegisterViewProps extends GuardRegisterProps {\n config: RegisterConfig\n}\n\nconst getDefaultConfig = (): RegisterConfig => ({\n ...getDefaultG2Config(),\n ...defaultConfig,\n})\n\nexport const getDefaultRegisterConfig = getDefaultConfig\n","import React, { useContext, useMemo } from 'react'\nimport {\n GuardEvents,\n GuardLocalConfig,\n GuardModuleType,\n GuardPageConfig,\n} from '..'\nimport { ApplicationConfig } from '../AuthingGuard/api'\nimport { ModuleState } from '../Guard/GuardModule/stateMachine'\nimport { GuardHttp } from './guardHttp'\n\nexport interface IGuardContext {\n finallyConfig: GuardLocalConfig\n\n defaultMergedConfig: GuardLocalConfig\n\n publicConfig: ApplicationConfig\n\n httpClient: GuardHttp\n\n appId: string\n\n tenantId?: string\n\n initData: any\n\n currentModule: ModuleState\n\n events: Partial<GuardEvents>\n\n changeModule?: (moduleName: GuardModuleType, initData?: any) => Promise<void>\n\n backModule?: () => void\n\n isAuthFlow: boolean\n\n contextLoaded: boolean\n\n guardPageConfig: Partial<GuardPageConfig>\n}\n\nconst DefaultGuardX: IGuardContext = {\n finallyConfig: {} as GuardLocalConfig,\n\n defaultMergedConfig: {} as GuardLocalConfig,\n\n publicConfig: {} as ApplicationConfig,\n\n httpClient: {} as GuardHttp,\n\n appId: '',\n\n initData: {},\n\n currentModule: {} as ModuleState,\n\n events: {} as Partial<GuardEvents>,\n\n isAuthFlow: false,\n\n contextLoaded: false,\n\n guardPageConfig: {} as Partial<GuardPageConfig>,\n}\n\nconst GuardXContext = React.createContext<IGuardContext>(DefaultGuardX)\n\nexport const createGuardXContext = () => {\n const Provider = GuardXContext.Provider\n const Consumer = GuardXContext.Consumer\n\n const guardXProvider: React.FC<{ value: Partial<IGuardContext> }> = ({\n value,\n children,\n }) => {\n return (\n <Provider\n value={{\n ...DefaultGuardX,\n ...value,\n }}\n >\n {children}\n </Provider>\n )\n }\n\n return {\n Provider: guardXProvider,\n Consumer,\n }\n}\n\nexport const useGuardXContext = () => {\n return useMemo(() => {\n const Provider = GuardXContext.Provider\n const Consumer = GuardXContext.Consumer\n\n const guardXProvider: React.FC<{ value: Partial<IGuardContext> }> = ({\n value,\n children,\n }) => {\n return (\n <Provider\n value={{\n ...DefaultGuardX,\n ...value,\n }}\n >\n {children}\n </Provider>\n )\n }\n\n return {\n Provider: guardXProvider,\n Consumer,\n }\n }, [])\n}\n\nexport interface IGuardContextProvider {\n spin: boolean\n spinChange: (spin: boolean) => void\n}\n\nconst GuardButtonContext = React.createContext<IGuardContextProvider>({\n spin: false,\n spinChange: () => {},\n})\n\nexport const useGuardButtonContext = () => {\n const Provider = GuardButtonContext.Provider\n\n const GuardButtonProvider: React.FC = ({ children }) => {\n const [spin, setSpin] = React.useState(false)\n\n return (\n <Provider\n value={{\n spin: spin,\n spinChange: (spin: boolean) => {\n setSpin(spin)\n },\n }}\n >\n {children}\n </Provider>\n )\n }\n\n return {\n GuardButtonProvider,\n }\n}\n\nexport const useGuardButtonState = () => useContext(GuardButtonContext)\n\nexport const useGuardPublicConfig = () => useContext(GuardXContext).publicConfig\n\nexport const useGuardHttpClient = () => useContext(GuardXContext).httpClient\n\nexport const useGuardDefaultMergedConfig = () =>\n useContext(GuardXContext).defaultMergedConfig\n\nexport const useGuardAppId = () => useContext(GuardXContext).appId\n\nexport const useGuardTenantId = () => useContext(GuardXContext).tenantId\n\nexport function useGuardInitData<T>(): T {\n const { initData } = useContext(GuardXContext)\n return initData as T\n}\n\nexport const useGuardCurrentModule = () =>\n useContext(GuardXContext).currentModule\n\nexport const useGuardEvents = () => useContext(GuardXContext).events\n\nexport const useGuardModule = () => {\n const guardX = useContext(GuardXContext)\n\n return {\n changeModule: guardX.changeModule,\n backModule: guardX.backModule,\n }\n}\n\nexport const useGuardFinallyConfig = () =>\n useContext(GuardXContext).finallyConfig\n\nexport const useGuardContextLoaded = () =>\n useContext(GuardXContext).contextLoaded\n\nexport const useGuardIsAuthFlow = () => useContext(GuardXContext).isAuthFlow\n\nexport const useGuardPageConfig = () =>\n useContext(GuardXContext).guardPageConfig\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"style\", null, \"\\n #path-f {\\n fill: none;\\n stroke: #0080ff;\\n stroke-width: 8.2;\\n stroke-dasharray: 100 220;\\n animation: dash 40s infinite linear forwards;\\n stroke-linecap: round;\\n stroke-linejoin: round;\\n\\n }\\n #path-b {\\n fill: none;\\n stroke: #eaebee;\\n stroke-width: 8;\\n stroke-linecap: round;\\n stroke-linejoin: round;\\n }\\n @keyframes dash {\\n to {\\n stroke-dashoffset: 12000;\\n }\\n }\\n \");\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"\\\\u5355\\\\u72EC\",\n transform: \"translate(25.000000, 16.000000)\",\n fillRule: \"nonzero\",\n strokeWidth: 2\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50,0 L0,30 C0,31 0,32 0,33 C0,69 20,100 50,116 C79,100 100,69 100,33 C100,32 99,31 99,30 L50,0 Z\",\n id: \"path-b\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50,0 L0,30 C0,31 0,32 0,33 C0,69 20,100 50,116 C79,100 100,69 100,33 C100,32 99,31 99,30 L50,0 Z\",\n id: \"path-f\"\n}));\n\nfunction SvgLoading(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 150 150\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), _ref2, title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Loading\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLoading);\nexport default __webpack_public_path__ + \"static/media/loading.3cf0104f.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\nimport { ReactNode } from 'react'\nimport { GuardModuleType } from '.'\nimport { getDefaultLoginConfig, LoginConfig } from '../Login/interface'\nimport { getDefaultRegisterConfig, RegisterConfig } from '../Register/interface'\nimport { ShieldSpin } from '../ShieldSpin'\n\nexport interface GuardComponentConfig extends Partial<GuardLocalConfig> {}\n\nexport enum QrCodeScanType {\n appQrcode = 'appQrcode',\n wechatMiniQrcode = 'wechatMiniQrcode',\n wechatmpQrcode = 'wechatmpQrcode',\n}\nexport interface QrCodeScanOptions {\n qrcode: string\n}\n\nexport interface GuardLocalConfig extends RegisterConfig, LoginConfig {\n isSSO?: boolean\n defaultScenes?: GuardModuleType\n defaultInitData?: any\n showLoading?: boolean\n loadingComponent?: ReactNode\n /**\n * @description 是否调用 eventsMapping 中的事件\n */\n openEventsMapping?: boolean\n _qrCodeScanOptions?: Record<QrCodeScanType, QrCodeScanOptions>\n}\n\nlet defaultConfig: GuardLocalConfig = {\n ...getDefaultLoginConfig(),\n ...getDefaultRegisterConfig(),\n isSSO: false,\n defaultInitData: {},\n showLoading: true,\n openEventsMapping: true,\n loadingComponent: (\n <div className=\"g2-init-setting-loading\">\n <ShieldSpin size={100} />\n </div>\n ),\n}\n\nexport const getDefaultGuardLocalConfig = (): GuardLocalConfig => {\n return defaultConfig\n}\n","import React from 'react'\nimport { useGuardPublicConfig } from '../_utils/context'\n\n//@ts-ignore\nimport { ReactComponent as ShieldSpinLoading } from './loading.svg'\ninterface IG2SpinProps {\n size?: number\n}\n\nexport const ShieldSpin = (props: IG2SpinProps) => {\n const publicConfig = useGuardPublicConfig()\n let size = props.size ? props.size : 50\n\n return (\n <div\n style={{\n width: size,\n height: size,\n }}\n >\n {publicConfig?.customLoading ? (\n <img src={publicConfig.customLoading} alt=\"\" width={size} />\n ) : (\n <ShieldSpinLoading />\n )}\n </div>\n )\n}\n\nexport const Spin = () => (\n <div className=\"g2-init-setting-loading\">\n <ShieldSpin size={100} />\n </div>\n)\n","import { GuardComponentConfig, GuardLocalConfig } from '../config'\nimport { GuardModuleType } from '../module'\nimport isEqual from 'lodash/isEqual'\nimport { getGuardWindow } from '../core/useAppendConfig'\n\nexport interface ModuleState {\n moduleName: GuardModuleType\n initData?: any\n}\n\nexport enum ActionType {\n ChangeModule = 'ChangeModule',\n Back = 'Back',\n Init = 'Init',\n}\n\nexport interface StateMachineLog {\n action: ActionType\n date: number\n dataSource: ModuleState\n}\n\nexport type ChangeModuleEvent = (\n nextModule: GuardModuleType,\n initData?: any\n) => void\n\nlet guardStateMachine: GuardStateMachine\n\nexport class GuardStateMachine {\n // 计数器\n private order: number = 0\n\n // 总体的配置信息\n private config: GuardComponentConfig = {}\n\n // 历史记录\n private moduleStateHistory: ModuleState[] = []\n\n private changeModuleEvent: ChangeModuleEvent\n\n // Log\n private stateMachineLog: Record<number, StateMachineLog> = {}\n\n constructor(changeModuleEvent: ChangeModuleEvent, initData: ModuleState) {\n this.changeModuleEvent = changeModuleEvent\n\n this.globalWindow()?.addEventListener('popstate', this.onPopstate)\n\n this.historyPush(initData, ActionType.Init)\n }\n\n uninstallPopstate = () => {\n this.globalWindow()?.removeEventListener('popstate', this.onPopstate)\n }\n\n globalWindow = (): Window | undefined => {\n const guardWindow = getGuardWindow()\n\n return guardWindow ?? undefined\n }\n\n next = (nextModule: GuardModuleType, initData: any) => {\n const globalWindow = this.globalWindow()\n\n const moduleData: ModuleState = {\n moduleName: nextModule,\n initData,\n }\n this.changeModuleEvent(nextModule, initData)\n\n const prevModuleData = this.moduleStateHistory.slice(1, 2)[0]\n\n if (this.isUseHistoryHijack()) {\n globalWindow?.history.pushState(\n nextModule,\n '',\n globalWindow?.location.href\n )\n }\n\n // 快照history\n if (prevModuleData && isEqual(prevModuleData, moduleData)) {\n this.back()\n } else {\n this.historyPush(moduleData)\n }\n\n // console.log('next Log', this.stateMachineLog)\n // console.log('next History', this.moduleStateHistory)\n }\n\n back = (initData: any = {}) => {\n if (this.moduleStateHistory.length <= 1) return\n const backModule = this.moduleStateHistory[1]\n\n this.changeModuleEvent(backModule.moduleName, {\n ...initData,\n ...backModule.initData,\n })\n this.moduleStateHistory.splice(0, 1)\n\n // console.log('back Log', this.stateMachineLog)\n }\n\n // 业务终点 Log 发送\n end = () => {\n // console.log('业务终点 Log', this.stateMachineLog)\n // TODO 请求\n }\n\n historyPush = (\n data: ModuleState,\n actionType: ActionType = ActionType.ChangeModule\n ) => {\n this.moduleStateHistory.unshift(data)\n\n this.stateMachineLog[this.order++] = {\n action: actionType,\n date: new Date().getTime(),\n dataSource: data,\n }\n\n if (this.moduleStateHistory.length > 10)\n this.moduleStateHistory.splice(10, this.moduleStateHistory.length - 10)\n }\n\n historyBack = (data: ModuleState) => {\n if (this.moduleStateHistory.length <= 1) return\n\n this.moduleStateHistory.splice(0, 1)\n\n this.stateMachineLog[this.order++] = {\n action: ActionType.Back,\n date: new Date().getTime(),\n dataSource: data,\n }\n }\n\n setConfig = (config: GuardLocalConfig) => {\n this.config = config\n }\n\n isUseHistoryHijack = () => {\n return this.globalWindow()?.location.href !== 'about:blank'\n }\n\n onPopstate = () => {\n this.back()\n }\n}\n\n// export const useHistoryHijack = (back?: () => void) => {\n// const globalWindow = getGuardWindow()\n\n// const isUseHistoryHijack = useMemo(\n// () => globalWindow?.location.href !== 'about:blank',\n\n// [globalWindow?.location.href]\n// )\n\n// const next = (state: any = {}) => {\n// if (!isUseHistoryHijack) {\n// return\n// }\n\n// globalWindow?.history.pushState(state, '', globalWindow?.location.href)\n// }\n\n// useEffect(() => {\n// if (!isUseHistoryHijack) {\n// return () => {}\n// }\n\n// const onPopstate = () => {\n// back?.()\n// }\n\n// back && globalWindow?.addEventListener('popstate', onPopstate)\n\n// return () => {\n// back && globalWindow?.removeEventListener('popstate', onPopstate)\n// }\n// }, [back, globalWindow, isUseHistoryHijack])\n\n// return [next]\n// }\n\nexport const initGuardStateMachine = (\n changeMouleEvent: ChangeModuleEvent,\n initData: ModuleState\n) => {\n guardStateMachine = new GuardStateMachine(changeMouleEvent, initData)\n return guardStateMachine\n}\n\nexport const getGuardStateMachine = () => {\n if (!guardStateMachine) throw new Error('Please initialize GuardStateMachine')\n\n return guardStateMachine\n}\n\nexport const useGuardStateMachine = () => getGuardStateMachine()\n","let flowHandleStorage: string | undefined\n\nexport const getFlowHandle = () => {\n return flowHandleStorage\n}\n\nexport const useFlowHandle = getFlowHandle\n\nexport const updateFlowHandle = (flowHandle: string) => {\n flowHandleStorage = flowHandle\n}\n\nexport const useUpdateFlowHandle = updateFlowHandle\n","import qs from 'qs'\nimport { i18n } from './locales'\nimport { CodeAction } from './responseManagement/interface'\nimport Axios, { AxiosRequestConfig, CancelTokenSource } from 'axios'\nexport const requestClient = async (...rest: Parameters<typeof fetch>) => {\n const res = await fetch(...rest)\n return res.json()\n}\n\nexport interface AuthingResponse<T = any> {\n code?: number\n statusCode?: number\n apiCode?: number\n data?: T\n messages?: string\n message?: string\n flowHandle?: string\n}\n\nexport interface AuthingGuardResponse<T = any> extends AuthingResponse<T> {\n onGuardHandling?: () => CodeAction\n isFlowEnd?: boolean\n}\n\nconst timeoutAction = (cancel: CancelTokenSource['cancel']) => {\n const timer: number = 10\n return new Promise((resolve) => {\n setTimeout(() => {\n const response = {\n data: {\n code: -1,\n },\n }\n resolve(response)\n\n cancel() // 发送终止信号\n }, timer * 1000)\n })\n}\n\nrequestClient.get = async <T>(\n path: string,\n query: Record<string, any> = {},\n init?: AxiosRequestConfig\n): Promise<AuthingResponse<T>> => {\n // let controller = new AbortController()\n // let signal = controller.signal\n\n const headers: Record<string, any> = {\n ...init?.headers,\n 'Content-Type': 'application/json',\n [requestClient.langHeader]: i18n.language,\n }\n\n if (requestClient.tenantId !== '')\n headers[requestClient.tenantHeader] = requestClient.tenantId\n try {\n const CancelToken = Axios.CancelToken\n const source = CancelToken.source()\n\n const res: any = await Promise.race([\n timeoutAction(source.cancel),\n Axios(\n `${requestClient.baseUrl}${path}${qs.stringify(query, {\n addQueryPrefix: true,\n })}`,\n {\n method: 'GET',\n ...init,\n withCredentials: true,\n headers,\n cancelToken: source.token,\n }\n ),\n ])\n return res?.data\n } catch (e) {\n return Promise.resolve({\n code: -2,\n })\n }\n}\n\nrequestClient.post = async <T>(\n path: string,\n data: any,\n config?: {\n headers: any\n }\n): Promise<AuthingResponse<T>> => {\n // let controller = new AbortController()\n // let signal = controller.signal\n\n const headers: Record<string, any> = {\n ...config?.headers,\n 'Content-Type': 'application/json',\n [requestClient.langHeader]: i18n.language,\n }\n\n if (requestClient.tenantId !== '')\n headers[requestClient.tenantHeader] = requestClient.tenantId\n\n try {\n const CancelToken = Axios.CancelToken\n const source = CancelToken.source()\n\n const res: any = await Promise.race([\n timeoutAction(source.cancel),\n Axios(`${requestClient.baseUrl}${path}`, {\n data,\n method: 'POST',\n withCredentials: true,\n cancelToken: source.token,\n headers: {\n 'Content-Type': 'application/json',\n ...config?.headers,\n [requestClient.langHeader]: i18n.language,\n },\n }),\n ])\n return res?.data\n } catch (e) {\n return Promise.resolve({\n code: -2,\n })\n }\n\n // const res = await fetch(`${requestClient.baseUrl}${path}`, {\n // method: 'POST',\n // body: JSON.stringify(data),\n // credentials: 'include',\n // headers: {\n // 'Content-Type': 'application/json',\n // ...config?.headers,\n // [requestClient.langHeader]: i18n.language,\n // },\n // })\n}\n\nrequestClient.postForm = async <T>(\n path: string,\n formData: any,\n config?: {\n headers: any\n }\n): Promise<AuthingResponse<T>> => {\n // let controller = new AbortController()\n // let signal = controller.signal\n try {\n const CancelToken = Axios.CancelToken\n const source = CancelToken.source()\n\n const res: any = await Promise.race([\n timeoutAction(source.cancel),\n Axios(`${requestClient.baseUrl}${path}`, {\n method: 'POST',\n data: formData,\n withCredentials: true,\n cancelToken: source.token,\n headers: {\n ...config?.headers,\n [requestClient.langHeader]: i18n.language,\n },\n }),\n ])\n\n return res?.data\n } catch (e) {\n return Promise.resolve({\n code: -2,\n })\n }\n}\n\nrequestClient.baseUrl = ''\nrequestClient.setBaseUrl = (base: string) => {\n requestClient.baseUrl = base.replace(/\\/$/, '')\n}\n\nconst DEFAULT_LANG_HEADER = 'x-authing-lang'\nconst DEFAULT_TENANT_HEADER = 'x-authing-app-tenant-idåå'\nrequestClient.langHeader = DEFAULT_LANG_HEADER\nrequestClient.tenantHeader = DEFAULT_TENANT_HEADER\nrequestClient.tenantId = ''\n\nrequestClient.setLangHeader = (key: string | undefined) => {\n requestClient.langHeader = key || DEFAULT_LANG_HEADER\n}\n\nrequestClient.setTenantHeader = (key: string | undefined) => {\n requestClient.tenantHeader = key || DEFAULT_LANG_HEADER\n}\n\nrequestClient.setTenantId = (tenantId: string) => {\n requestClient.tenantId = tenantId\n}\n","import { message } from 'antd'\nimport { getHundreds } from '..'\nimport { AuthingGuardResponse, AuthingResponse } from '../http'\nimport { i18n } from '../locales'\nimport { ApiCode, CodeAction } from './interface'\n\nexport const errorCodeInterceptor: (\n res: AuthingResponse<any>,\n callBack: (code: CodeAction, res: AuthingResponse) => AuthingGuardResponse\n) => AuthingResponse<any> = (res, callBack) => {\n if (res.code === -1) {\n message.error(i18n.t('common.timeout'))\n\n return res\n }\n if (res.code === -2) {\n message.error(i18n.t('common.fetchError'))\n\n return res\n }\n\n if (!res.statusCode) return res\n\n const statusCode = res.statusCode\n\n const apiCode = res.apiCode\n\n // if ([6].includes(getHundreds(statusCode))) {\n // callBack(CodeAction.RENDER_MESSAGE, res)\n\n // return res\n // }\n\n // TODO 临时逻辑 如果有 Code 的话 先不走 statusCode 的行为\n // 否则会出现 messages 渲染两次的问题\n // if (!!res.code) return res\n\n switch (getHundreds(statusCode)) {\n case 3:\n if (apiCode === ApiCode.FLOW_END) {\n return callBack(CodeAction.FLOW_END, res)\n } else {\n return callBack(CodeAction.CHANGE_MODULE, res)\n }\n\n case 4:\n case 6:\n return callBack(CodeAction.RENDER_MESSAGE, res)\n\n default:\n break\n }\n\n return res\n}\n","import version from '../version'\nimport { getFlowHandle } from './flowHandleStorage'\nimport { AuthingGuardResponse, AuthingResponse, requestClient } from './http'\nimport { errorCodeInterceptor } from './responseManagement'\nimport { CodeAction } from './responseManagement/interface'\n\nlet httpClient: GuardHttp\n\nenum InterceptorName {\n ERROR_CODE = 'errorCode',\n}\n\ntype ResponseInterceptor = (res: AuthingResponse) => AuthingResponse\n\nexport class GuardHttp {\n private requestClient: any\n private headers: Record<string, string> = {\n 'x-authing-userpool-id': '',\n 'x-authing-app-id': '',\n 'x-authing-sdk-version': version,\n 'x-authing-request-from': `Guard@${version}`,\n }\n\n private responseInterceptorMap: Map<\n InterceptorName,\n ResponseInterceptor\n > = new Map()\n\n constructor(baseUrl?: string) {\n if (!baseUrl) return\n this.getRequestClient().setBaseUrl(baseUrl)\n }\n\n private getRequestClient() {\n if (!this.requestClient) {\n this.requestClient = requestClient\n }\n\n return this.requestClient\n }\n\n setUserpoolId(userpoolId: string) {\n this.headers['x-authing-userpool-id'] = userpoolId\n return this\n }\n\n setAppId(appId: string) {\n this.headers['x-authing-app-id'] = appId\n return this\n }\n\n setTenantId(tenantId: string) {\n this.headers['x-authing-app-tenant-id'] = tenantId\n return this\n }\n\n setBaseUrl(baseUrl: string) {\n this.getRequestClient().setBaseUrl(baseUrl)\n return this\n }\n\n public getHeaders = () => this.headers\n\n public get = async <T = any>(\n path: string,\n query: Record<string, any> = {},\n config?: any\n ): Promise<AuthingGuardResponse<T>> => {\n const res = await requestClient.get<T>(path, query, {\n ...config,\n headers: { ...this.headers, ...config?.headers },\n })\n return this.responseIntercept(res)\n }\n\n public post = async <T = any>(\n path: string,\n data: any,\n config?: {\n headers: any\n }\n ): Promise<AuthingGuardResponse<T>> => {\n const res = await requestClient.post<T>(path, data, {\n headers: {\n ...this.headers,\n ...config?.headers,\n },\n })\n return this.responseIntercept(res)\n }\n\n public postForm = async <T = any>(\n path: string,\n formData: any,\n config?: {\n headers: any\n }\n ): Promise<AuthingGuardResponse<T>> => {\n const res = await requestClient.postForm<T>(path, formData, {\n headers: {\n ...this.headers,\n ...config?.headers,\n },\n })\n\n return this.responseIntercept(res)\n }\n\n public authFlow = async <T = any>(\n action: string,\n data?: any\n ): Promise<AuthingGuardResponse<T>> => {\n const flowPath = '/interaction/authFlow'\n\n const flowHandle = getFlowHandle()\n\n const requestData = {\n action,\n data,\n flowHandle,\n }\n\n const res = await requestClient.post<T>(flowPath, requestData, {\n headers: {\n ...this.headers,\n },\n })\n\n return this.responseIntercept(res)\n }\n\n // 初始化 Error code 拦截器\n public initErrorCodeInterceptor = (\n callBack: (code: CodeAction, res: AuthingResponse) => AuthingGuardResponse\n ) => {\n // 初始化 errorCode 响应拦截器\n if (this.responseInterceptorMap.has(InterceptorName.ERROR_CODE)) return\n\n this.responseInterceptorMap.set(\n InterceptorName.ERROR_CODE,\n (res) => errorCodeInterceptor(res, callBack) // 传入调度拦截器回调\n )\n\n return this\n }\n\n public responseIntercept: (res: AuthingResponse) => AuthingGuardResponse = (\n res\n ) => {\n if (this.responseInterceptorMap.size === 0) return res\n\n const interceptors = Array.from(this.responseInterceptorMap.values())\n\n return interceptors.reduce((acc, cur) => cur(acc), res)\n }\n}\n\nexport const initGuardHttp = (baseUrl: string) => {\n if (!httpClient) {\n const guardHttp = new GuardHttp(baseUrl)\n httpClient = guardHttp\n }\n\n return httpClient\n}\n\nexport const getGuardHttp = () => {\n if (!httpClient) {\n throw new Error('Please initialize Http Client')\n }\n\n return httpClient\n}\n\nexport const useGuardHttp = () => getGuardHttp()\n","export enum ErrorCode {\n OTP_MFA_CODE = 1635,\n APP_MFA_CODE = 1636,\n INPUT_CAPTCHACODE = 2000,\n USER_EXISTENCE = 2026,\n LOGIN_INVALID = 2021,\n PASSWORD_ERROR = 2333,\n USER_NOT_EXIST = 2004,\n MULTIPLE_ERROR_LOCK = 2057,\n ACCOUNT_LOCK = 2005,\n}\n","import { User } from '..'\nimport { getGuardHttp } from '../_utils/guardHttp'\n\nexport interface SessionData {\n session: null | {\n _id: string\n cookie: {\n originalMaxAge: number\n expires: Date\n secure: boolean\n httpOnly: boolean\n path: string\n sameSite: string\n }\n appId?: string\n type: string\n userId: string\n }\n userInfo?: User\n}\n\nexport const trackSession = async () => {\n const { get } = getGuardHttp()\n return await get<SessionData>(`/cas/session`, {})\n}\n","export const GenerateSvg = (guardDocument: Document, svgString: string) => {\n const svgDOM = () => {\n const tempDiv = guardDocument.createElement('div')\n\n tempDiv.innerHTML = svgString\n\n const tempSVG = tempDiv.getElementsByTagName('svg')[0]\n\n tempSVG.setAttribute('aria-hidden', 'true')\n tempSVG.id = 'guard-svg-string'\n tempSVG.style.position = 'absolute'\n tempSVG.style.width = '0'\n tempSVG.style.height = '0'\n tempSVG.style.overflow = 'hidden'\n\n const body = guardDocument.body\n\n body.firstChild\n ? body.insertBefore(tempSVG, body.firstChild)\n : body.appendChild(tempSVG)\n }\n\n const readyState = guardDocument.readyState\n\n if (['complete', 'loaded', 'interactive'].includes(readyState)) {\n setTimeout(() => {\n svgDOM()\n }, 0)\n } else {\n const loadedFn = function () {\n guardDocument.removeEventListener('DOMContentLoaded', loadedFn)\n\n svgDOM()\n }\n\n guardDocument.addEventListener('DOMContentLoaded', loadedFn)\n }\n}\n","import { GuardProps } from '..'\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useState,\n} from 'react'\nimport { useInitGuardAuthClient } from '../authClient'\nimport { GuardEvents, guardEventsFilter } from '../event'\nimport { insertStyles, removeStyles } from '../../_utils'\nimport { getDefaultGuardLocalConfig } from '../config'\nimport { GuardModuleType } from '../module'\n\nimport {\n GuardStateMachine,\n initGuardStateMachine,\n ModuleState,\n} from '../GuardModule/stateMachine'\nimport { AuthenticationClient } from '../..'\nimport { ApplicationConfig } from '../../AuthingGuard/api'\nimport { SessionData, trackSession } from '../sso'\nimport {\n getPublicConfig,\n useMergeDefaultConfig,\n useMergePublicConfig,\n useGuardPageConfig,\n} from '../../_utils/config'\nimport { GuardHttp, initGuardHttp } from '../../_utils/guardHttp'\nimport { initI18n } from '../../_utils/locales'\nimport { useGuardXContext } from '../../_utils/context'\nimport { useGuardIconfont } from '../../IconFont/useGuardIconfont'\nimport { useInitGuardAppendConfig } from './useAppendConfig'\nimport { useInitAppId } from '../../_utils/initAppId'\nimport { updateFlowHandle } from '../../_utils/flowHandleStorage'\n\ninterface IBaseAction<T = string, P = any> {\n type: T & string\n payload?: Partial<P>\n}\n\nexport const RenderContext: React.FC<{\n guardProps: GuardProps\n initState: ModuleState\n}> = ({ guardProps, initState, children }) => {\n const { tenantId, config } = guardProps\n\n const [events, setEvents] = useState<GuardEvents>()\n const [authClint, setAuthClint] = useState<AuthenticationClient>()\n const [httpClient, setHttpClient] = useState<GuardHttp>()\n const [publicConfig, setPublicConfig] = useState<ApplicationConfig>()\n const [cdnBase, setCdnBase] = useState<string>()\n const [error, setError] = useState()\n const [isAuthFlow, setIsAuthFlow] = useState(true)\n\n const appId = useInitAppId(guardProps.appId, guardProps.authClient, setError)\n\n useInitGuardAppendConfig(appId, guardProps.appendConfig)\n\n // 状态机\n const [\n guardStateMachine,\n setGuardStateMachine,\n ] = useState<GuardStateMachine>()\n\n const { Provider } = useGuardXContext()\n\n // modules 定义\n const moduleReducer: (\n state: ModuleState,\n action: IBaseAction<GuardModuleType, ModuleState>\n ) => ModuleState = (state, { type, payload }) => {\n return {\n moduleName: type,\n initData: payload?.initData,\n }\n }\n\n // Modules Reducer\n const [moduleState, changeModule] = useReducer(moduleReducer, initState)\n\n // Flow Handle init\n useEffect(() => {\n if (initState.initData?.flowHandle) {\n updateFlowHandle(initState.initData.flowHandle)\n }\n }, [initState.initData])\n\n // Change Module\n const onChangeModule = useCallback(\n async (moduleName: GuardModuleType, initData: any = {}) => {\n if (\n !events?.onBeforeChangeModule ||\n (await events.onBeforeChangeModule(moduleName, initData))\n ) {\n changeModule({\n type: moduleName,\n payload: {\n initData: initData ?? {},\n },\n })\n }\n },\n [events]\n )\n\n // 合并默认值\n const defaultMergedConfig = useMergeDefaultConfig(\n getDefaultGuardLocalConfig(),\n config\n )\n\n // HttpClient\n useEffect(() => {\n if (!appId || !defaultMergedConfig) return\n\n const httpClient = initGuardHttp(defaultMergedConfig.host)\n httpClient.setAppId(appId)\n tenantId && httpClient.setTenantId(tenantId)\n\n setHttpClient(httpClient)\n }, [appId, defaultMergedConfig, tenantId])\n\n const finallyConfig = useMergePublicConfig(\n appId,\n defaultMergedConfig,\n httpClient,\n setError\n )\n\n // guardPageConfig\n const guardPageConfig = useGuardPageConfig(appId, httpClient, setError)\n\n const sdkClient = useInitGuardAuthClient({\n config: finallyConfig,\n appId,\n tenantId,\n setError,\n authClient: guardProps.authClient,\n })\n\n // iconfont\n const iconfontLoaded = useGuardIconfont(cdnBase)\n\n // SSO 登录\n useEffect(() => {\n if (!config?.isSSO || !authClint || !events || !httpClient) return\n\n trackSession().then((sessionData) => {\n // 这个接口没有 code, data, 直接返回了数据\n let typedData = (sessionData as unknown) as SessionData\n if (typedData.userInfo) {\n events?.onLogin?.(typedData.userInfo, authClint!)\n }\n })\n }, [appId, authClint, config?.isSSO, events, httpClient])\n\n useEffect(() => {\n if (httpClient && finallyConfig) {\n httpClient?.setBaseUrl(finallyConfig.host)\n }\n }, [finallyConfig, httpClient])\n\n // I18n\n useEffect(() => {\n // TODO 国际化 这部分有点小问题 等待优化\n initI18n({}, config?.lang)\n }, [config?.lang])\n\n useEffect(() => {\n if (!appId) return\n\n const publicConfig = getPublicConfig(appId)\n\n if (!publicConfig) return\n\n setPublicConfig(publicConfig)\n\n setCdnBase(publicConfig.cdnBase)\n }, [appId, finallyConfig])\n\n // AuthClient\n useEffect(() => {\n setAuthClint(sdkClient)\n }, [sdkClient])\n\n // initEvents\n useEffect(() => {\n if (!defaultMergedConfig) return\n\n const events = guardEventsFilter(\n {\n ...guardProps,\n },\n defaultMergedConfig?.openEventsMapping\n )\n setEvents(events)\n }, [guardProps, defaultMergedConfig])\n\n // 状态机相关\n useEffect(() => {\n const guardStateMachine = initGuardStateMachine(onChangeModule, initState)\n setGuardStateMachine(guardStateMachine)\n\n return () => {\n guardStateMachine.uninstallPopstate()\n }\n }, [initState, onChangeModule])\n\n // 自定义 CSS 处理\n useEffect(() => {\n if (finallyConfig && finallyConfig.contentCss)\n insertStyles(finallyConfig.contentCss, 'appConfig')\n\n return () => removeStyles('appConfig')\n }, [finallyConfig])\n\n // 是否使用 Guard auth flow\n useEffect(() => {\n if (!finallyConfig) return\n\n setIsAuthFlow(!Boolean(finallyConfig?.__unAuthFlow__))\n }, [finallyConfig])\n\n const moduleEvents = useMemo(() => {\n if (!events && !guardStateMachine) return undefined\n return {\n changeModule: async (moduleName: GuardModuleType, initData?: any) => {\n guardStateMachine?.next(moduleName, initData)\n },\n backModule: () => {\n guardStateMachine?.back()\n },\n }\n }, [events, guardStateMachine])\n\n const contextLoaded = useMemo(() => {\n const list = [\n appId,\n events,\n defaultMergedConfig,\n finallyConfig,\n httpClient,\n moduleEvents,\n publicConfig,\n authClint,\n guardPageConfig,\n iconfontLoaded,\n ]\n\n return !list.includes(undefined) && !list.includes(false)\n }, [\n appId,\n events,\n defaultMergedConfig,\n finallyConfig,\n httpClient,\n moduleEvents,\n publicConfig,\n authClint,\n guardPageConfig,\n iconfontLoaded,\n ])\n\n // TODO 触发 onLoad 事件\n useEffect(() => {\n if (!contextLoaded) return\n\n events?.onLoad?.(authClint!)\n }, [authClint, contextLoaded, events])\n\n const contextValues = useMemo(\n () =>\n contextLoaded\n ? {\n contextLoaded,\n isAuthFlow,\n defaultMergedConfig,\n finallyConfig,\n publicConfig,\n httpClient,\n appId,\n tenantId,\n events,\n ...moduleEvents,\n initData: moduleState.initData,\n currentModule: moduleState,\n guardPageConfig,\n }\n : {\n defaultMergedConfig,\n },\n [\n appId,\n contextLoaded,\n defaultMergedConfig,\n events,\n finallyConfig,\n guardPageConfig,\n httpClient,\n isAuthFlow,\n moduleEvents,\n moduleState,\n publicConfig,\n tenantId,\n ]\n )\n\n const renderContext = useMemo(() => {\n if (!contextValues) return null\n\n return <Provider value={contextValues}>{children}</Provider>\n }, [Provider, children, contextValues])\n\n const renderErrorContext = useMemo(() => {\n return (\n <Provider\n value={{\n contextLoaded: true,\n defaultMergedConfig,\n initData: {\n error: error,\n },\n currentModule: {\n moduleName: GuardModuleType.ERROR,\n initData: {\n error,\n },\n },\n }}\n >\n {children}\n </Provider>\n )\n }, [Provider, children, defaultMergedConfig, error])\n\n const render = useMemo(() => {\n if (error) return renderErrorContext\n\n if (contextLoaded || Boolean(defaultMergedConfig)) return renderContext\n\n return null\n }, [\n contextLoaded,\n defaultMergedConfig,\n error,\n renderContext,\n renderErrorContext,\n ])\n\n return render\n}\n","import { AuthenticationClient } from 'authing-js-sdk'\nimport { useEffect, useMemo } from 'react'\nimport { useGlobalAuthClient } from '../AuthClientProvider'\n\nexport interface UseInitAppidProps {\n propsAppid?: string\n propsAuthClient?: AuthenticationClient\n setError?: any\n}\n\nexport const useInitAppId = (\n propsAppid?: string,\n propsAuthClient?: AuthenticationClient,\n setError?: any\n) => {\n const globalAuthClient = useGlobalAuthClient()\n\n const appId = useMemo(() => {\n if (propsAppid) {\n return propsAppid\n } else if (propsAuthClient && propsAuthClient.options.appId) {\n return propsAuthClient.options.appId\n } else if (globalAuthClient && globalAuthClient.options.appId) {\n return globalAuthClient.options.appId\n }\n\n return undefined\n }, [globalAuthClient, propsAppid, propsAuthClient])\n\n useEffect(() => {\n if (appId) return\n\n setError?.(new Error('appId is required'))\n }, [appId, setError])\n\n return appId\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { getGuardWindow } from '../Guard/core/useAppendConfig'\nimport { GenerateSvg } from './iconfont'\nimport Axios from 'axios'\nexport const useGuardIconfont = (cdnBase?: string, setError?: any) => {\n const [loaded, setLoaded] = useState<boolean>(false)\n\n const initIconfont = useCallback(async () => {\n if (!cdnBase) return\n\n try {\n const res = await Axios(`${cdnBase}/svg-string/guard`)\n\n const body = res.data\n\n const guardWindow = getGuardWindow()\n\n if (!guardWindow) return\n\n GenerateSvg(guardWindow.document, body)\n\n setLoaded(true)\n } catch (error) {\n setError(error)\n }\n }, [cdnBase, setError])\n\n useEffect(() => {\n initIconfont()\n }, [initIconfont])\n\n return loaded\n}\n","import {\n GuardMode,\n UserConfig,\n GuardScenes,\n LoginMethods,\n RegisterMethods,\n LocalesConfig,\n} from '../../components/AuthingGuard/types'\nimport { i18n } from '../_utils/locales'\n\n// 个人版 OTP MFA 的 error code\nexport const OTP_MFA_CODE = 1635\n// 企业版手机和短信验证吗 MFA 的 error code\nexport const APP_MFA_CODE = 1636\n\n// 需要验证吗\nexport const NEED_CAPTCHA = 2000\n\nexport const LOGIN_METHODS_MAP: any = () => ({\n [LoginMethods.Password]: i18n.t('login.pwdLogin'),\n [LoginMethods.PhoneCode]: i18n.t('login.verifyCodeLogin'),\n [LoginMethods.AppQr]: i18n.t('login.appScanLogin'),\n [LoginMethods.WxMinQr]: i18n.t('login.scanLogin'),\n [LoginMethods.LDAP]: i18n.t('login.ldapLogin'),\n [LoginMethods.AD]: i18n.t('login.adLogin'),\n [LoginMethods.WechatMpQrcode]: i18n.t('login.wechatmpQrcode'),\n})\n\nexport const REGISTER_METHODS_MAP: any = () => ({\n [RegisterMethods.Email]: i18n.t('login.emailRegister'),\n [RegisterMethods.Phone]: i18n.t('login.phoneRegister'),\n})\n\n// 某些社会化登录会在 tabs 中显示,或者无法在 Guard 中使用,所以底部不显示了\nexport const HIDE_SOCIALS = [\n 'wechat:miniprogram:app-launch',\n 'wechat:miniprogram:qrconnect',\n // 'wechat:webpage-authorization',\n 'wechat:miniprogram:default',\n 'wechatwork:addressbook',\n 'wechat:mobile',\n 'landray',\n]\n\nexport const HIDE_SOCIALS_SHOWIN_ENTERPRISE = [\n 'dingtalk',\n 'lark-public',\n 'lark-internal',\n 'wechatwork:corp:qrconnect',\n 'wechatwork:service-provider:qrconnect',\n 'wechatwork:agency:qrconnect',\n]\n\n// 企业版 MFA 支持的方式\nexport enum ApplicationMfaType {\n SMS = 'SMS',\n EMAIL = 'EMAIL',\n // OTP = 'OTP',\n // FACE = 'FACE',\n // FINGERPRINT = 'FINGERPRINT',\n}\n\nexport const defaultGuardConfig: Partial<UserConfig> = {\n isSSO: false,\n title: 'Authing',\n text: {\n loginTabs: LOGIN_METHODS_MAP(),\n loginBtn: {\n normal: '登录',\n loading: '登录',\n },\n registerBtn: {\n normal: '注册',\n loading: '注册',\n },\n },\n escCloseable: true,\n autoRegister: false,\n clickCloseable: true,\n mode: GuardMode.Normal,\n disableRegister: false,\n disableResetPwd: false,\n defaultScenes: GuardScenes.Login,\n appHost: 'https://core.authing.cn',\n defaultLoginMethod: LoginMethods.Password,\n defaultRegisterMethod: RegisterMethods.Email,\n loginMethods: [LoginMethods.Password, LoginMethods.PhoneCode],\n registerMethods: [RegisterMethods.Email, RegisterMethods.Phone],\n logo:\n 'https://files.authing.co/user-contents/photos/0a4c99ff-b8ce-4030-aaaf-584c807cb21c.png',\n passwordLoginMethods: [\n 'email-password',\n 'username-password',\n 'phone-password',\n ],\n}\n\nexport const defaultLocalesConfig: LocalesConfig = {\n defaultLang: 'zh-CN',\n isShowChange: false,\n}\n\nexport const defaultHeaders: {\n 'userpool-id': string\n 'app-id': string\n 'tenant-id': string\n 'sdk-version': string\n 'request-from': string\n lang: string\n} = {\n 'userpool-id': 'x-authing-userpool-id',\n 'app-id': 'x-authing-app-id',\n 'tenant-id': 'x-authing-app-tenant-id',\n 'request-from': 'x-authing-request-from',\n 'sdk-version': 'x-authing-sdk-version',\n lang: 'x-authing-lang',\n}\n","import React, { FC } from 'react'\nimport { GuardModuleType } from '../../Guard/module'\nimport { createBaseContext } from '../base'\n\nexport interface IModuleContext {\n module: string\n changeModule: React.Dispatch<GuardModuleType>\n setInitData: React.Dispatch<any>\n}\n\nconst [Context, useBaseContext] = createBaseContext<IModuleContext>()\n\nexport const useModule: () => IModuleContext = () => {\n const guardContext = useBaseContext()\n\n return guardContext\n}\n\nexport const ModuleContext: FC<{\n value: IModuleContext\n}> = ({ children = null, value }) => {\n return <Context.Provider value={value}>{children}</Context.Provider>\n}\n","import { useRef, useCallback, useEffect } from 'react'\nimport { GuardModuleType } from '../../Guard/module'\nimport { useModule } from '../../context/module/context'\nimport { useMediaQuery } from 'react-responsive'\nimport phone from 'phone'\n// import { LanguageMap } from '../../Type'\nimport { SocialConnectionProvider } from 'authing-js-sdk'\nimport {\n HIDE_SOCIALS,\n HIDE_SOCIALS_SHOWIN_ENTERPRISE,\n} from '../../AuthingGuard/constants'\nimport {\n isDingtalkBrowser,\n isLarkBrowser,\n // isQQBrowser,\n isQQBuiltInBrowser,\n isSpecialBrowser,\n isWeChatBrowser,\n isWeWorkBuiltInBrowser,\n} from '..'\nimport { ApplicationConfig, SocialConnectionItem } from '../../AuthingGuard/api'\nimport { GuardLocalConfig } from '../../Guard'\nimport { getGuardWindow } from '../../Guard/core/useAppendConfig'\nexport interface PhoneValidResult {\n isValid: boolean\n phoneNumber: string\n countryIso2: string\n countryIso3: string\n countryCode: string\n}\n\nexport const useChangeModule = () => {\n const { module, changeModule, setInitData } = useModule()\n\n const nextModule = (nextModuleType: GuardModuleType, nextData?: any) => {\n if (nextModuleType !== module) changeModule(nextModuleType)\n\n setInitData(nextData ?? {})\n }\n\n return nextModule\n}\n\nlet thisAppId: string = ''\n\nexport const useAppId = (appId?: string) => {\n if (appId) {\n thisAppId = appId\n }\n\n return thisAppId\n}\n\nexport const useDebounce = (\n // 回调函数\n fn: any,\n // 延迟时间\n delay: number\n) => {\n const timer = useRef<{ time: any }>({ time: null })\n const errorBody = useRef<{ body: any }>({ body: null })\n\n useEffect(() => {\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n timer.current.time && clearInterval(timer.current.time)\n }\n }, [])\n\n return useCallback(\n (...args: any[]) => {\n if (timer.current.time) {\n clearTimeout(timer.current.time)\n timer.current.time = null\n }\n timer.current.time = setTimeout(() => {\n // fn.apply(this, args);\n const res = fn(...args)\n timer.current.time = null\n errorBody.current.body = res\n }, delay)\n // if (errorBody.current.body) {\n // return Promise.reject(errorBody.current.body)\n // } else {\n // return Promise.resolve()\n // }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [timer.current, delay]\n )\n}\n\nexport const useMediaSize = () => {\n const isPhoneMedia = useMediaQuery({\n maxWidth: 450,\n })\n\n return {\n isPhoneMedia,\n }\n}\n// shaking 抖动\nexport const useShaking = () => {\n // form input\n const inputs = document.getElementsByClassName('authing-g2-input')\n // 必选协议\n const agreements = document.getElementsByClassName(\n 'authing-agreements-item-invalid'\n )\n const saftyCode = document.getElementsByClassName('authing-g2-code-input')\n\n const bindTotpSecretSave = document.getElementsByClassName(\n 'g2-mfa-bindTotp-secretSave'\n )\n // 挂载 shaking\n const MountShaking = () => {\n Array.from(inputs).forEach((input) => {\n input.classList.add('shaking')\n })\n Array.from(agreements).forEach((agreement) => {\n agreement.classList.add('shaking')\n })\n saftyCode[0] && saftyCode[0].classList.add('shaking')\n bindTotpSecretSave[0] && bindTotpSecretSave[0].classList.add('shaking')\n }\n // 卸载 shaking\n const UnMountShaking = () => {\n Array.from(inputs).forEach((input) => {\n input.classList.remove('shaking')\n })\n Array.from(agreements).forEach((agreement) => {\n agreement.classList.remove('shaking')\n })\n saftyCode[0] && saftyCode[0].classList.remove('shaking')\n bindTotpSecretSave[0] && bindTotpSecretSave[0].classList.remove('shaking')\n }\n return { MountShaking, UnMountShaking }\n}\n\n/**\n * 解析手机号\n * @param fieldValue 字段值\n * @param areaCode 区号\n * @returns\n */\nexport const parsePhone = (\n isInternationSms: boolean,\n fieldValue: string,\n areaCode: string = 'CN'\n) => {\n let countryCode = undefined\n\n let phoneNumber = fieldValue\n // 未开启国家化短信\n if (!isInternationSms) {\n return { phoneNumber, countryCode: undefined }\n }\n // 处理 类似 192*******9 情况\n if (phone(fieldValue, { country: areaCode }).isValid) {\n const parsePhone = phone(fieldValue, {\n country: areaCode,\n }) as PhoneValidResult\n\n countryCode = parsePhone.countryCode as string\n\n phoneNumber = parsePhone.phoneNumber.split(countryCode)[1]\n } else if (phone(fieldValue).isValid) {\n // 处理 +86 19294229909 情况\n const parsePhone = phone(fieldValue) as PhoneValidResult\n\n countryCode = parsePhone.countryCode as string\n\n phoneNumber = parsePhone.phoneNumber.split(countryCode)[1]\n }\n\n return { countryCode, phoneNumber }\n}\n\nexport enum SocialConnectionEvent {\n Message = 'message',\n Auth = 'auth',\n}\n\n/**\n *\n * @param config\n * @returns[socialConnectionObjs 社交身份源连接对象 enterpriseConnectionObjs 企业身份源连接对象 isNoMethod 是否没有身份源 ]\n */\nexport const useMethod: (params: {\n config: GuardLocalConfig\n publicConfig: ApplicationConfig\n}) => any = ({ config, publicConfig }) => {\n const noLoginMethods = !config?.loginMethods?.length\n let enterpriseConnectionObjs: ApplicationConfig['identityProviders']\n if (config.enterpriseConnections) {\n enterpriseConnectionObjs =\n publicConfig?.identityProviders?.filter?.((item) =>\n config.enterpriseConnections!.includes(item.identifier)\n ) || []\n } else {\n enterpriseConnectionObjs = publicConfig?.identityProviders || []\n }\n\n let socialConnectionObjs: (SocialConnectionItem & { action?: string })[]\n\n if (!config.socialConnections) {\n socialConnectionObjs = [...(publicConfig?.socialConnections || [])]\n } else {\n const socials = config.socialConnections\n socialConnectionObjs =\n publicConfig?.socialConnections?.filter?.((item) =>\n socials.includes(item.provider)\n ) ?? []\n }\n\n socialConnectionObjs = socialConnectionObjs\n ?.filter((item) => {\n // 某些社会化登录会在 tabs 中显示,或者无法在 Guard 中使用,所以底部不显示了\n return !HIDE_SOCIALS.includes(item.provider)\n })\n .filter((item: any) => {\n // 某些在企业身份源创建的社交身份源归为企业身份源方式显示\n if (HIDE_SOCIALS_SHOWIN_ENTERPRISE.includes(item.provider)) {\n if (\n !enterpriseConnectionObjs.find(\n (connection: any) => connection.identifier === item.identifier\n )\n ) {\n enterpriseConnectionObjs.push(item)\n }\n return false\n }\n return true\n })\n // // 特殊浏览器登录方式\n // .filter((item) =>\n // isWeChatBrowser()\n // ? item.provider === SocialConnectionProvider.WECHATMP\n // : item.provider !== SocialConnectionProvider.WECHATMP\n // )\n // .filter((item) =>\n // isDingtalkBrowser()\n // ? item.provider !== SocialConnectionProvider.WECHATPC\n // : true\n // )\n // .filter((item) => {\n // if (isLarkBrowser()) {\n // return (\n // item.provider === SocialConnectionProvider.LARK_INTERNAL ||\n // item.provider === SocialConnectionProvider.LARK_PUBLIC\n // )\n // } else {\n // return true\n // }\n // })\n // .filter((item) => {\n // if (isDingtalkBrowser()) {\n // return ![\n // SocialConnectionProvider.APPLE,\n // SocialConnectionProvider.APPLE_WEB,\n // SocialConnectionProvider.ALIPAY,\n // SocialConnectionProvider.GOOGLE,\n // ].includes(item.provider)\n // } else {\n // return true\n // }\n // })\n // .filter((item) => {\n // if (isQQBrowser()) {\n // return (\n // ![\n // SocialConnectionProvider.APPLE,\n // SocialConnectionProvider.APPLE_WEB,\n // SocialConnectionProvider.GOOGLE,\n // ].includes(item.provider) && !item.provider.includes('wechat')\n // )\n // } else {\n // return true\n // }\n // })\n // .filter((item) => {\n // if (isQQBuiltInBrowser()) {\n // return ![SocialConnectionProvider.ALIPAY].includes(item.provider)\n // } else {\n // return true\n // }\n // })\n // .filter((item) => {\n // if (isWeWorkBuiltInBrowser()) {\n // return ![SocialConnectionProvider.WECHATMP].includes(item.provider)\n // } else {\n // return true\n // }\n // })\n\n // 在所有身份源下都要隐藏\n const hiddenSocialConnection = [\n 'wechat:mobile',\n 'wechat:miniprogram:app-launch',\n 'wechat:miniprogram:default',\n 'apple',\n 'yidun',\n ]\n\n switch (true) {\n // 微信内置浏览器\n case isWeChatBrowser():\n // 显示 点击提示\n const wechatDisplayButtonsMessage = [\n SocialConnectionProvider.WECHATPC,\n SocialConnectionProvider.GITHUB,\n SocialConnectionProvider.QQ,\n SocialConnectionProvider.APPLE_WEB,\n SocialConnectionProvider.ALIPAY,\n SocialConnectionProvider.LINKEDIN,\n SocialConnectionProvider.BAIDU,\n SocialConnectionProvider.GOOGLE,\n SocialConnectionProvider.WEIBO,\n SocialConnectionProvider.FACEBOOK,\n SocialConnectionProvider.SLACK,\n SocialConnectionProvider.DINGTALK,\n 'wechatwork:mobile',\n 'instagram',\n 'qingcloud',\n 'gitee',\n 'gitlab',\n ]\n socialConnectionObjs = socialConnectionObjs\n .filter((item) => !hiddenSocialConnection.includes(item.provider))\n .map((item) => {\n if (wechatDisplayButtonsMessage.includes(item.provider)) {\n item.action = SocialConnectionEvent.Message\n } else {\n item.action = SocialConnectionEvent.Auth\n }\n return item\n })\n enterpriseConnectionObjs = enterpriseConnectionObjs\n .filter(\n (item: any) =>\n !(item?.provider && hiddenSocialConnection.includes(item.provider))\n )\n .map((item: any) => {\n if (wechatDisplayButtonsMessage.includes(item.provider)) {\n item.action = SocialConnectionEvent.Message\n } else {\n item.action = SocialConnectionEvent.Auth\n }\n return item\n })\n break\n // qq 内置浏览器\n case isQQBuiltInBrowser():\n const qqbuiltDisplayButtonsMessage = [\n SocialConnectionProvider.WECHATPC,\n SocialConnectionProvider.WECHATMP,\n SocialConnectionProvider.APPLE_WEB,\n SocialConnectionProvider.GOOGLE,\n SocialConnectionProvider.ALIPAY,\n SocialConnectionProvider.WECHATWORK_CORP_QRCONNECT,\n SocialConnectionProvider.DINGTALK,\n 'wechatwork:agency:qrconnect',\n 'wechatwork:mobile',\n ]\n socialConnectionObjs = socialConnectionObjs\n .filter((item) => !hiddenSocialConnection.includes(item.provider))\n .map((item) => {\n if (qqbuiltDisplayButtonsMessage.includes(item.provider)) {\n item.action = SocialConnectionEvent.Message\n } else {\n item.action = SocialConnectionEvent.Auth\n }\n return item\n })\n enterpriseConnectionObjs = enterpriseConnectionObjs\n .filter(\n (item: any) =>\n !(item?.provider && hiddenSocialConnection.includes(item.provider))\n )\n .map((item: any) => {\n if (qqbuiltDisplayButtonsMessage.includes(item.provider)) {\n item.action = SocialConnectionEvent.Message\n } else {\n item.action = SocialConnectionEvent.Auth\n }\n return item\n })\n break\n // 企业微信内置浏览器\n case isWeWorkBuiltInBrowser():\n const weWorkBuiltDisplayButtonsMessage = [\n SocialConnectionProvider.WECHATPC,\n SocialConnectionProvider.WECHATMP,\n SocialConnectionProvider.GITHUB,\n SocialConnectionProvider.QQ,\n SocialConnectionProvider.APPLE_WEB,\n SocialConnectionProvider.ALIPAY,\n SocialConnectionProvider.LINKEDIN,\n SocialConnectionProvider.BAIDU,\n SocialConnectionProvider.GOOGLE,\n SocialConnectionProvider.WEIBO,\n SocialConnectionProvider.FACEBOOK,\n SocialConnectionProvider.SLACK,\n SocialConnectionProvider.DINGTALK,\n 'wechatwork:mobile',\n 'instagram',\n 'qingcloud',\n 'gitee',\n 'gitlab',\n ]\n socialConnectionObjs = socialConnectionObjs\n .filter((item) => !hiddenSocialConnection.includes(item.provider))\n .map((item) => {\n if (weWorkBuiltDisplayButtonsMessage.includes(item.provider)) {\n item.action = SocialConnectionEvent.Message\n } else {\n item.action = SocialConnectionEvent.Auth\n }\n return item\n })\n enterpriseConnectionObjs = enterpriseConnectionObjs\n .filter(\n (item: any) =>\n !(item?.provider && hiddenSocialConnection.includes(item.provider))\n )\n .map((item: any) => {\n if (weWorkBuiltDisplayButtonsMessage.includes(item.provider)) {\n item.action = SocialConnectionEvent.Message\n } else {\n item.action = SocialConnectionEvent.Auth\n }\n return item\n })\n break\n // 钉钉内置浏览器\n case isDingtalkBrowser():\n const dingTalkDisplayButtonsMessage = [\n SocialConnectionProvider.WECHATPC,\n SocialConnectionProvider.WECHATMP,\n SocialConnectionProvider.QQ,\n SocialConnectionProvider.APPLE_WEB,\n SocialConnectionProvider.GOOGLE,\n SocialConnectionProvider.ALIPAY,\n SocialConnectionProvider.WECHATWORK_CORP_QRCONNECT,\n 'wechatwork:agency:qrconnect',\n 'wechatwork:mobile',\n ]\n socialConnectionObjs = socialConnectionObjs\n .filter((item) => !hiddenSocialConnection.includes(item.provider))\n .map((item) => {\n if (dingTalkDisplayButtonsMessage.includes(item.provider)) {\n item.action = SocialConnectionEvent.Message\n } else {\n item.action = SocialConnectionEvent.Auth\n }\n return item\n })\n enterpriseConnectionObjs = enterpriseConnectionObjs\n .filter(\n (item: any) =>\n !(item?.provider && hiddenSocialConnection.includes(item.provider))\n )\n .map((item: any) => {\n if (dingTalkDisplayButtonsMessage.includes(item.provider)) {\n item.action = SocialConnectionEvent.Message\n } else {\n item.action = SocialConnectionEvent.Auth\n }\n return item\n })\n break\n // 飞书内置浏览器\n case isLarkBrowser():\n const larkDisplayButtonsMessage = [\n SocialConnectionProvider.WECHATPC,\n SocialConnectionProvider.WECHATMP,\n SocialConnectionProvider.GITHUB,\n SocialConnectionProvider.QQ,\n SocialConnectionProvider.APPLE_WEB,\n SocialConnectionProvider.ALIPAY,\n SocialConnectionProvider.LINKEDIN,\n SocialConnectionProvider.BAIDU,\n SocialConnectionProvider.GOOGLE,\n SocialConnectionProvider.WEIBO,\n SocialConnectionProvider.FACEBOOK,\n SocialConnectionProvider.SLACK,\n SocialConnectionProvider.DINGTALK,\n 'gitlab',\n 'gitee',\n 'instagram',\n 'wechatwork:agency:qrconnect',\n 'wechatwork:mobile',\n ]\n socialConnectionObjs = socialConnectionObjs\n .filter((item) => !hiddenSocialConnection.includes(item.provider))\n .map((item) => {\n if (larkDisplayButtonsMessage.includes(item.provider)) {\n item.action = SocialConnectionEvent.Message\n } else {\n item.action = SocialConnectionEvent.Auth\n }\n return item\n })\n enterpriseConnectionObjs = enterpriseConnectionObjs\n .filter(\n (item: any) =>\n !(item?.provider && hiddenSocialConnection.includes(item.provider))\n )\n .map((item: any) => {\n if (larkDisplayButtonsMessage.includes(item.provider)) {\n item.action = SocialConnectionEvent.Message\n } else {\n item.action = SocialConnectionEvent.Auth\n }\n return item\n })\n break\n // pc 浏览器\n default:\n const pcDisplayButtonsMessage = [\n SocialConnectionProvider.WECHATMP,\n 'wechatwork:mobile',\n ]\n socialConnectionObjs = socialConnectionObjs\n .filter((item) => !hiddenSocialConnection.includes(item.provider))\n .map((item) => {\n if (pcDisplayButtonsMessage.includes(item.provider)) {\n item.action = SocialConnectionEvent.Message\n } else {\n item.action = SocialConnectionEvent.Auth\n }\n return item\n })\n enterpriseConnectionObjs = enterpriseConnectionObjs\n .filter(\n (item: any) =>\n !(item?.provider && hiddenSocialConnection.includes(item.provider))\n )\n .map((item: any) => {\n if (pcDisplayButtonsMessage.includes(item.provider)) {\n item.action = SocialConnectionEvent.Message\n } else {\n item.action = SocialConnectionEvent.Auth\n }\n return item\n })\n break\n }\n\n const guardWindow = getGuardWindow()\n\n if (!guardWindow) return\n\n if (!config?.isHost && (isSpecialBrowser() || !guardWindow.postMessage)) {\n // 嵌入模式下特殊浏览器不显示所有身份源登录\n socialConnectionObjs = []\n enterpriseConnectionObjs = []\n }\n\n const isNoMethod: boolean =\n noLoginMethods &&\n (!publicConfig?.ssoPageComponentDisplay.socialLoginBtns ||\n !socialConnectionObjs.length) &&\n (!publicConfig?.ssoPageComponentDisplay.idpBtns ||\n !enterpriseConnectionObjs.length)\n return [socialConnectionObjs, enterpriseConnectionObjs, isNoMethod]\n}\n","import { getGuardHttp } from '../_utils/guardHttp'\n\nexport enum BindTotpBusinessAction {\n VerifyTotpFirstTime = 'verify-totp-first-time',\n ConfirmTotpRecoveryCode = 'confirm-totp-recovery-code',\n}\n\nexport const authFlow = async (\n action: BindTotpBusinessAction,\n content: any\n) => {\n const { authFlow } = getGuardHttp()\n\n const res = await authFlow(action, { ...content })\n\n return res\n}\n","import { Button } from 'antd'\nimport React, { useMemo } from 'react'\nimport { ButtonProps } from 'antd/lib/button'\nimport { useGuardButtonState } from '../_utils/context'\nimport './styles.less'\n\nexport interface GuardButtonProps extends ButtonProps {}\n\nexport const GuardButton: React.FC<GuardButtonProps> = (props) => {\n const { spin } = useGuardButtonState()\n\n const { type } = props\n\n const isLockButtonClick = useMemo(() => {\n return spin\n }, [spin])\n\n const buttonClassName = useMemo(() => {\n let { className } = props\n\n if (type) {\n className += ` guard-button-link-like`\n }\n\n if (isLockButtonClick) {\n className += ' guard-button-disabled'\n }\n\n return className\n }, [isLockButtonClick, props, type])\n\n return (\n <Button\n {...props}\n className={buttonClassName}\n onClick={(e) => {\n if (isLockButtonClick) {\n // // 阻止事件冒泡\n // e.stopPropagation()\n return\n }\n\n if (props.onClick) {\n props.onClick(e)\n }\n }}\n />\n )\n}\n","import React, {\n forwardRef,\n useState,\n useImperativeHandle,\n useEffect,\n} from 'react'\nimport { useShaking } from '../_utils/hooks'\nimport { GuardButton } from '../GuardButton'\nimport { useGuardButtonState } from '../_utils/context'\nimport { ButtonProps } from 'antd/lib/button'\n\ninterface SubmitButtonProps extends ButtonProps {\n text?: string\n className?: string\n onClick?: any\n disabled?: boolean\n}\nconst SubmitButton = (props: SubmitButtonProps, ref: any) => {\n const { spinChange, spin: buttonSpin } = useGuardButtonState()\n let [spin, setSpin] = useState(false) // spin 状态需要手动设置关闭\n let [shaking, setShaking] = useState(false) // 抖动状态会自动关闭\n let { MountShaking, UnMountShaking } = useShaking() // 协议和 form input 抖动的挂载和卸载\n\n useEffect(() => {\n let timeOut: NodeJS.Timeout\n if (shaking === true) {\n timeOut = setTimeout(() => {\n UnMountShaking()\n }, 1000)\n }\n\n return () => {\n clearTimeout(timeOut)\n }\n }, [UnMountShaking, shaking])\n\n useImperativeHandle(ref, () => ({\n onError: (text?: string) => {\n setSpin(false)\n MountShaking()\n setShaking(true)\n spinChange(false)\n },\n onSpin: (sp: boolean) => {\n setSpin(sp)\n spinChange(sp)\n },\n }))\n\n let propsCls = props.className ? props.className : ''\n // let shakingCls = shaking ? 'shaking' : ''\n let shakingCls = ''\n return (\n <GuardButton\n {...props}\n size={props?.size ?? 'large'}\n type={props?.type ?? 'primary'}\n htmlType={props?.htmlType ?? 'submit'}\n loading={spin}\n disabled={buttonSpin ? true : props?.disabled ?? spin}\n onClick={props.onClick ? props.onClick : () => {}}\n className={`authing-g2-submit-button ${propsCls} ${shakingCls}`}\n >\n {props.text}\n </GuardButton>\n )\n}\nexport default forwardRef(SubmitButton)\n","import { getDefaultG2Config, IG2Config, IG2Events, IG2FCProps } from '../Type'\nimport { AuthenticationClient, User } from '..'\n\nexport interface MFAConfig extends IG2Config {\n autoRegister: boolean\n}\n\nconst defaultConfig: MFAConfig = {\n ...getDefaultG2Config(),\n autoRegister: false,\n}\n\nexport const getDefaultMFAConfig = (): MFAConfig => ({\n ...getDefaultG2Config(),\n ...defaultConfig,\n})\n\nexport interface MFAEvents extends IG2Events {\n onLogin?: (user: User, authClient: AuthenticationClient) => void\n}\n\nexport enum MFAType {\n SMS = 'SMS',\n EMAIL = 'EMAIL',\n TOTP = 'OTP',\n FACE = 'FACE',\n}\n\nexport interface GuardMFAInitData {\n mfaToken: string\n applicationMfa: {\n mfaPolicy: MFAType\n sort: number\n status: 0 | 1\n }[]\n phoneCountryCode?: string\n faceMfaEnabled: boolean\n totpMfaEnabled: boolean\n email?: string\n phone?: string\n avatar?: string\n nickme?: string\n username?: string\n current?: MFAType\n}\n\nexport interface GuardMFAProps extends IG2FCProps, MFAEvents {\n config: Partial<MFAConfig>\n initData: GuardMFAInitData\n}\n\nexport interface GuardMFAViewProps extends GuardMFAProps {\n config: MFAConfig\n initData: GuardMFAInitData\n}\n","import { Form, Checkbox, Typography } from 'antd'\nimport React, { useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport SubmitButton from '../../SubmitButton'\nimport { useGuardIsAuthFlow } from '../../_utils/context'\nimport { authFlow, BindTotpBusinessAction } from '../businessRequest'\n\nconst { Paragraph } = Typography\n\nexport interface BindSuccessProps {\n onBind: any\n secret: string\n}\n\nexport const BindSuccess: React.FC<BindSuccessProps> = ({ secret, onBind }) => {\n // const [isSaved, setIsSaved] = useState(false)\n const submitButtonRef = useRef<any>(null)\n\n const [form] = Form.useForm()\n\n const { t } = useTranslation()\n\n const isAuthFlow = useGuardIsAuthFlow()\n\n const bindSuccess = async () => {\n submitButtonRef.current?.onSpin(true)\n\n await form.validateFields()\n\n if (isAuthFlow) {\n const { data, isFlowEnd, onGuardHandling } = await authFlow(\n BindTotpBusinessAction.ConfirmTotpRecoveryCode,\n {}\n )\n submitButtonRef.current?.onSpin(false)\n if (isFlowEnd) {\n onBind(data)\n } else {\n // TODO 需要 onError 抖动吗 当 from 表单校验通过的时候 onError 是没有意义的\n submitButtonRef.current?.onError()\n onGuardHandling?.()\n }\n } else {\n submitButtonRef.current?.onSpin(false)\n onBind()\n }\n }\n\n return (\n <>\n <p className=\"authing-g2-mfa-title\">{t('common.totpText1')}</p>\n <p className=\"authing-g2-mfa-tips\">{t('common.totpText2')}</p>\n\n <div className=\"g2-mfa-bindTotp-copySecret\">\n <Paragraph copyable>{secret}</Paragraph>\n </div>\n\n <Form\n form={form}\n onFinish={bindSuccess}\n style={{ width: '100%' }}\n onFinishFailed={() => submitButtonRef.current?.onError()}\n >\n <Form.Item\n className=\"authing-g2-input-form g2-mfa-totp-verify-input\"\n name=\"remember\"\n rules={[\n {\n validator: (_, value) => {\n if (!value) {\n return Promise.reject()\n }\n return Promise.resolve()\n },\n },\n ]}\n valuePropName=\"checked\"\n >\n <Checkbox className=\"g2-mfa-bindTotp-secretSave\">\n {t('login.rememberedSecret')}\n </Checkbox>\n </Form.Item>\n\n <SubmitButton text={t('common.bindSuccess')} ref={submitButtonRef} />\n </Form>\n </>\n )\n}\n","import React, { useState } from 'react'\nimport { getClassnames } from '../_utils'\nimport './styles.less'\n\nexport interface ImageProProps\n extends React.ImgHTMLAttributes<HTMLImageElement> {\n src: string\n className?: string\n alt?: string\n imgClassName?: string\n size?: number | string\n width?: number | string\n height?: number | string\n borderRadius?: number | string\n noSpin?: boolean\n}\n\nexport const ImagePro = (props: ImageProProps) => {\n let { borderRadius, noSpin, alt, style, ...imgProps } = props\n let [loaded, setLoaded] = useState(noSpin === true ? true : false)\n let w: number | string = 0\n let h: number | string = 0\n if (props.size) {\n // size 存在,说明是正方形,让宽高等于 size\n w = props.size\n h = props.size\n } else {\n // 如果 size 不存在,说明长方形,尝试读取宽高\n w = props.width ? props.width : 'auto'\n h = props.height ? props.height : 'auto'\n }\n\n return (\n <div\n style={{ width: w, height: h }}\n className={getClassnames([\n 'g2-base-imagepro-container',\n 'g2-base-image-background-animation',\n loaded ? 'loaded' : 'unload',\n props?.className,\n ])}\n >\n <img\n {...imgProps}\n style={{ width: w, height: h, borderRadius: borderRadius, ...style }}\n className=\"g2-base-imagepro\"\n draggable={false}\n alt={alt || 'image'}\n onLoad={() => setLoaded(true)}\n />\n </div>\n )\n}\n","import Form, { FormItemProps } from 'antd/lib/form'\nimport React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport './style.less'\nexport interface VerifyCodeFormItemProps extends FormItemProps {\n codeLength: number\n ruleKeyword?: string\n}\n\nexport const VerifyCodeFormItem: React.FC<VerifyCodeFormItemProps> = (\n props\n) => {\n const { t } = useTranslation()\n const {\n codeLength,\n ruleKeyword = t('common.captchaCode'),\n ...formItemProps\n } = props\n return (\n <Form.Item\n validateTrigger={['onChange']}\n name=\"mfaCode\"\n className=\"g2-mfa-totp-verify-input\"\n validateFirst={true}\n rules={[\n {\n type: 'array',\n validateTrigger: ['onChange'],\n message: t('common.isMissing', {\n name: ruleKeyword,\n }),\n required: true,\n },\n {\n type: 'array',\n validateTrigger: [''],\n message: t('common.fullCaptchaCode', {\n name: ruleKeyword,\n }),\n min: codeLength,\n },\n ]}\n {...formItemProps}\n />\n )\n}\n","import { Divider, Input } from 'antd'\nimport React, {\n FC,\n Fragment,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport './style.less'\n\ninterface VerifyCodeInputProps extends React.HTMLAttributes<HTMLDivElement> {\n length?: number\n size?: string\n gutter?: string\n onEenter?: Function\n showDivider?: boolean\n onChange?: any\n value?: Array<number | string>\n onFinish?: any\n}\n\nexport const VerifyCodeInput: FC<VerifyCodeInputProps> = ({\n length = 4,\n size = '46px',\n gutter = length > 4 ? '14px' : '24px',\n className,\n onEenter,\n showDivider,\n onChange: onChangeProps,\n value,\n onFinish,\n ...rest\n}) => {\n const inputRef = useRef<any[]>([])\n\n const codeInputRef = useRef<HTMLDivElement>(null)\n\n const [verifyCode, setVerifyCode] = useState(value ?? [])\n const [focusIndex, setFocusIndex] = useState<number>(0)\n\n // 聚焦控制\n useEffect(() => {\n inputRef.current[focusIndex].focus()\n }, [focusIndex])\n\n const onChange = useCallback(\n (codes: string[]) => {\n // const filteredCodes = codes.filter((code) => !!code)\n setVerifyCode(codes)\n onChangeProps?.(codes)\n },\n [onChangeProps]\n )\n\n const handleChange = useCallback(\n (val: string | undefined = '', index: number) => {\n const num = parseInt(val)\n if (isNaN(num)) {\n val = ''\n } else {\n val = String(num)\n }\n const codes = [...verifyCode]\n codes[index] = val.split('').slice(-1)[0] || ''\n onChange(codes as string[])\n if (Boolean(val) && Boolean(inputRef.current[index + 1])) {\n setFocusIndex(index + 1)\n }\n\n // 验证码填写完成后 直接触发 onFinish\n if (\n codes.filter((code) => Boolean(code)).length >= length &&\n index >= length - 1\n ) {\n onFinish?.(codes)\n }\n },\n [length, onChange, onFinish, verifyCode]\n )\n\n const handleKeyDown = (evt: any, index: number) => {\n const currentVal = verifyCode[index]\n switch (evt.key) {\n case 'Backspace':\n if (!currentVal && inputRef.current[index - 1]) {\n handleChange('', index - 1)\n inputRef.current[index - 1].focus()\n }\n break\n\n case 'Enter':\n onEenter?.()\n break\n\n case 'Left':\n case 'ArrowLeft':\n evt.preventDefault()\n if (inputRef.current[index - 1]) {\n inputRef.current[index - 1].focus()\n }\n break\n case 'Right':\n case 'ArrowRight':\n evt.preventDefault()\n if (inputRef.current[index + 1]) {\n inputRef.current[index + 1].focus()\n }\n break\n default:\n break\n }\n }\n\n useEffect(() => {\n const el = codeInputRef.current\n\n const pasteEvent = (e: ClipboardEvent) => {\n e.preventDefault()\n e.stopPropagation()\n\n let paste = e.clipboardData?.getData('text')\n\n if (paste && !isNaN(parseInt(paste))) {\n if (paste.length < length) {\n const data = verifyCode.map((_i, index) => paste?.[index] ?? '')\n onChange(data)\n setFocusIndex(paste.length)\n } else {\n const data = paste.slice(0, length).split('')\n onChange(data)\n setFocusIndex(length - 1)\n }\n }\n }\n el?.addEventListener('paste', pasteEvent)\n\n return () => {\n el?.removeEventListener('paste', pasteEvent)\n }\n }, [length, onChange, setVerifyCode, verifyCode])\n\n return (\n <div ref={codeInputRef} className=\"authing-g2-code-input\" {...rest}>\n {new Array(length).fill(0).map((_, index) => {\n return (\n <Fragment key={index}>\n <Input\n ref={(el) => (inputRef.current[index] = el)}\n style={{\n width: size,\n minWidth: size,\n minHeight: size,\n height: size,\n lineHeight: size,\n marginLeft: index === 0 ? 0 : gutter,\n }}\n className=\"authing-g2-code-input-item\"\n size=\"large\"\n autoFocus={index === 0}\n onKeyDown={(evt) => handleKeyDown(evt, index)}\n value={verifyCode[index]}\n maxLength={2}\n onChange={(evt) => {\n evt.persist()\n // @ts-ignore\n if (evt.nativeEvent.isComposing) {\n return\n }\n const nextValue = evt.target.value\n if (!/^[0-9]*$/.test(nextValue)) {\n return\n }\n const preValue = verifyCode[index] || ''\n const changeValue =\n nextValue.split('').filter((item) => item !== preValue)[0] ||\n nextValue.slice(-1)\n\n handleChange(changeValue, index)\n }}\n pattern=\"[0-9]*\"\n type=\"tel\"\n />\n {showDivider && index === Math.floor(length / 2 - 1) && (\n <Divider className=\"authing-g2-code-input-divider\" />\n )}\n </Fragment>\n )\n })}\n </div>\n )\n}\n","import { Form } from 'antd'\nimport React, { useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useAsyncFn } from 'react-use'\n\nimport { GuardModuleType } from '../../Guard/module'\nimport { useGuardHttp } from '../../_utils/guardHttp'\nimport SubmitButton from '../../SubmitButton'\nimport { ImagePro } from '../../ImagePro'\nimport { VerifyCodeFormItem } from '../../MFA/VerifyCodeInput/VerifyCodeFormItem'\nimport { VerifyCodeInput } from '../../MFA/VerifyCodeInput'\nimport { useGuardIsAuthFlow } from '../../_utils/context'\nimport { authFlow, BindTotpBusinessAction } from '../businessRequest'\nexport interface SecurityCodeProps {\n mfaToken: string\n qrcode: string\n onNext: any\n changeModule: any\n}\n\nexport const SecurityCode: React.FC<SecurityCodeProps> = ({\n mfaToken,\n qrcode,\n onNext,\n changeModule,\n}) => {\n const [form] = Form.useForm()\n const submitButtonRef = useRef<any>(null)\n\n const { t } = useTranslation()\n\n const { post } = useGuardHttp()\n\n const isAuthFlow = useGuardIsAuthFlow()\n\n const onJump = () => {\n changeModule?.(GuardModuleType.DOWNLOAD_AT)\n }\n\n const [, bindTotp] = useAsyncFn(async () => {\n submitButtonRef.current?.onSpin(true)\n\n await form.validateFields()\n const saftyCode = form.getFieldValue('saftyCode')\n\n if (isAuthFlow) {\n // 这里绑定成功过返回的是 statusCode\n const { statusCode, onGuardHandling } = await authFlow(\n BindTotpBusinessAction.VerifyTotpFirstTime,\n {\n totp: saftyCode.join(''),\n }\n )\n submitButtonRef.current?.onSpin(false)\n\n if (statusCode === 200) {\n onNext()\n } else {\n submitButtonRef.current?.onError()\n onGuardHandling?.()\n }\n } else {\n const { code, data, onGuardHandling } = await post(\n '/api/v2/mfa/totp/associate/confirm',\n {\n authenticator_type: 'totp',\n totp: saftyCode.join(''),\n source: 'APPLICATION',\n },\n {\n headers: {\n authorization: mfaToken,\n },\n }\n )\n submitButtonRef.current?.onSpin(false)\n\n if (code === 200) {\n onNext(data)\n } else {\n submitButtonRef.current?.onError()\n onGuardHandling?.()\n }\n }\n }, [mfaToken])\n\n return (\n <>\n <p className=\"authing-g2-mfa-title\">{t('user.mfaBind')}</p>\n <p\n className=\"authing-g2-mfa-tips\"\n style={{\n textAlign: 'left',\n }}\n >\n {t('common.usePhoneOpen')}({t('common.noValidator')}{' '}\n <span\n style={{\n color: '#215AE5',\n cursor: 'pointer',\n }}\n onClick={onJump}\n >\n {t('common.clickTodownload')}\n </span>\n ) {t('common.mfaText1')}\n </p>\n <ImagePro className=\"g2-mfa-bindTotp-qrcode\" src={qrcode} alt=\"qrcode\" />\n <Form\n className=\"g2-mfa-bindTotp-securityCode-form\"\n form={form}\n onSubmitCapture={() => {}}\n onFinish={bindTotp}\n onFinishFailed={(e) => {\n submitButtonRef.current.onError()\n }}\n >\n <VerifyCodeFormItem\n codeLength={6}\n name=\"saftyCode\"\n ruleKeyword={t('user.numberSafteyCode')}\n >\n <VerifyCodeInput\n length={6}\n showDivider={false}\n gutter={'10px'}\n onFinish={bindTotp}\n />\n </VerifyCodeFormItem>\n\n <SubmitButton text={t('user.nextStep')} ref={submitButtonRef} />\n </Form>\n </>\n )\n}\n","import { message } from 'antd'\nimport { User } from 'authing-js-sdk'\nimport React, { useEffect, useMemo, useState } from 'react'\nimport { useAsyncFn } from 'react-use'\nimport { ErrorCode } from '../_utils/GuardErrorCode'\nimport { useGuardHttp } from '../_utils/guardHttp'\nimport { useGuardAuthClient } from '../Guard/authClient'\nimport { GuardModuleType } from '../Guard/module'\nimport { ShieldSpin, Spin } from '../ShieldSpin'\nimport { BindSuccess } from './core/bindSuccess'\nimport { SecurityCode } from './core/securityCode'\nimport { GuardBindTotpInitData } from './interface'\nimport { useTranslation } from 'react-i18next'\nimport './styles.less'\nimport {\n useGuardEvents,\n useGuardInitData,\n useGuardIsAuthFlow,\n useGuardModule,\n} from '../_utils/context'\nimport { MFAType } from '../MFA/interface'\nimport { BackCustom } from '../Back'\n\nenum BindTotpType {\n SECURITY_CODE = 'securityCode',\n BIND_SUCCESS = 'bindSuccess',\n}\n\nexport const GuardBindTotpView: React.FC = () => {\n const initData = useGuardInitData<GuardBindTotpInitData>()\n\n const events = useGuardEvents()\n\n const { changeModule } = useGuardModule()\n\n const { get, post } = useGuardHttp()\n\n const isAuthFlow = useGuardIsAuthFlow()\n\n const { t } = useTranslation()\n\n const [secret, setSecret] = useState('')\n\n const [qrcode, setQrcode] = useState('')\n\n const [user, setUser] = useState<User>()\n\n const [bindTotpType, setBindTotpType] = useState<BindTotpType>(\n BindTotpType.SECURITY_CODE\n )\n\n const authClient = useGuardAuthClient()\n\n const [bindInfo, fetchBindInfo] = useAsyncFn(async () => {\n const query = {\n // type: 'totp',\n source: 'APPLICATION',\n }\n const config = {\n headers: {\n authorization: initData.mfaToken,\n },\n }\n\n try {\n const { code, message: msg } = await get<any>(\n `/api/v2/mfa/authenticator`,\n query,\n config\n )\n if (code === ErrorCode.LOGIN_INVALID) {\n message.error(msg)\n changeModule?.(GuardModuleType.LOGIN, {})\n return\n }\n } catch (error: any) {\n message.error(error?.message)\n }\n\n try {\n const { data, code, onGuardHandling } = await post<any>(\n '/api/v2/mfa/totp/associate',\n query,\n config\n )\n if (code === 200) {\n setSecret(data.recovery_code)\n setQrcode(data.qrcode_data_url)\n } else {\n onGuardHandling?.()\n }\n } catch (error: any) {\n message.error(error?.message)\n }\n }, [])\n\n const onBind = (resUser?: User) => {\n if (isAuthFlow && resUser) {\n events?.onLogin?.(resUser, authClient)\n } else {\n if (user) {\n events?.onLogin?.(user, authClient)\n }\n }\n }\n\n const onNext = (user?: User) => {\n if (isAuthFlow) {\n setBindTotpType(BindTotpType.BIND_SUCCESS)\n } else {\n setUser(user)\n setBindTotpType(BindTotpType.BIND_SUCCESS)\n }\n }\n\n useEffect(() => {\n fetchBindInfo()\n }, [fetchBindInfo])\n\n const renderContent = useMemo<\n Record<BindTotpType, (props: any) => React.ReactNode>\n >(\n () => ({\n [BindTotpType.SECURITY_CODE]: (props) => <SecurityCode {...props} />,\n [BindTotpType.BIND_SUCCESS]: (props) => <BindSuccess {...props} />,\n }),\n []\n )\n\n const renderBack = useMemo(() => {\n const onBack = () => {\n changeModule?.(GuardModuleType.MFA, {\n ...initData,\n current: MFAType.TOTP,\n })\n }\n\n return <BackCustom onBack={onBack}>{t('common.backToVerify')}</BackCustom>\n }, [changeModule, initData, t])\n\n return (\n <>\n {bindInfo.loading ? (\n <Spin />\n ) : (\n <div className=\"g2-view-container g2-bind-totp\">\n {renderBack}\n <div className=\"g2-mfa-content g2-mfa-bindTotp\">\n {bindInfo.loading ? (\n <ShieldSpin />\n ) : (\n renderContent[bindTotpType]({\n mfaToken: initData.mfaToken,\n qrcode,\n secret,\n onBind,\n onNext,\n changeModule: changeModule,\n })\n )}\n </div>\n </div>\n )}\n </>\n )\n}\n","import React, { FC } from 'react'\nimport { getClassnames } from '../_utils'\nimport './iconfont'\nimport './style.less'\n\nexport const IconFont: FC<{\n type: string\n style?: React.CSSProperties\n className?: string\n}> = ({ type, style, className }) => {\n return (\n <svg style={{ ...style }} className={getClassnames(['g2-icon', className])}>\n <use xlinkHref={`#${type}`}></use>\n </svg>\n )\n}\n","import React, { useCallback, useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { GuardModuleType } from '..'\nimport { GuardButton } from '../GuardButton'\nimport { IconFont } from '../IconFont'\nimport { useGuardFinallyConfig, useGuardModule } from '../_utils/context'\nimport './styles.less'\n\nexport interface BackProps {\n isRender?: boolean\n}\n\nexport const BackLogin: React.FC<BackProps> = (props) => {\n const { changeModule } = useGuardModule()\n\n const config = useGuardFinallyConfig()\n\n const { t } = useTranslation()\n\n const onBack = useCallback(() => changeModule?.(GuardModuleType.LOGIN), [\n changeModule,\n ])\n\n const { isRender = true } = props\n\n const renderBack = useMemo(() => {\n if (!isRender) return null\n\n const whitelist = [GuardModuleType.LOGIN, GuardModuleType.REGISTER]\n\n // 初始场景不是 登录 或者注册时候,不显示返回按钮\n if (config.defaultScenes && !whitelist.includes(config.defaultScenes)) {\n return null\n }\n\n return (\n <GuardButton\n type=\"link\"\n onClick={onBack}\n className=\"g2-view-mfa-back-hover\"\n >\n <IconFont type=\"authing-arrow-left-s-line\" style={{ fontSize: 24 }} />\n <span>{t('common.backLoginPage')}</span>\n </GuardButton>\n )\n }, [isRender, config.defaultScenes, onBack, t])\n\n return (\n <div className=\"g2-view-back\" style={{ display: 'inherit' }}>\n {renderBack}\n </div>\n )\n}\n\nexport interface BackCustomProps extends BackProps {\n onBack?: () => void\n}\n\nexport const BackCustom: React.FC<BackCustomProps> = (props) => {\n const { changeModule } = useGuardModule()\n\n const { t } = useTranslation()\n\n const {\n onBack = () => changeModule?.(GuardModuleType.LOGIN),\n isRender = true,\n children = t('common.backLoginPage'),\n } = props\n\n const renderBack = useMemo(() => {\n if (!isRender) return null\n\n return (\n <GuardButton\n type=\"link\"\n onClick={onBack}\n className=\"g2-view-mfa-back-hover\"\n >\n <IconFont type=\"authing-arrow-left-s-line\" style={{ fontSize: 24 }} />\n <span>{children}</span>\n </GuardButton>\n )\n }, [children, isRender, onBack])\n\n return (\n <div className=\"g2-view-back\" style={{ display: 'inherit' }}>\n {renderBack}\n </div>\n )\n}\n","import { useCallback, useState } from 'react'\n\nexport const useCheckRepeat = (\n checkFn: (\n value: any,\n resolve: (value: unknown) => void,\n reject: (reason?: any) => void\n ) => void\n) => {\n const [timer, setTimer] = useState<NodeJS.Timeout>()\n\n const checkRepeat = useCallback(\n async (_, value) => {\n if (timer) {\n clearTimeout(timer)\n }\n\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n checkFn(value, resolve, reject)\n }, 500)\n\n setTimer(timeout)\n })\n },\n [checkFn, timer]\n )\n\n return checkRepeat\n}\n","import { Form } from 'antd'\nimport React, { useMemo } from 'react'\nimport { fieldRequiredRule, VALIDATE_PATTERN } from '../_utils'\nimport { useGuardHttp } from '../_utils/guardHttp'\nimport { useTranslation } from 'react-i18next'\nimport { ValidatorFormItemMetaProps, ValidatorFormItemProps } from '.'\nimport { Rule } from 'antd/lib/form'\nimport { useGuardPublicConfig } from '../_utils/context'\nimport { phone } from 'phone'\nimport { useCheckRepeat } from './useCheckRepeat'\n\nconst ValidatorFormItem: React.FC<ValidatorFormItemMetaProps> = (props) => {\n const {\n checkRepeat = false,\n checkExist = false,\n method,\n name,\n required,\n areaCode, //国际化区号\n isCheckI18nSms = true,\n ...formItemProps\n } = props\n const publicConfig = useGuardPublicConfig()\n const { get } = useGuardHttp()\n const { t } = useTranslation()\n\n const checkInternationalSms = useMemo(() => {\n return (\n publicConfig.internationalSmsConfig?.enabled &&\n method === 'phone' &&\n isCheckI18nSms\n )\n }, [isCheckI18nSms, method, publicConfig.internationalSmsConfig?.enabled])\n\n const methodContent = useMemo(() => {\n if (method === 'email')\n return {\n field: t('common.emailLabel'),\n checkRepeatErrorMessage: t('common.checkEmail'),\n formatErrorMessage: t('common.emailFormatError'),\n checkExistErrorMessage: t('common.noFindEmail'),\n pattern: VALIDATE_PATTERN.email,\n }\n else if (method === 'username') {\n return {\n field: t('common.username'),\n checkRepeatErrorMessage: t('common.checkUserName'),\n checkExistErrorMessage: t('common.noFindUsername'),\n formatErrorMessage: t('common.usernameFormatError'),\n pattern: VALIDATE_PATTERN.username,\n }\n } else\n return {\n field: t('common.phone'),\n checkRepeatErrorMessage: t('common.checkPhone'),\n checkExistErrorMessage: t('common.noFindPhone'),\n formatErrorMessage: t('common.phoneFormateError'),\n pattern: VALIDATE_PATTERN.phone,\n }\n }, [method, t])\n\n const checkRepeatRet = (\n value: any,\n resolve: (value: unknown) => void,\n reject: (reason?: any) => void\n ) => {\n get<boolean>(`/api/v2/users/find`, {\n userPoolId: publicConfig?.userPoolId,\n key: value,\n type: method,\n }).then(({ data }) => {\n if (checkExist) {\n Boolean(data)\n ? resolve(true)\n : reject(methodContent.checkExistErrorMessage)\n }\n if (checkRepeat) {\n Boolean(data)\n ? reject(methodContent.checkRepeatErrorMessage)\n : resolve(true)\n }\n })\n }\n\n const checkRepeatFn = useCheckRepeat(checkRepeatRet)\n\n const formatRules = useMemo<Rule>(() => {\n if (checkInternationalSms) {\n return {\n validateTrigger: 'onBlur',\n validator: async (_, value) => {\n if (!value || phone(value, { country: areaCode }).isValid)\n return Promise.resolve()\n return Promise.reject(t('common.internationPhoneMessage'))\n },\n }\n }\n\n return {\n validateTrigger: 'onBlur',\n pattern: methodContent.pattern,\n message: methodContent.formatErrorMessage,\n }\n }, [\n areaCode,\n checkInternationalSms,\n methodContent.formatErrorMessage,\n methodContent.pattern,\n t,\n ])\n\n const rules = useMemo<Rule[]>(() => {\n // 如果不是必填就不校验\n if (required === false) return []\n\n // 必填项的默认校验规则\n const rules = [...fieldRequiredRule(methodContent.field)]\n\n // 格式校验\n rules.push(formatRules)\n\n // 是否校验重复\n if (checkRepeat || checkExist) {\n rules.push({\n validator: checkRepeatFn,\n validateTrigger: [],\n })\n }\n\n return rules\n }, [\n required,\n methodContent.field,\n formatRules,\n checkRepeat,\n checkExist,\n checkRepeatFn,\n ])\n\n return (\n <Form.Item\n validateFirst={true}\n validateTrigger={['onBlur', 'onChange']}\n rules={[...rules, ...(formItemProps?.rules ?? [])]}\n name={name ?? method}\n {...formItemProps}\n />\n )\n}\nexport const EmailFormItem: React.FC<ValidatorFormItemProps> = (props) => (\n <ValidatorFormItem required method=\"email\" {...props} />\n)\nexport const PhoneFormItem: React.FC<ValidatorFormItemProps> = (props) => (\n <ValidatorFormItem required method=\"phone\" {...props} />\n)\n\nexport const UserNameFormItem: React.FC<ValidatorFormItemProps> = (props) => (\n <ValidatorFormItem required method=\"username\" {...props} />\n)\n","import { FormInstance, FormItemProps } from 'antd/lib/form'\nimport FormItem from 'antd/lib/form/FormItem'\nimport { PasswordFormItem } from './PasswordFormItem'\nimport {\n EmailFormItem,\n PhoneFormItem,\n UserNameFormItem,\n} from './ValidatorFormItem'\n\nexport interface ValidatorFormItemProps extends FormItemProps {\n form?: FormInstance\n checkRepeat?: boolean\n checkExist?: boolean\n areaCode?: string //国际化区号\n isCheckI18nSms?: boolean // 是否开启国际化手机号校验\n}\n\nexport interface ValidatorFormItemMetaProps extends ValidatorFormItemProps {\n method: 'email' | 'phone' | 'username'\n}\n\nexport interface PasswordFormItemProps extends FormItemProps {}\n\nexport interface ICheckProps {\n check: (values: any) => void\n}\n\ntype InternalFormItemType = typeof FormItem\n\ninterface FormItemInterface extends InternalFormItemType {\n Password: typeof PasswordFormItem\n Email: typeof EmailFormItem\n Phone: typeof PhoneFormItem\n UserName: typeof UserNameFormItem\n}\n\nconst CustomFormItem = FormItem as FormItemInterface\n\nCustomFormItem.Password = PasswordFormItem\nCustomFormItem.Email = EmailFormItem\nCustomFormItem.Phone = PhoneFormItem\nCustomFormItem.UserName = UserNameFormItem\nexport default CustomFormItem\n","import { Form } from 'antd'\nimport React from 'react'\nimport { PasswordFormItemProps } from '.'\nimport { getPasswordValidate } from '../_utils'\nimport { useGuardPublicConfig } from '../_utils/context'\nexport interface ExPasswordFormItemProps extends PasswordFormItemProps {\n fieldRequiredRuleMessage?: string\n}\nexport const PasswordFormItem: React.FC<ExPasswordFormItemProps> = (props) => {\n const { rules, fieldRequiredRuleMessage, ...fromItemProos } = props\n\n const publicConfig = useGuardPublicConfig()\n\n return publicConfig ? (\n <Form.Item\n validateTrigger={['onChange', 'onBlur']}\n validateFirst={true}\n name=\"password\"\n rules={[\n ...getPasswordValidate(\n publicConfig.passwordStrength,\n publicConfig.customPasswordStrength,\n fieldRequiredRuleMessage\n ),\n ...(rules ?? []),\n ]}\n {...fromItemProos}\n />\n ) : (\n <Form.Item {...props} />\n )\n}\n","/** eslint-disable */\n/**\n * !!!!!!!!!!!! 注意注意!!!!!!!!!!!!!\n *\n * 只要替换 svgStr 中的字符串即可,为了兼容 SSR!!!!!!\n *\n */\nimport { svgStr } from './svg'\nvar init = function (a) {\n var c,\n t,\n l,\n e,\n i,\n o,\n h = svgStr,\n m = (m = document.getElementsByTagName('script'))[\n m.length - 1\n ].getAttribute('data-injectcss')\n if (m && !a.__iconfont__svg__cssinject__) {\n a.__iconfont__svg__cssinject__ = !0\n try {\n document.write(\n '<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>'\n )\n } catch (a) {\n console && console.log(a)\n }\n }\n function n() {\n i || ((i = !0), l())\n }\n ;(c = function () {\n var a, c, t\n ;((t = document.createElement('div')).innerHTML = h),\n (h = null),\n (c = t.getElementsByTagName('svg')[0]) &&\n (c.setAttribute('aria-hidden', 'true'),\n (c.style.position = 'absolute'),\n (c.style.width = 0),\n (c.style.height = 0),\n (c.style.overflow = 'hidden'),\n (a = c),\n (t = document.body).firstChild\n ? (c = t.firstChild).parentNode.insertBefore(a, c)\n : t.appendChild(a))\n }),\n document.addEventListener\n ? ~['complete', 'loaded', 'interactive'].indexOf(document.readyState)\n ? setTimeout(c, 0)\n : ((t = function () {\n document.removeEventListener('DOMContentLoaded', t, !1), c()\n }),\n document.addEventListener('DOMContentLoaded', t, !1))\n : document.attachEvent &&\n ((l = c),\n (e = a.document),\n (i = !1),\n (o = function () {\n try {\n e.documentElement.doScroll('left')\n } catch (a) {\n return void setTimeout(o, 50)\n }\n n()\n })(),\n (e.onreadystatechange = function () {\n 'complete' == e.readyState && ((e.onreadystatechange = null), n())\n }))\n}\n\nif (typeof window !== 'undefined' && typeof window.document !== 'undefined') {\n init(window)\n}\n","export const svgStr =\n '<svg><symbol id=\"authing-gitlab\" viewBox=\"0 0 1024 1024\"><path d=\"M958.326 570.912l-50.136-154.3L808.827 110.8c-5.111-15.733-27.372-15.733-32.485 0l-99.365 305.812H347.024L247.656 110.8c-5.11-15.733-27.37-15.733-32.484 0l-99.363 305.812-50.134 154.3c-4.575 14.073 0.437 29.49 12.407 38.19L512 924.358 945.92 609.1a34.16 34.16 0 0 0 12.407-38.19\" ></path></symbol><symbol id=\"authing-yuyan\" viewBox=\"0 0 1024 1024\"><path d=\"M960 511.616A447.808 447.808 0 0 0 512 64C264.576 64 64 264.384 64 511.616a447.808 447.808 0 0 0 392.32 444.16 224.384 224.384 0 0 0 60.352 3.456A447.744 447.744 0 0 0 960 511.616z m-64 6.4a437.952 437.952 0 0 0-8.768-65.472c0.384-7.616 0.512-14.784 0.256-21.504 5.696 26.496 8.512 53.504 8.512 80.64v6.272z m-768-6.4c0-26.56 2.752-53.12 8.192-79.104 16.576 17.728 55.68 17.28 65.216-9.216 17.024 10.176 39.936 12.032 39.936 32.32 0 67.072 2.432 138.944 63.36 140.032 1.664 0 33.92 12.224 49.28 52.096 5.312 13.76 26.304 0 49.344 0 11.52 0 0 19.328 0 61.184 0 41.92 89.92 105.984 89.92 105.984-0.384 27.584 0.768 49.92 3.008 67.712a150.912 150.912 0 0 0-50.816 6.848A383.68 383.68 0 0 1 128 511.616z m478.592 371.968c-2.048-9.728-10.752-15.04-26.624-10.88 12.672-54.016 18.816-84.288 45.312-107.2 38.272-33.216 4.48-70.144-24.576-65.792-23.04 3.456-8.448-28.416-29.056-30.208-20.544-1.728-47.232-42.432-76.736-56.512-15.616-7.424-30.976-27.328-55.104-28.16-21.376-0.832-52.672 18.048-52.672 3.456 0-46.912-4.8-80.448-5.76-93.76-0.768-10.752-7.04-3.648 21.888-2.944 15.744 0.384 8.064-31.616 23.616-32.832 15.296-1.28 51.712 14.272 60.992 8.128 8.64-5.76 63.36 143.744 63.36 24.704 0-14.08-7.296-38.72 0-52.096 28.992-52.864 56.064-95.936 53.632-102.208-1.344-3.584-29.568-6.464-52.16 1.088-7.68 2.56 2.432 14.464-8.512 17.024-41.024 9.472-77.248-11.072-64.64-30.336 13.056-19.84 60.16-8.64 64.256-48.256 2.368-22.72 4.352-49.088 5.632-68.608 55.232 8.64 49.152-71.616-32.896-80.192a384.128 384.128 0 0 1 358.272 257.92 15.552 15.552 0 0 0-9.152-4.16c-24.832-62.016-84.992-17.152-64.64 37.504-109.44 84.16-81.408 142.784-45.44 176.384 18.944 17.728 36.992 44.288 48.704 63.36-12.8 37.248 47.104 22.336 76.672-40.96a384.576 384.576 0 0 1-274.432 265.6z\" ></path></symbol><symbol id=\"authing-anzhuo\" viewBox=\"0 0 1024 1024\"><path d=\"M141.1 331.2c-35 0-63.3 28.3-63.3 63.2v264.7c0 34.9 28.4 63.2 63.3 63.2 35 0 63.3-28.3 63.3-63.2V394.4c0-34.9-28.3-63.2-63.3-63.2zM228.9 753.3c0 37.3 30.3 67.5 67.6 67.5h46.1v140c0 34.9 28.4 63.2 63.3 63.2 35 0 63.3-28.3 63.3-63.2v-140h85.5v140c0 34.9 28.4 63.2 63.3 63.2 35 0 63.3-28.3 63.3-63.2v-140h46.1c37.3 0 67.6-30.2 67.6-67.5V343.1H228.9v410.2zM651.8 93.4L696 13c2.4-4.2 0.8-9.6-3.5-11.9-4.2-2.3-9.6-0.8-11.9 3.5l-44.7 81.2C598.4 69.2 556.4 59.9 512 59.9c-44.4 0-86.4 9.3-123.9 25.8L343.4 4.6c-2.3-4.3-7.7-5.8-11.9-3.5-4.3 2.3-5.9 7.7-3.5 11.9l44.2 80.4c-86.8 44.8-145.5 130-145.5 227.7h570.5c0.1-97.8-58.6-182.9-145.4-227.7zM382.2 218c-13.2 0-23.9-10.7-23.9-23.9s10.7-23.9 23.9-23.9 23.9 10.7 23.9 23.9c-0.1 13.2-10.8 23.9-23.9 23.9z m259.7 0c-13.2 0-23.9-10.7-23.9-23.9s10.7-23.9 23.9-23.9 23.9 10.7 23.9 23.9c-0.1 13.2-10.8 23.9-23.9 23.9zM882.9 331.2c-35 0-63.3 28.3-63.3 63.2v264.7c0 34.9 28.4 63.2 63.3 63.2 35 0 63.3-28.3 63.3-63.2V394.4c0-34.9-28.3-63.2-63.3-63.2z\" ></path></symbol><symbol id=\"authing-lark-public\" viewBox=\"0 0 1024 1024\"><path d=\"M933.875 98.5625L726.53414917 322.64486695a6.61651612 6.61651612 0 0 0-1.64300537 5.81726073 40.54449463 40.54449463 0 0 1-68.92053223 36.37023927L490.72827148 530.02856445l16.29821778 218.30960083L692.5625 933.875z m0 0\" ></path><path d=\"M931.6098938 104.2026062l-205.12023926 221.68377685a6.61651612 6.61651612 0 0 0-1.64300537 5.86175538 39.96688843 39.96688843 0 0 1-68.21026612 35.92611694L494.23675537 530.07388305a3.28601074 3.28601074 0 0 0-0.93273925 2.53125l16.03125 214.40148927 413.61547851-623.97537232 8.88162232-18.74047852z m0 0\" ></path><path d=\"M925.48199463 90.16949463L701.39880372 297.46502685a6.61651612 6.61651612 0 0 1-5.86175538 1.68832398 40.54449463 40.54449463 0 0 0-36.32574462 68.92053222L493.97143555 533.31622315l-218.22143555-16.43005372L90.125 331.43667602z m0 0\" ></path><path d=\"M919.8427124 92.65625l-221.77359008 205.12023926a6.61651612 6.61651612 0 0 1-5.77276612 1.64300537 39.96688843 39.96688843 0 0 0-35.92611695 68.21026612L493.92611695 530.02938843a3.28601074 3.28601074 0 0 1-2.57574463 0.93273925l-214.40148927-16.03125L900.96875 101.31539917l18.74047852-8.88079834z m0 0\" ></path></symbol><symbol id=\"authing-lark-internal\" viewBox=\"0 0 1024 1024\"><path d=\"M933.875 98.5625L726.53414917 322.64486695a6.61651612 6.61651612 0 0 0-1.64300537 5.81726073 40.54449463 40.54449463 0 0 1-68.92053223 36.37023927L490.72827148 530.02856445l16.29821778 218.30960083L692.5625 933.875z m0 0\" ></path><path d=\"M931.6098938 104.2026062l-205.12023926 221.68377685a6.61651612 6.61651612 0 0 0-1.64300537 5.86175538 39.96688843 39.96688843 0 0 1-68.21026612 35.92611694L494.23675537 530.07388305a3.28601074 3.28601074 0 0 0-0.93273925 2.53125l16.03125 214.40148927 413.61547851-623.97537232 8.88162232-18.74047852z m0 0\" ></path><path d=\"M925.48199463 90.16949463L701.39880372 297.46502685a6.61651612 6.61651612 0 0 1-5.86175538 1.68832398 40.54449463 40.54449463 0 0 0-36.32574462 68.92053222L493.97143555 533.31622315l-218.22143555-16.43005372L90.125 331.43667602z m0 0\" ></path><path d=\"M919.8427124 92.65625l-221.77359008 205.12023926a6.61651612 6.61651612 0 0 1-5.77276612 1.64300537 39.96688843 39.96688843 0 0 0-35.92611695 68.21026612L493.92611695 530.02938843a3.28601074 3.28601074 0 0 1-2.57574463 0.93273925l-214.40148927-16.03125L900.96875 101.31539917l18.74047852-8.88079834z m0 0\" ></path></symbol><symbol id=\"authing-guanbi7-01copy_1\" viewBox=\"0 0 1024 1024\"><path d=\"M0.00007 512.306485a511.999485 511.999485 0 0 1 1023.99797-0.512v0.512a510.974486 510.974486 0 0 1-511.999485 511.691485C228.86384 1023.99797 0.00007 794.725201 0.00007 512.306485z m546.200451 0l178.89282-178.78982a23.244977 23.244977 0 0 0 0-33.075967l-1.126999-1.023999a23.244977 23.244977 0 0 0-33.176967 0L511.999555 478.514519l-178.78982-179.19982a23.244977 23.244977 0 0 0-33.177967 0l-1.023999 1.023999a23.244977 23.244977 0 0 0 0 33.074967l178.78982 179.199819-178.89282 178.789821a23.244977 23.244977 0 0 0 0 33.177966l1.126999 1.023999a23.244977 23.244977 0 0 0 33.176967 0L511.999555 547.12245 690.789375 725.80927a23.244977 23.244977 0 0 0 33.177967 0l1.023999-1.023999a23.244977 23.244977 0 0 0 0-33.176967l-178.78982-179.199819z\" ></path></symbol><symbol id=\"authing-guanbi\" viewBox=\"0 0 1024 1024\"><path d=\"M583.168 523.776L958.464 148.48c18.944-18.944 18.944-50.176 0-69.12l-2.048-2.048c-18.944-18.944-50.176-18.944-69.12 0L512 453.12 136.704 77.312c-18.944-18.944-50.176-18.944-69.12 0l-2.048 2.048c-19.456 18.944-19.456 50.176 0 69.12l375.296 375.296L65.536 899.072c-18.944 18.944-18.944 50.176 0 69.12l2.048 2.048c18.944 18.944 50.176 18.944 69.12 0L512 594.944 887.296 970.24c18.944 18.944 50.176 18.944 69.12 0l2.048-2.048c18.944-18.944 18.944-50.176 0-69.12L583.168 523.776z\" ></path></symbol><symbol id=\"authing-apple-web\" viewBox=\"0 0 1024 1024\"><path d=\"M797.3 656c24.6 34.8 52.8 57.3 84.6 67.5-13.8 42.6-35.7 87-65.7 133.2-46.2 69.6-91.8 104.4-136.8 104.4-16.8 0-41.7-5.7-74.7-17.1-30.6-11.4-57.3-17.1-80.1-17.1-22.8 0-48 6-75.6 18-28.8 11.4-52.5 17.1-71.1 17.1-54 0-107.1-45.9-159.3-137.7-52.2-90.6-78.3-179.7-78.3-267.3 0-81 19.8-147.3 59.4-198.9 40.8-51.6 91.2-77.4 151.2-77.4 13.2 0 27.9 1.65 44.1 4.95 16.2 3.3 33 9.45 50.4 18.45 18.6 10.2 33.9 17.25 45.9 21.15 12 3.9 21.3 5.85 27.9 5.85 7.8 0 19.8-1.8 36-5.4a166.088 166.088 0 0 0 48.6-19.8 366.113 366.113 0 0 1 45-21.6c12.6-4.8 25.5-7.2 38.7-7.2 42 0 79.8 11.4 113.4 34.2 18 12 36.3 29.7 54.9 53.1-27.6 24-47.7 45-60.3 63-23.4 33.6-35.1 70.2-35.1 109.8 0 43.8 12.3 83.4 36.9 118.8zM616.4 235.7c-21 19.8-40.2 32.7-57.6 38.7-6 1.8-13.65 3.45-22.95 4.95-9.3 1.5-19.95 2.85-31.95 4.05 0.6-52.8 14.4-98.4 41.4-136.8 27-38.4 71.4-64.8 133.2-79.2 1.2 6 2.1 10.2 2.7 12.6v9.9c0 21.6-5.1 45.9-15.3 72.9a221.625 221.625 0 0 1-49.5 72.9z\" ></path></symbol><symbol id=\"authing-google\" viewBox=\"0 0 1024 1024\"><path d=\"M1000 523.6c0 283-193.8 484.4-480 484.4-274.4 0-496-221.6-496-496S245.6 16 520 16c133.6 0 246 49 332.6 129.8l-135 129.8c-176.6-170.4-505-42.4-505 236.4 0 173 138.2 313.2 307.4 313.2 196.4 0 270-140.8 281.6-213.8H520V440.8h472.2c4.6 25.4 7.8 49.8 7.8 82.8z\" ></path></symbol><symbol id=\"authing-dingtalk\" viewBox=\"0 0 1024 1024\"><path d=\"M905.857912 382.800144a192.415957 192.415957 0 0 1-12.101998 31.649993h0.186l-0.744 1.257c-35.140992 76.657983-126.881972 226.998949-126.881971 226.998949s-0.093-0.373-0.466-0.93l-26.856994 47.567989h129.301971L621.375975 1024l56.039988-227.649949H575.715986l35.326992-150.525966a1436.834677 1436.834677 0 0 0-102.397977 29.789993s-54.130988 32.393993-155.923965-62.137986c0 0-68.699985-61.672986-28.857994-77.079982 16.941996-6.560999 82.197982-14.892997 133.53597-21.967996 69.444984-9.494998 112.172975-14.614997 112.172975-14.614996s-214.106952 3.257999-264.83994-4.886999c-50.732989-8.099998-115.104974-94.484979-128.834972-170.353962 0 0-21.223995-41.702991 45.65999-21.968995 66.838985 19.734996 343.499923 76.799983 343.499923 76.799983S205.267069 266.95017 181.250074 239.487176c-23.922995-27.459994-70.374984-149.732966-64.324985-224.901949 0 0 2.606999-18.757996 21.457995-13.729997 0 0 266.00294 123.946972 447.852899 191.762957 181.896959 67.815985 340.009924 102.398977 319.622929 190.181957z\" ></path></symbol><symbol id=\"authing-apple\" viewBox=\"0 0 1024 1024\"><path d=\"M797.3 656c24.6 34.8 52.8 57.3 84.6 67.5-13.8 42.6-35.7 87-65.7 133.2-46.2 69.6-91.8 104.4-136.8 104.4-16.8 0-41.7-5.7-74.7-17.1-30.6-11.4-57.3-17.1-80.1-17.1-22.8 0-48 6-75.6 18-28.8 11.4-52.5 17.1-71.1 17.1-54 0-107.1-45.9-159.3-137.7-52.2-90.6-78.3-179.7-78.3-267.3 0-81 19.8-147.3 59.4-198.9 40.8-51.6 91.2-77.4 151.2-77.4 13.2 0 27.9 1.65 44.1 4.95 16.2 3.3 33 9.45 50.4 18.45 18.6 10.2 33.9 17.25 45.9 21.15 12 3.9 21.3 5.85 27.9 5.85 7.8 0 19.8-1.8 36-5.4a166.088 166.088 0 0 0 48.6-19.8 366.113 366.113 0 0 1 45-21.6c12.6-4.8 25.5-7.2 38.7-7.2 42 0 79.8 11.4 113.4 34.2 18 12 36.3 29.7 54.9 53.1-27.6 24-47.7 45-60.3 63-23.4 33.6-35.1 70.2-35.1 109.8 0 43.8 12.3 83.4 36.9 118.8zM616.4 235.7c-21 19.8-40.2 32.7-57.6 38.7-6 1.8-13.65 3.45-22.95 4.95-9.3 1.5-19.95 2.85-31.95 4.05 0.6-52.8 14.4-98.4 41.4-136.8 27-38.4 71.4-64.8 133.2-79.2 1.2 6 2.1 10.2 2.7 12.6v9.9c0 21.6-5.1 45.9-15.3 72.9a221.625 221.625 0 0 1-49.5 72.9z\" ></path></symbol><symbol id=\"authing-alipay-web\" viewBox=\"0 0 1024 1024\"><path d=\"M427.154 210.262l-1.819 59.431H185.792v45.481h242.573v78.84H228.24v43.057l203.153-1.823 203.76-1.818-3.641 14.553c-9.094 35.177-47.907 129.173-55.183 132.196-4.244 1.216-33.961-5.458-67.316-15.16-101.276-30.924-151.61-40.023-220.136-40.023-69.74 0.603-115.217 13.342-158.886 44.27-84.897 60.647-91.57 179.506-12.735 245.602 83.687 70.348 220.739 77.017 345.06 16.375 44.267-21.225 123.71-78.84 150.39-108.553l10.922-12.736 34.57 16.98c34.568 17.586 248.03 116.437 284.413 131.598l19.403 8.49V711.17l-52.762-13.95c-47.907-12.74-170.406-50.94-209.826-66.105l-15.16-6.066 20.012-41.238c21.231-42.444 63.68-162.522 63.68-180.108 0-8.491-12.128-9.702-106.128-9.702H555.71v-78.827h254.704v-40.022c0-1.817-57.614-3.032-127.353-2.425l-127.347 0.602V151.437H428.967l-1.813 58.825z m-23.657 395.392c31.535 10.922 73.382 27.896 92.786 38.206l35.167 18.805-19.404 24.255c-10.913 13.342-35.775 36.387-56.399 51.548-69.133 51.542-133.41 71.553-215.887 66.703-86.112-4.852-132.201-40.023-137.66-105.517-3.64-40.63 5.459-63.675 33.359-84.901 35.172-26.685 63.67-32.742 141.296-30.924 59.431 1.814 78.232 5.449 126.742 21.825z\" ></path></symbol><symbol id=\"authing-wechat-miniprogram-app-launch\" viewBox=\"0 0 1126 1024\"><path d=\"M961.876 262.606C900.851 134.702 747.238 80.676 619.77 141.425c-69.45 33.34-113.232 90.332-130.04 168.839-15.583 71.308-6.328 150.685 2.926 211.869 12.22 78.071 12.656 135.459 1.7 176.393-9.69 36.306-29.464 59.957-61.46 75.54a135.814 135.814 0 0 1-104.372 5.102 137.634 137.634 0 0 1-77.835-69.647 136.764 136.764 0 0 1 64.388-181.93c14.317-7.12 25.668-19.38 30.73-34.607 5.023-15.187 4.628-31.244-2.136-45.996a60.511 60.511 0 0 0-34.487-30.81 61.54 61.54 0 0 0-45.878 2.136 256.284 256.284 0 0 0-131.86 145.98 257.233 257.233 0 0 0 10.284 196.72 256.403 256.403 0 0 0 231.802 146.494 263.007 263.007 0 0 0 110.265-24.916c69.41-33.341 113.192-89.462 130.04-167.97 15.149-70.913 6.328-150.29-2.966-210.603-12.22-78.942-12.656-136.764-1.701-177.698 9.69-36.307 29.465-60.354 62.292-75.54a136.962 136.962 0 0 1 182.205 64.585 136.764 136.764 0 0 1-64.387 181.93 60.511 60.511 0 0 0-28.16 80.167c6.724 14.753 19.34 25.708 34.053 30.81 15.148 5.063 31.166 4.628 45.877-2.135 127.51-62.45 181.378-216.101 120.786-343.531z\" ></path></symbol><symbol id=\"authing-qq\" viewBox=\"0 0 1024 1024\"><path d=\"M821.295 699.385a275.463 275.463 0 0 1-57.3 90.76c54.54 16.634 41.202 45.496 41.202 45.496 24.223 13.299 22.69 99.729-111.381 98.195-89.38-0.996-127.248-26.062-142.695-42.735-11.498 1.15-23.035 1.802-34.61 1.84-14.296 0-28.286-1.073-42.084-2.645-14.91 16.634-52.586 42.544-143.308 43.54-133.879 1.534-135.412-84.895-111.15-98.195 0 0-14.642-31.046 47.142-47.335a272.511 272.511 0 0 1-58.794-98.311c-56.035 99.537-83.057 33.575-79.033-42.66 3.604-67.687 63.241-144.61 78.726-163.43a60.98 60.98 0 0 1-4.6-22.804c0-16.482 6.593-31.506 17.363-42.775a44.844 44.844 0 0 1 20.045-46.223c-0.076-2.414-0.306-4.753-0.306-7.206 0-151.394 123.569-274.235 275.96-274.235 152.469 0 275.961 122.802 275.961 274.235 0 4.6-0.268 9.122-0.498 13.645 10.425 10.617 14.947 25.68 11.998 40.283 10.616 11.192 17.36 25.871 17.36 42.276 0 8.125-1.723 15.829-4.598 22.997 15.56 19.163 74.816 96.01 78.38 163.698 3.91 74.164-21.31 138.67-73.78 51.589z\" ></path></symbol><symbol id=\"authing-wechat-mobile\" viewBox=\"0 0 1239 1024\"><path d=\"M745.256 511.245c-21.665 0-43.385 20.373-43.385 45.595 0 20.373 21.72 40.96 43.385 40.96 32.553 0 55.835-20.587 55.835-40.96 0-25.222-23.282-45.595-55.835-45.595M602.705 298.9c34.115 0 55.78-22.097 55.78-55.08 0-34.655-21.665-55.027-55.78-55.027-32.499 0-63.488 20.372-63.488 54.973 0 33.091 30.99 55.08 63.488 55.08M440.05 756.574c-57.344 0-99.167-9.431-153.439-25.169l-156.456 80.196 44.948-135.222C65.051 597.747 0 498.58 0 377.479 0 163.57 198.333 0 440.05 0c213.8 0 404.427 128.97 441.56 311.458a211.106 211.106 0 0 0-41.822-4.743c-210.729 0-373.383 160.498-373.383 353.927 0 33.037 4.635 62.895 12.396 94.37-12.396 1.616-26.409 1.616-38.804 1.616m646.198 154.14L1117.13 1024l-117.76-67.638c-44.894 9.378-88.28 23.606-133.228 23.606-207.656 0-371.873-144.761-371.873-324.07 0-179.253 164.217-323.96 371.873-323.96 196.77 0 373.437 144.707 373.437 323.907 0 100.783-66.614 190.356-153.384 254.922M295.882 188.793c-32.498 0-66.614 20.372-66.614 54.973 0 33.091 34.116 55.08 66.614 55.08 30.99 0 55.781-21.989 55.781-55.026 0-34.655-24.791-55.027-55.78-55.027m692.6 322.452c-23.228 0-43.385 20.373-43.385 45.595 0 20.373 20.157 40.96 43.385 40.96 30.99 0 54.272-20.587 54.272-40.96 0-25.222-23.282-45.595-54.272-45.595\" ></path></symbol><symbol id=\"authing-baidu\" viewBox=\"0 0 1024 1024\"><path d=\"M204.8 537.876c104.422-22.429 90.196-147.185 86.967-174.501-5.149-42.066-54.545-115.55-121.658-109.746-84.48 7.593-96.873 129.6-96.873 129.6C61.891 439.695 100.64 560.262 204.8 537.876zM315.636 754.75c-3.141 8.858-9.861 31.244-4.058 50.75 11.607 43.766 49.658 45.774 49.658 45.774h54.677V717.658H357.44c-26.27 7.855-39.01 28.407-41.847 37.091z m82.779-426.022c57.774 0 104.29-66.37 104.29-148.407C502.705 98.327 456.19 32 398.415 32c-57.47 0-104.16 66.37-104.16 148.32 0 82.036 46.69 148.364 104.29 148.364z m248.334 9.731c77.062 10.037 126.676-72.262 136.407-134.618 10.037-62.138-39.665-134.53-94.21-146.924-54.633-12.523-122.88 75.055-129.077 132.131-7.418 69.818 9.95 139.462 86.88 149.411zM835.564 704.83s-119.259-92.247-188.815-191.913c-94.254-147.01-228.349-87.185-273.164-12.48-44.64 74.75-114.196 122.095-124.014 134.531-10.036 12.393-144 84.655-114.327 216.742 29.76 132 134.269 129.6 134.269 129.6s76.974 7.55 166.342-12.393c89.323-19.898 166.21 4.975 166.21 4.975s208.67 69.818 265.746-64.713C924.8 774.56 835.564 704.83 835.564 704.83zM478.487 905.076H342.865c-58.56-11.738-81.905-51.665-84.916-58.472-2.924-6.982-19.505-39.142-10.69-93.819 25.308-81.905 97.483-87.796 97.483-87.796h72.218v-88.844l61.484 0.96 0.087 327.928z m252.742-0.96H575.011c-60.524-15.534-63.316-58.56-63.316-58.56V672.844l63.36-1.004v155.127c3.84 16.495 24.436 19.637 24.436 19.637h64.32v-173.76h67.418v231.272z m220.975-461.018c0-29.847-24.742-119.65-116.64-119.65-92.073 0-104.335 84.741-104.335 144.654 0 57.163 4.887 137.062 119.127 134.443 114.415-2.443 101.848-129.469 101.848-159.447z\" ></path></symbol><symbol id=\"authing-wechat-pc\" viewBox=\"0 0 1239 1024\"><path d=\"M727.677 511.336c-19.042 0-38.132 17.906-38.132 40.074 0 17.906 19.09 36 38.132 36 28.61 0 49.074-18.094 49.074-36 0-22.168-20.463-40.074-49.074-40.074m-125.29-186.63c29.985 0 49.026-19.422 49.026-48.411 0-30.459-19.041-48.364-49.025-48.364-28.564 0-55.8 17.905-55.8 48.316 0 29.084 27.237 48.41 55.8 48.41m-142.959 402.3c-50.4 0-87.158-8.288-134.858-22.12L187.06 775.32l39.505-118.847c-96.726-69.11-153.9-156.269-153.9-262.705C72.667 205.763 246.984 62 459.43 62c187.91 0 355.454 113.353 388.09 273.742a185.542 185.542 0 0 0-36.757-4.168c-185.211 0-328.17 141.062-328.17 311.068 0 29.037 4.075 55.28 10.896 82.943-10.895 1.42-23.211 1.42-34.105 1.42M1027.33 862.48l27.19 99.52-103.5-59.447c-39.458 8.242-77.59 20.747-117.096 20.747-182.51 0-326.841-127.231-326.841-284.827 0-157.547 144.331-284.73 326.841-284.73 172.943 0 328.216 127.183 328.216 284.683 0 88.58-58.547 167.305-134.81 224.053M332.72 227.93c-28.563 0-58.548 17.905-58.548 48.316 0 29.084 29.985 48.41 58.547 48.41 27.238 0 49.026-19.326 49.026-48.362 0-30.459-21.788-48.364-49.025-48.364m608.73 283.405c-20.415 0-38.13 17.906-38.13 40.074 0 17.906 17.715 36 38.13 36 27.238 0 47.7-18.094 47.7-36 0-22.168-20.462-40.074-47.7-40.074\" ></path></symbol><symbol id=\"authing-wechat-miniprogram-qrconnec\" viewBox=\"0 0 1126 1024\"><path d=\"M961.876 262.606C900.851 134.702 747.238 80.676 619.77 141.425c-69.45 33.34-113.232 90.332-130.04 168.839-15.583 71.308-6.328 150.685 2.926 211.869 12.22 78.071 12.656 135.459 1.7 176.393-9.69 36.306-29.464 59.957-61.46 75.54a135.814 135.814 0 0 1-104.372 5.102 137.634 137.634 0 0 1-77.835-69.647 136.764 136.764 0 0 1 64.388-181.93c14.317-7.12 25.668-19.38 30.73-34.607 5.023-15.187 4.628-31.244-2.136-45.996a60.511 60.511 0 0 0-34.487-30.81 61.54 61.54 0 0 0-45.878 2.136 256.284 256.284 0 0 0-131.86 145.98 257.233 257.233 0 0 0 10.284 196.72 256.403 256.403 0 0 0 231.802 146.494 263.007 263.007 0 0 0 110.265-24.916c69.41-33.341 113.192-89.462 130.04-167.97 15.149-70.913 6.328-150.29-2.966-210.603-12.22-78.942-12.656-136.764-1.701-177.698 9.69-36.307 29.465-60.354 62.292-75.54a136.962 136.962 0 0 1 182.205 64.585 136.764 136.764 0 0 1-64.387 181.93 60.511 60.511 0 0 0-28.16 80.167c6.724 14.753 19.34 25.708 34.053 30.81 15.148 5.063 31.166 4.628 45.877-2.135 127.51-62.45 181.378-216.101 120.786-343.531z\" ></path></symbol><symbol id=\"authing-wechat-webpage-authorization\" viewBox=\"0 0 1188 1024\"><path d=\"M512 1.896C229.452 1.896 0 229.452 0 512s229.452 510.104 512 510.104S1022.104 794.548 1022.104 512 794.548 1.896 512 1.896z m-91.022 629.57c-26.548 0-49.304-5.688-75.852-11.377l-75.852 37.926 22.756-66.37c-54.993-37.926-87.23-87.23-87.23-147.912 0-104.296 98.607-185.837 218.074-185.837 108.089 0 201.007 64.474 219.97 153.6-7.585 0-13.274-1.896-20.859-1.896-104.296 0-185.837 77.748-185.837 172.563 0 15.17 1.896 30.34 7.585 45.511-7.585 3.793-15.17 3.793-22.755 3.793z m322.37 77.749l17.067 54.992-58.785-34.133c-22.756 5.689-43.615 11.378-66.37 11.378-104.297 0-185.838-70.163-185.838-157.393S530.963 424.77 635.26 424.77c98.608 0 185.837 70.163 185.837 159.29 0 47.407-32.237 91.021-77.748 125.155z\" fill=\"#46BB36\" ></path><path d=\"M318.578 379.26c0 17.066 13.274 30.34 30.34 30.34s30.341-13.274 30.341-30.34-13.274-30.341-30.34-30.341-30.341 13.274-30.341 30.34z m235.14 159.288c0 13.274 11.378 24.652 24.652 24.652 13.274 0 24.652-11.378 24.652-24.652 0-13.274-11.378-24.652-24.652-24.652-13.274-1.896-24.651 9.482-24.651 24.652z m-81.54-159.289c0 17.067 13.274 30.341 30.34 30.341 17.067 0 30.341-13.274 30.341-30.34 0-17.067-13.274-30.341-30.34-30.341-17.067 0-30.341 13.274-30.341 30.34zM675.08 538.55c0 13.273 11.378 24.651 24.652 24.651 13.274 0 24.652-11.378 24.652-24.652 0-13.274-11.378-24.652-24.652-24.652-13.274-1.896-24.652 9.482-24.652 24.652z\" fill=\"#46BB36\" ></path></symbol><symbol id=\"authing-wechat-miniprogram-default\" viewBox=\"0 0 1126 1024\"><path d=\"M961.876 262.606C900.851 134.702 747.238 80.676 619.77 141.425c-69.45 33.34-113.232 90.332-130.04 168.839-15.583 71.308-6.328 150.685 2.926 211.869 12.22 78.071 12.656 135.459 1.7 176.393-9.69 36.306-29.464 59.957-61.46 75.54a135.814 135.814 0 0 1-104.372 5.102 137.634 137.634 0 0 1-77.835-69.647 136.764 136.764 0 0 1 64.388-181.93c14.317-7.12 25.668-19.38 30.73-34.607 5.023-15.187 4.628-31.244-2.136-45.996a60.511 60.511 0 0 0-34.487-30.81 61.54 61.54 0 0 0-45.878 2.136 256.284 256.284 0 0 0-131.86 145.98 257.233 257.233 0 0 0 10.284 196.72 256.403 256.403 0 0 0 231.802 146.494 263.007 263.007 0 0 0 110.265-24.916c69.41-33.341 113.192-89.462 130.04-167.97 15.149-70.913 6.328-150.29-2.966-210.603-12.22-78.942-12.656-136.764-1.701-177.698 9.69-36.307 29.465-60.354 62.292-75.54a136.962 136.962 0 0 1 182.205 64.585 136.764 136.764 0 0 1-64.387 181.93 60.511 60.511 0 0 0-28.16 80.167c6.724 14.753 19.34 25.708 34.053 30.81 15.148 5.063 31.166 4.628 45.877-2.135 127.51-62.45 181.378-216.101 120.786-343.531z\" ></path></symbol><symbol id=\"authing-wechatwork-service-provider-authorization\" viewBox=\"0 0 1182 1024\"><path d=\"M993.598 913.02a7.062 7.062 0 0 1 4.908 2.224c15.678 17.761 37.252 31.073 59.816 35.505 15.713 3.354 26.482 18.873 26.482 36.634 0 19.968-14.706 36.617-32.362 36.617-16.666 0-30.402-14.424-32.361-32.185-4.909-25.53-15.714-47.722-30.42-65.466-0.971-1.112-1.942-3.337-2.931-5.561 0-4.432 2.93-7.768 6.868-7.768zM1024 0a105.931 105.931 0 0 1 105.931 105.949v453.42h-70.62V247.172H70.46v670.88h452.026v70.638H32.84C15.572 988.69 0.829 975.448 0 958.27v-857.9C2.79 44.19 49.346 0.053 105.843 0zM812.138 512c136.651 0 247.172 97.774 247.172 219.224h-60.804c0-101.888-85.663-162.286-182.22-163.045-117.565-0.918-189.686 76.182-193.553 157.184-2.471 51.412 16.42 92.495 61.617 127.47 5.032 4.131 4.184 17.479 3.178 23.658l-2.684 37.34s1.006 0 2.013-1.023l49.982-25.141a16.455 16.455 0 0 1 12.058-1.042c22.104 6.18 37.676 5.509 60.787 5.509 24.117 0 46.857-2.066 64.23-8.087l15.589 55.085a288.662 288.662 0 0 1-78.371 11.317c-25.124 0-49.24-3.09-72.334-9.27l-53.265 26.766c-5.014 2.065-12.059 3.09-18.08 3.09-6.037 0-12.058-2.066-17.09-5.138-10.045-7.221-15.06-19.562-14.053-34.993v-1.041l5.014-42.196c-49.222-40.148-76.358-97.775-76.358-157.484C564.966 609.792 675.486 512 812.138 512z m338.397 330.399c17.655 0 32.362 16.649 32.362 36.634 0 18.856-12.747 34.393-28.443 36.617-22.563 5.544-42.178 17.761-57.874 34.41a21.186 21.186 0 0 1-4.908 3.32c-3.92 0-6.868-3.32-6.868-7.769 0-2.225 0.99-4.431 1.978-5.544 15.678-17.76 27.454-42.178 31.373-67.707 2.948-17.744 16.684-29.961 32.38-29.961z m-141.242-30.261c3.92 0 6.868 3.337 6.868 7.768a9.075 9.075 0 0 1-1.977 5.544c-15.678 17.761-27.454 42.178-31.374 67.708-2.948 17.743-16.684 29.96-32.38 29.96-17.654 0-32.361-16.648-32.361-36.634 0-18.856 12.747-34.392 28.442-36.617 22.564-5.544 42.179-17.743 57.874-34.392 0.971-1.113 2.93-2.225 4.908-3.337z m39.23-70.62c16.667 0 30.402 14.424 32.362 32.185 4.908 25.511 15.713 47.722 30.42 65.465 1.942 1.112 1.942 3.337 2.93 5.561 0 4.432-2.93 7.769-6.867 7.769a7.062 7.062 0 0 1-4.908-2.225c-15.696-17.761-37.253-31.073-59.816-35.504-15.713-3.355-26.483-18.874-26.483-36.635 0-19.968 14.707-36.617 32.362-36.617zM511.912 70.584a53.177 53.177 0 0 0-37.5 15.537 53 53 0 0 0 17.426 86.422 53.407 53.407 0 0 0 58.05-11.582 52.824 52.824 0 0 0 11.388-57.838 53.23 53.23 0 0 0-49.364-32.539z m-176.605 0a53.177 53.177 0 0 0-37.5 15.537 53 53 0 0 0 17.426 86.422 53.407 53.407 0 0 0 58.05-11.582 52.824 52.824 0 0 0 11.388-57.838 53.23 53.23 0 0 0-49.364-32.539z m-176.499 0a53.177 53.177 0 0 0-37.5 15.537 53 53 0 0 0 17.426 86.422 53.407 53.407 0 0 0 58.05-11.582 52.824 52.824 0 0 0 11.388-57.838 53.23 53.23 0 0 0-49.364-32.539z\" ></path></symbol><symbol id=\"authing-wechatwork-corp-qrconnect\" viewBox=\"0 0 1220 1024\"><path d=\"M1077.17 663.237c-29.54-34.659-51.2-77.982-61.047-127.803-3.938-34.659-31.508-62.819-64.985-62.819-35.446 0-64.984 32.493-64.984 71.483 0 34.659 21.661 64.985 53.17 71.484 45.291 8.664 88.614 34.658 120.122 69.316 1.97 2.167 5.908 4.333 9.846 4.333 7.877 0 13.785-6.499 13.785-15.163-1.97-4.333-1.97-8.665-5.908-10.831z m-194.955-26.782c1.97-2.166 3.939-6.498 3.939-10.83 0-8.665-5.908-15.163-13.785-15.163-3.938 2.166-7.877 4.332-9.846 6.498-31.508 32.492-70.892 56.32-116.185 67.15-31.507 4.333-57.107 34.66-57.107 71.484 0 38.99 29.538 71.483 64.984 71.483 31.508 0 59.077-23.828 64.985-58.486 7.877-49.822 31.508-97.477 63.015-132.136z m165.416 243.2c31.507-32.492 70.892-56.32 116.184-67.15 31.508-4.333 57.108-34.659 57.108-71.483 0-38.991-29.538-71.484-64.985-71.484-31.507 0-59.076 23.828-64.984 58.487-7.877 49.821-31.508 97.477-63.016 132.135-1.969 2.166-3.938 6.498-3.938 10.83 0 8.665 5.908 15.164 13.785 15.164 3.938-2.166 7.877-4.332 9.846-6.499z m-76.8 1.379c-45.293-8.665-88.616-34.659-120.123-69.317a14.375 14.375 0 0 0-9.846-4.332c-7.877 0-13.785 6.498-13.785 15.163 1.97 4.332 3.938 8.664 5.908 10.83 29.538 34.659 51.2 77.982 61.046 127.804 3.938 34.658 31.507 62.818 64.984 62.818 35.447 0 64.985-32.492 64.985-71.483 0-34.659-21.662-64.985-53.17-71.483z\" ></path><path d=\"M243.554 810.2s2.048 0 4.096-2.067l101.534-50.708c8.172-4.135 16.345-4.135 24.497-2.067 44.899 12.445 76.544 11.106 123.49 11.106 48.995 0 95.174-4.155 130.502-16.325l31.665 111.065c-51.043 14.533-106.142 22.843-159.232 22.843a571.077 571.077 0 0 1-146.964-18.688l-108.19 53.957c-10.2 4.135-24.497 6.222-36.745 6.222-12.249 0-24.497-4.135-34.698-10.377-20.421-14.514-30.622-39.424-28.574-70.558v-2.068l10.201-85.07C55.099 676.51 0 560.285 0 439.926 0 197.12 224.551 0 502.154 0c277.622 0 502.154 197.14 502.154 442.014h-123.55c0-205.43-174.001-327.208-370.196-328.744-238.808-1.85-385.378 153.6-393.216 316.948-4.982 103.62 33.36 186.466 125.224 257.024 10.2 8.31 8.468 35.19 6.44 47.655\" ></path></symbol><symbol id=\"authing-wechatwork-service-provider-qrconnect\" viewBox=\"0 0 1220 1024\"><path d=\"M1077.17 663.237c-29.54-34.659-51.2-77.982-61.047-127.803-3.938-34.659-31.508-62.819-64.985-62.819-35.446 0-64.984 32.493-64.984 71.483 0 34.659 21.661 64.985 53.17 71.484 45.291 8.664 88.614 34.658 120.122 69.316 1.97 2.167 5.908 4.333 9.846 4.333 7.877 0 13.785-6.499 13.785-15.163-1.97-4.333-1.97-8.665-5.908-10.831z m-194.955-26.782c1.97-2.166 3.939-6.498 3.939-10.83 0-8.665-5.908-15.163-13.785-15.163-3.938 2.166-7.877 4.332-9.846 6.498-31.508 32.492-70.892 56.32-116.185 67.15-31.507 4.333-57.107 34.66-57.107 71.484 0 38.99 29.538 71.483 64.984 71.483 31.508 0 59.077-23.828 64.985-58.486 7.877-49.822 31.508-97.477 63.015-132.136z m165.416 243.2c31.507-32.492 70.892-56.32 116.184-67.15 31.508-4.333 57.108-34.659 57.108-71.483 0-38.991-29.538-71.484-64.985-71.484-31.507 0-59.076 23.828-64.984 58.487-7.877 49.821-31.508 97.477-63.016 132.135-1.969 2.166-3.938 6.498-3.938 10.83 0 8.665 5.908 15.164 13.785 15.164 3.938-2.166 7.877-4.332 9.846-6.499z m-76.8 1.379c-45.293-8.665-88.616-34.659-120.123-69.317a14.375 14.375 0 0 0-9.846-4.332c-7.877 0-13.785 6.498-13.785 15.163 1.97 4.332 3.938 8.664 5.908 10.83 29.538 34.659 51.2 77.982 61.046 127.804 3.938 34.658 31.507 62.818 64.984 62.818 35.447 0 64.985-32.492 64.985-71.483 0-34.659-21.662-64.985-53.17-71.483z\" ></path><path d=\"M243.554 810.2s2.048 0 4.096-2.067l101.534-50.708c8.172-4.135 16.345-4.135 24.497-2.067 44.899 12.445 76.544 11.106 123.49 11.106 48.995 0 95.174-4.155 130.502-16.325l31.665 111.065c-51.043 14.533-106.142 22.843-159.232 22.843a571.077 571.077 0 0 1-146.964-18.688l-108.19 53.957c-10.2 4.135-24.497 6.222-36.745 6.222-12.249 0-24.497-4.135-34.698-10.377-20.421-14.514-30.622-39.424-28.574-70.558v-2.068l10.201-85.07C55.099 676.51 0 560.285 0 439.926 0 197.12 224.551 0 502.154 0c277.622 0 502.154 197.14 502.154 442.014h-123.55c0-205.43-174.001-327.208-370.196-328.744-238.808-1.85-385.378 153.6-393.216 316.948-4.982 103.62 33.36 186.466 125.224 257.024 10.2 8.31 8.468 35.19 6.44 47.655\" ></path></symbol><symbol id=\"authing-weibo\" viewBox=\"0 0 1185 1024\"><path d=\"M891.75 466.973c-17.137-5.012-29.37-7.545-19.616-30.019 19.616-47.477 19.616-90 0-120.017-39.18-57.503-144.538-54.97-264.61-2.48 0 0-39.125 17.517-29.37-12.502 19.615-59.982 17.19-109.992-12.234-140.01-66.127-67.473-240.089 2.532-389.532 154.992C63.7 431.942 0 551.96 0 656.996c0 199.94 252.322 322.49 497.314 322.49 323.354 0 536.55-192.503 538.975-347.496 0-92.533-75.934-142.545-144.539-165.017zM499.794 907C303.79 926.941 134.73 836.94 122.497 704.474c-14.714-129.987 134.73-252.484 330.735-272.532 196.005-19.939 365.01 70.06 377.243 202.527 14.712 129.987-134.73 252.484-330.68 272.532z m19.563-375.034c-93.072-25.005-198.43 22.527-240.088 107.515-41.605 87.52 0 182.478 93.125 212.496 97.975 32.497 213.142-17.515 252.322-109.995 39.179-92.53-9.81-185.01-105.359-210.016z m-70.976 219.987c-19.616 30.018-61.22 45-90.645 30.018-29.372-14.982-39.18-50.012-19.617-82.455 19.616-30.07 58.796-42.574 88.22-30.07 29.372 15.034 39.18 50.01 22.042 82.507z m63.7-82.455c-7.329 12.45-22.095 17.461-34.275 12.45-12.287-4.958-17.192-17.462-9.809-29.964 4.85-12.503 19.564-17.515 31.797-12.503 12.288 5.011 17.191 17.515 12.288 29.964z m431.137-327.555a83.964 83.964 0 0 0-14.66-74.963c-19.616-19.994-46.562-30.019-71.029-22.527-22.096 5.012-41.658-9.97-46.563-30.018a40.258 40.258 0 0 1 29.426-47.479c51.412-10.023 107.783 5.012 144.537 47.479a157.904 157.904 0 0 1 31.797 152.514c-7.33 19.994-29.372 32.497-48.988 25.006-19.563-5.012-31.796-27.485-24.466-50.012z m227.908 75.018a44.838 44.838 0 0 1-56.37 30.019c-24.521-7.546-36.755-35.032-29.426-57.504a226.13 226.13 0 0 0-46.508-222.52c-56.372-62.515-137.21-87.52-213.144-70.006a45.108 45.108 0 0 1-53.892-35.029c-4.904-24.952 9.754-49.958 34.276-54.97a312.789 312.789 0 0 1 298.884 97.544c78.413 87.467 98.03 207.485 66.18 312.466z\" ></path></symbol><symbol id=\"authing-github\" viewBox=\"0 0 1024 1024\"><path d=\"M51.57 672.155c3.72-6.605 52.236-29.956 126.057 57.307 0.186 0 0.465 0.14 0.79 0.419 5.21 4.326 29.538 39.26 43.307 51.865 58.935 53.307 147.083 12.001 157.13 6.047 4.652-38.282 19.025-68.378 43.027-90.52a290.072 290.072 0 0 1-64.052-10.047 203.832 203.832 0 0 1-61.029-18.048 168.852 168.852 0 0 1-58.052-29.165c-17.35-9.35-33.677-23.444-49.027-42.237a205.367 205.367 0 0 1-40.004-58.284c-10.698-20.095-19.071-45.911-25.072-77.356-6-28.84-8.977-62.005-8.977-99.543 0-68.983 22.979-129.64 69.076-181.924-2.745-5.395-33.026-77.17 7.907-179.969 55.447-1.954 115.173 23.49 185.226 68.332A925.198 925.198 0 0 1 547.008 46.89c56.936 1.907 113.592 9.303 169.132 22.142C739.49 54.984 821.637-1.3 900.249 2.747c37.678 89.45 11.024 170.154 6.977 178.9 46.05 46.236 69.076 104.846 69.076 175.875v6.047c0.326 5.024 0.512 10.094 0.512 15.118 0 27.77-3.163 55.958-9.536 84.473a349.24 349.24 0 0 1-25.025 77.402 282.816 282.816 0 0 1-39.027 57.26 367.242 367.242 0 0 1-49.028 41.26c-18.42 10.56-37.445 20.002-57.074 28.142a1890.865 1890.865 0 0 1-61.076 18.048 1650.986 1650.986 0 0 0-64.052 10.048c30.05 25.49 45.4 66.982 46.05 124.662a3242.148 3242.148 0 0 0-0.464 55.54c0 19.583 0.186 40.282 0.465 62.052-0.651 21.444-0.93 37.724-0.93 48.795 0 11.07 0.279 16.931 0.93 17.536a677.27 677.27 0 0 1-159.084 20.048h-14.978c-54.424 0-107.452-6.651-159.177-20.14-0.698-0.652-0.977-39.214-0.977-115.546-20.7 4.652-157.037 31.538-217.508-69.913-19.304-30.05-35.351-103.405-100.753-136.152-6.93 18.048-28.84 2.652-14-10.047z\" ></path></symbol></svg>'\n","import { getGuardHttp } from '../_utils/guardHttp'\n\nexport enum ChangePasswordBusinessAction {\n ResetPassword = 'reset-password-first-time',\n FirstLoginReset = 'reset-password-forced',\n ResetPasswordStrengthDetection = 'reset-password-strength-detection',\n}\n\nexport const authFlow = async (\n action: ChangePasswordBusinessAction,\n content: {\n password: string\n oldPassword?: string\n }\n) => {\n const { authFlow } = getGuardHttp()\n\n const res = await authFlow(action, { ...content })\n\n return res\n}\n","import React, { FC } from 'react'\nimport { getClassnames } from '../../_utils'\nimport './iconfont'\nimport './style.less'\n\nexport const IconFont: FC<{\n type: string\n style?: React.CSSProperties\n className?: string\n}> = ({ type, style, className }) => {\n return (\n <svg\n style={{ ...style }}\n className={getClassnames(['authing-icon', className])}\n >\n <use xlinkHref={`#${type}`}></use>\n </svg>\n )\n}\n","import { Input } from 'antd'\nimport { PasswordProps } from 'antd/lib/input'\nimport React from 'react'\nimport { IconFont } from '../AuthingGuard/IconFont'\nexport const InputPassword = React.forwardRef<\n React.RefObject<Input>,\n PasswordProps\n>((props, ref) => {\n return (\n <Input.Password\n ref={ref}\n {...props}\n iconRender={(visible) => (\n <span style={{ display: 'flex', height: '100%', alignItems: 'center' }}>\n {visible ? (\n <IconFont type=\"authing-a-eye-line1\" />\n ) : (\n <IconFont type=\"authing-a-eye-close-line1\" />\n )}\n </span>\n )}\n />\n )\n})\n","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nexport const usePasswordErrorText = () => {\n const { t } = useTranslation()\n const [show, setPasswordErrorTextShow] = useState(false)\n return {\n setPasswordErrorTextShow,\n getPassWordUnsafeText: () => {\n return (\n <>\n {show ? (\n <div\n style={{\n marginBottom: 23,\n fontSize: 12,\n color: '#E8353E',\n display: 'block',\n }}\n >\n {t('common.passwordUnsafeTip')}\n </div>\n ) : (\n <></>\n )}\n </>\n )\n },\n }\n}\n","import React, { useRef, useCallback } from 'react'\nimport { Form, message } from 'antd'\nimport CustomFormItem from '../../ValidatorRules'\nimport { InputPassword } from '../../InputPassword'\nimport { useMediaSize } from '../../_utils/hooks'\nimport { IconFont } from '../../IconFont'\nimport { useTranslation } from 'react-i18next'\nimport SubmitButton from '../../SubmitButton'\nimport { RegisterCompletePasswordInitData } from '../../CompleteInfo/interface'\nimport {\n useGuardEvents,\n useGuardInitData,\n useGuardModule,\n useGuardPublicConfig,\n} from '../../_utils/context'\nimport { GuardModuleType } from '../../Guard'\nimport { useGuardAuthClient } from '../../Guard/authClient'\nimport { getGuardHttp } from '../../_utils/guardHttp'\nimport { usePasswordErrorText } from '../../_utils/useErrorText'\nimport { ApiCode } from '../../_utils/responseManagement/interface'\nexport const CompletePassword: React.FC = () => {\n const { t } = useTranslation()\n\n const events = useGuardEvents()\n\n const [form] = Form.useForm()\n\n const { isPhoneMedia } = useMediaSize()\n\n const authClient = useGuardAuthClient()\n\n const { post } = getGuardHttp()\n\n const {\n businessRequestName,\n content,\n isChangeComplete,\n onRegisterSuccess,\n onRegisterFailed,\n } = useGuardInitData<RegisterCompletePasswordInitData>()\n\n let submitButtonRef = useRef<any>(null)\n\n const { changeModule } = useGuardModule()\n // 密码加密公钥\n const { publicKey } = useGuardPublicConfig()\n\n let client = useGuardAuthClient()\n\n const encrypt = client.options.encryptFunction\n const {\n getPassWordUnsafeText,\n setPasswordErrorTextShow,\n } = usePasswordErrorText()\n const onFinish = useCallback(\n async (values: any) => {\n // 密码加密处理(邮箱验证码是通过 post 直接发送需要加密 其他通过 sdk 在内部加密了 这一步无需加密)\n const password =\n businessRequestName === 'registerByEmailCode'\n ? await encrypt!(values.password, publicKey)\n : values.password\n\n submitButtonRef.current?.onSpin(true)\n\n if (isChangeComplete) {\n // 需要进行信息补全\n changeModule?.(GuardModuleType.REGISTER_COMPLETE_INFO, {\n businessRequestName,\n content: {\n ...content,\n password,\n },\n onRegisterSuccess,\n onRegisterFailed,\n })\n return\n } else {\n // 直接注册\n try {\n if (businessRequestName === 'registerByEmailCode') {\n const {\n code: resCode,\n data,\n onGuardHandling,\n message,\n } = await post('/api/v2/register/email-code', {\n email: content.email,\n code: content.code,\n password,\n profile: content.profile,\n ...content.options,\n })\n submitButtonRef.current.onSpin(false)\n if (resCode === 200) {\n onRegisterSuccess(data)\n // events?.onRegister?.(data, authClient)\n // changeModule?.(GuardModuleType.LOGIN)\n } else {\n if (resCode === ApiCode.UNSAFE_PASSWORD_TIP) {\n setPasswordErrorTextShow(true)\n }\n onGuardHandling?.()\n onRegisterFailed(resCode, data, message)\n events?.onRegisterError?.({\n code: resCode,\n data,\n message,\n })\n }\n } else if (businessRequestName === 'registerByPhoneCode') {\n const user = await authClient.registerByPhoneCode(\n content.phone,\n content.code,\n password,\n content.profile,\n content.options\n )\n submitButtonRef.current?.onSpin(false)\n onRegisterSuccess(user)\n // events?.onRegister?.(user, authClient)\n // changeModule?.(GuardModuleType.LOGIN)\n }\n } catch (error: any) {\n const { code, message: errorMessage, data } = error\n if (code === ApiCode.UNSAFE_PASSWORD_TIP) {\n setPasswordErrorTextShow(true)\n }\n submitButtonRef.current.onError()\n message.error(errorMessage)\n onRegisterFailed(code, data, errorMessage)\n // events?.onRegisterError?.({\n // code,\n // data,\n // message,\n // })\n } finally {\n submitButtonRef.current?.onSpin(false)\n }\n }\n },\n [\n authClient,\n businessRequestName,\n changeModule,\n content,\n encrypt,\n events,\n isChangeComplete,\n onRegisterFailed,\n onRegisterSuccess,\n post,\n publicKey,\n setPasswordErrorTextShow,\n ]\n )\n\n return (\n <div className=\"authing-g2-login-phone-code\">\n <Form\n name=\"resetPassword\"\n form={form}\n onFinish={onFinish}\n onFinishFailed={() => {\n submitButtonRef?.current?.onError()\n }}\n autoComplete=\"off\"\n >\n <CustomFormItem.Password\n className=\"authing-g2-input-form\"\n name=\"password\"\n required={true}\n >\n <InputPassword\n autoFocus={!isPhoneMedia}\n className=\"authing-g2-input\"\n size=\"large\"\n placeholder={t('login.inputPwd')}\n prefix={\n <IconFont\n type=\"authing-a-lock-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </CustomFormItem.Password>\n <Form.Item\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form\"\n name=\"password2\"\n rules={[\n {\n validator(_, value) {\n let pwd = form.getFieldValue('password')\n if (!value) {\n return Promise.reject(t('login.inputPwd'))\n }\n if (value !== pwd) {\n return Promise.reject(t('common.repeatPasswordDoc'))\n }\n return Promise.resolve()\n },\n },\n ]}\n >\n <InputPassword\n className=\"authing-g2-input\"\n size=\"large\"\n placeholder={t('login.inputPwdAgain')}\n prefix={\n <IconFont\n type=\"authing-a-lock-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </Form.Item>\n {getPassWordUnsafeText()}\n <Form.Item className=\"authing-g2-input-form submit-form\">\n <SubmitButton\n className=\"forget-password\"\n text={t('common.confirm')}\n ref={submitButtonRef}\n />\n </Form.Item>\n </Form>\n </div>\n )\n}\n","import { AuthenticationClient, CommonMessage, User } from 'authing-js-sdk'\nimport { getDefaultG2Config, IG2Config, IG2Events, IG2FCProps } from '../Type'\n\nexport interface CompleteInfoConfig extends IG2Config {}\n\nconst defaultConfig: CompleteInfoConfig = {\n ...getDefaultG2Config(),\n}\n\nexport const getDefaultCompleteInfoConfig = (): CompleteInfoConfig => ({\n ...getDefaultG2Config(),\n ...defaultConfig,\n})\n\nexport interface CompleteInfoEvents extends IG2Events {\n onRegisterInfoCompleted?: (\n user: User,\n udfs: {\n definition: any\n value: any\n }[],\n authClient: AuthenticationClient\n ) => void\n onRegisterInfoCompletedError?: (\n error: CommonMessage,\n udfs: {\n definition: any\n value: any\n }[],\n authClient: AuthenticationClient\n ) => void\n}\n\nexport interface GuardCompleteInfoProps extends IG2FCProps, CompleteInfoEvents {\n config: Partial<CompleteInfoConfig>\n}\n\nexport interface GuardCompleteInfoViewProps extends GuardCompleteInfoProps {\n config: CompleteInfoConfig\n initData: any\n onLogin?: any\n}\n\nexport type ExtendsFieldType = 'user' | 'internal'\n\nexport interface ExtendsField {\n type: ExtendsFieldType\n name: string\n label: string\n inputType: string\n required: boolean\n validateRules: any[]\n}\n\nexport enum FormValidateRule {\n NONE = 'none',\n EMAIL = 'email',\n PHONE = 'phone',\n IS_NUMBER = 'isNumber',\n REG_EXP = 'regExp',\n}\n\nexport interface CompleteInfoRule {\n type: FormValidateRule\n content: string\n errorMessage?: string\n}\n\nexport interface CompleteInfoSelectOption {\n value: string\n label: string\n}\n\nexport interface CompleteInfoMetaData {\n type: CompleteInfoBaseControls | CompleteInfoExtendsControls\n label: string\n name: string\n required: boolean\n validateRules: CompleteInfoRule[]\n options?: CompleteInfoSelectOption[]\n}\n\nexport enum CompleteInfoBaseControls {\n USERNAME = 'username',\n PHONE = 'phone',\n EMAIL = 'email',\n}\n\nexport enum CompleteInfoExtendsControls {\n IMAGE = 'image',\n NUMBER = 'number',\n DATE = 'date',\n DATE_TIME = 'dateTime',\n SELECT = 'select',\n DROPDOWN = 'dropdown',\n BOOLEAN = 'boolean',\n STRING = 'string',\n TEXT = 'text',\n GENDER = 'gender',\n COUNTRY = 'country',\n}\n\nexport interface CompleteInfoInitData {\n skip: boolean\n metaData: CompleteInfoMetaData[]\n}\n\nexport interface RegisterCompleteInfoInitData {\n content: any\n businessRequestName:\n | 'registerByEmail'\n | 'registerByPhoneCode'\n | 'registerByEmailCode'\n onRegisterFailed: Function\n onRegisterSuccess: Function\n}\n\nexport interface RegisterCompletePasswordInitData\n extends RegisterCompleteInfoInitData {\n isChangeComplete: boolean\n}\nexport interface CompleteInfoRequest {\n fieldValues: {\n name: string\n value: string\n code?: string\n }[]\n}\n\nexport enum OmitCompleteInfo {\n 'registerByEmail' = 'email',\n 'registerByPhoneCode' = 'phone',\n 'registerByEmailCode' = 'email',\n}\n","import React, { useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Form, message } from 'antd'\nimport { useGuardAuthClient } from '../../Guard/authClient'\nimport SubmitButton from '../../SubmitButton'\nimport CustomFormItem from '../../ValidatorRules'\nimport { IconFont } from '../../IconFont'\nimport { InputPassword } from '../../InputPassword'\nimport {\n useGuardInitData,\n useGuardIsAuthFlow,\n useGuardPublicConfig,\n} from '../../_utils/context'\nimport { authFlow, ChangePasswordBusinessAction } from '../businessRequest'\nimport { ApiCode } from '../../_utils/responseManagement/interface'\nimport { useMediaSize } from '../../_utils/hooks'\nimport { usePasswordErrorText } from '../../_utils/useErrorText'\ninterface FirstLoginResetProps {\n onReset: any\n}\nexport const FirstLoginReset: React.FC<FirstLoginResetProps> = ({\n onReset,\n}) => {\n const { t } = useTranslation()\n\n const initData = useGuardInitData<{ token: string }>()\n\n const isAuthFlow = useGuardIsAuthFlow()\n\n const { publicKey } = useGuardPublicConfig()\n\n let [form] = Form.useForm()\n\n let client = useGuardAuthClient()\n\n const encrypt = client.options.encryptFunction\n\n const { isPhoneMedia } = useMediaSize()\n\n let submitButtonRef = useRef<any>(null)\n const {\n getPassWordUnsafeText,\n setPasswordErrorTextShow,\n } = usePasswordErrorText()\n const onFinish = async (values: any) => {\n let newPassword = values.password\n submitButtonRef.current?.onSpin(true)\n\n if (isAuthFlow) {\n // 重置密码成功不会返回 UserInfo\n const { apiCode, onGuardHandling, message: msg } = await authFlow(\n ChangePasswordBusinessAction.FirstLoginReset,\n {\n password: await encrypt!(newPassword, publicKey),\n }\n )\n submitButtonRef.current?.onSpin(false)\n\n if (apiCode === ApiCode.ABORT_FLOW) {\n onReset()\n } else if (apiCode === ApiCode.UNSAFE_PASSWORD_TIP) {\n message.error(msg)\n setPasswordErrorTextShow(true)\n } else {\n submitButtonRef.current?.onError()\n onGuardHandling?.()\n }\n } else {\n try {\n let res = await client.resetPasswordByFirstLoginToken({\n token: initData.token,\n password: newPassword,\n })\n onReset(res)\n } catch (error: any) {\n message.error(error.message)\n submitButtonRef?.current?.onError()\n } finally {\n submitButtonRef.current?.onSpin(false)\n }\n }\n }\n\n return (\n <div className=\"authing-g2-login-phone-code\">\n <Form\n name=\"resetPassword\"\n form={form}\n onFinish={onFinish}\n onFinishFailed={() => {\n submitButtonRef?.current?.onError()\n }}\n autoComplete=\"off\"\n >\n <CustomFormItem.Password\n className=\"authing-g2-input-form\"\n name=\"password\"\n required={true}\n >\n <InputPassword\n autoFocus={!isPhoneMedia}\n className=\"authing-g2-input\"\n size=\"large\"\n placeholder={t('login.inputNewPwd')}\n prefix={\n <IconFont\n type=\"authing-a-lock-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </CustomFormItem.Password>\n <Form.Item\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form\"\n name=\"password2\"\n rules={[\n {\n validator(_, value) {\n let pwd = form.getFieldValue('password')\n if (!value) {\n return Promise.reject(t('login.inputPwd'))\n }\n if (value !== pwd) {\n return Promise.reject(t('common.repeatPasswordDoc'))\n }\n return Promise.resolve()\n },\n },\n ]}\n >\n <InputPassword\n className=\"authing-g2-input\"\n size=\"large\"\n placeholder={t('login.inputPwdAgain')}\n prefix={\n <IconFont\n type=\"authing-a-lock-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </Form.Item>\n {getPassWordUnsafeText()}\n <Form.Item className=\"authing-g2-input-form submit-form\">\n <SubmitButton\n className=\"forget-password\"\n text={t('common.confirm')}\n ref={submitButtonRef}\n />\n </Form.Item>\n </Form>\n </div>\n )\n}\n","import React, { useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Form, message } from 'antd'\nimport SubmitButton from '../../SubmitButton'\nimport { useGuardAuthClient } from '../../Guard/authClient'\nimport CustomFormItem from '../../ValidatorRules'\nimport { fieldRequiredRule } from '../../_utils'\nimport { InputPassword } from '../../InputPassword'\nimport { IconFont } from '../../IconFont'\nimport {\n useGuardInitData,\n useGuardIsAuthFlow,\n useGuardPublicConfig,\n} from '../../_utils/context'\nimport { authFlow, ChangePasswordBusinessAction } from '../businessRequest'\nimport { ApiCode } from '../../_utils/responseManagement/interface'\nimport { useMediaSize } from '../../_utils/hooks'\nimport { usePasswordErrorText } from '../../_utils/useErrorText'\n\ninterface RotateResetProps {\n onReset: any\n onFinishCallBack?: any\n}\n\nexport const RotateReset = (props: RotateResetProps) => {\n const { t } = useTranslation()\n\n const { onReset, onFinishCallBack } = props\n\n let [form] = Form.useForm()\n\n const { publicKey } = useGuardPublicConfig()\n\n let authClient = useGuardAuthClient()\n\n const { isPhoneMedia } = useMediaSize()\n\n const encrypt = authClient.options.encryptFunction\n\n const isAuthFlow = useGuardIsAuthFlow()\n\n let submitButtonRef = useRef<any>(null)\n\n const initData = useGuardInitData<{ token: string }>()\n const {\n getPassWordUnsafeText,\n setPasswordErrorTextShow,\n } = usePasswordErrorText()\n const onFinish = async (values: any) => {\n if (onFinishCallBack instanceof Function) {\n const data = await onFinishCallBack(values)\n if (data.code === ApiCode.UNSAFE_PASSWORD_TIP) {\n message.error(data.message)\n setPasswordErrorTextShow(true)\n }\n return\n }\n let { password, oldPassword } = values\n submitButtonRef?.current?.onSpin(true)\n\n if (isAuthFlow) {\n const { apiCode, onGuardHandling, message: msg } = await authFlow(\n ChangePasswordBusinessAction.ResetPassword,\n {\n password: await encrypt!(password, publicKey),\n oldPassword: await encrypt!(oldPassword, publicKey),\n }\n )\n\n submitButtonRef?.current?.onSpin(false)\n\n // 重置密码 返回的是流程终止\n if (apiCode === ApiCode.ABORT_FLOW) {\n onReset()\n } else if (apiCode === ApiCode.UNSAFE_PASSWORD_TIP) {\n message.error(msg)\n setPasswordErrorTextShow(true)\n } else {\n submitButtonRef?.current?.onError()\n onGuardHandling?.()\n }\n } else {\n try {\n let res = await authClient.resetPasswordByForceResetToken({\n token: initData.token,\n newPassword: password,\n oldPassword: oldPassword,\n })\n props.onReset({ code: 200, data: res })\n } catch (error: any) {\n message.error(error.message)\n submitButtonRef?.current?.onError()\n } finally {\n submitButtonRef?.current?.onSpin(false)\n }\n }\n }\n\n return (\n <div className=\"authing-g2-login-phone-code\">\n <Form\n name=\"resetPassword\"\n form={form}\n onFinish={onFinish}\n onFinishFailed={() => {\n submitButtonRef?.current?.onError()\n }}\n autoComplete=\"off\"\n >\n <Form.Item\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form\"\n name=\"oldPassword\"\n rules={[...fieldRequiredRule(t('common.password'))]}\n >\n <InputPassword\n autoFocus={!isPhoneMedia}\n className=\"authing-g2-input\"\n size=\"large\"\n placeholder={t('user.inputCurrPwd')}\n prefix={\n <IconFont\n type=\"authing-a-lock-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </Form.Item>\n <CustomFormItem.Password\n className=\"authing-g2-input-form\"\n name=\"password\"\n >\n <InputPassword\n className=\"authing-g2-input\"\n size=\"large\"\n placeholder={t('login.inputNewPwd')}\n prefix={\n <IconFont\n type=\"authing-a-lock-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </CustomFormItem.Password>\n <CustomFormItem.Password\n className=\"authing-g2-input-form\"\n name=\"password2\"\n rules={[\n {\n validator(_, value) {\n let pwd = form.getFieldValue('password')\n if (!value) {\n return Promise.reject(t('login.inputPwd'))\n }\n if (value !== pwd) {\n return Promise.reject(t('common.repeatPasswordDoc'))\n }\n return Promise.resolve()\n },\n },\n ]}\n >\n <InputPassword\n className=\"authing-g2-input\"\n size=\"large\"\n placeholder={t('login.inputPwdAgain')}\n prefix={\n <IconFont\n type=\"authing-a-lock-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </CustomFormItem.Password>\n {getPassWordUnsafeText()}\n <Form.Item className=\"authing-g2-input-form submit-form\">\n <SubmitButton\n className=\"forget-password\"\n text={t('common.confirm')}\n ref={submitButtonRef}\n />\n </Form.Item>\n </Form>\n </div>\n )\n}\n","import React, { useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Form, message } from 'antd'\nimport { useGuardAuthClient } from '../../Guard/authClient'\nimport SubmitButton from '../../SubmitButton'\nimport CustomFormItem from '../../ValidatorRules'\nimport { IconFont } from '../../IconFont'\nimport { InputPassword } from '../../InputPassword'\nimport {\n useGuardInitData,\n useGuardIsAuthFlow,\n useGuardPublicConfig,\n} from '../../_utils/context'\nimport { authFlow, ChangePasswordBusinessAction } from '../businessRequest'\nimport { ApiCode } from '../../_utils/responseManagement/interface'\nimport { useMediaSize } from '../../_utils/hooks'\nimport { usePasswordErrorText } from '../../_utils/useErrorText'\ninterface PasswordNotSafeResetProps {\n onReset: any\n}\nexport const PasswordNotSafeReset: React.FC<PasswordNotSafeResetProps> = ({\n onReset,\n}) => {\n const { t } = useTranslation()\n\n const initData = useGuardInitData<{ token: string }>()\n\n const isAuthFlow = useGuardIsAuthFlow()\n\n const { publicKey } = useGuardPublicConfig()\n\n let [form] = Form.useForm()\n\n let client = useGuardAuthClient()\n\n const encrypt = client.options.encryptFunction\n\n const { isPhoneMedia } = useMediaSize()\n\n let submitButtonRef = useRef<any>(null)\n const {\n getPassWordUnsafeText,\n setPasswordErrorTextShow,\n } = usePasswordErrorText()\n const onFinish = async (values: any) => {\n let newPassword = values.password\n submitButtonRef.current?.onSpin(true)\n\n if (isAuthFlow) {\n // 重置密码成功不会返回 UserInfo\n const { apiCode, onGuardHandling, message: msg } = await authFlow(\n ChangePasswordBusinessAction.ResetPasswordStrengthDetection,\n {\n password: await encrypt!(newPassword, publicKey),\n }\n )\n submitButtonRef.current?.onSpin(false)\n\n if (apiCode === ApiCode.ABORT_FLOW) {\n onReset()\n } else if (apiCode === ApiCode.UNSAFE_PASSWORD_TIP) {\n message.error(msg)\n setPasswordErrorTextShow(true)\n } else {\n submitButtonRef.current?.onError()\n onGuardHandling?.()\n }\n } else {\n try {\n let res = await client.resetPasswordByFirstLoginToken({\n token: initData.token,\n password: newPassword,\n })\n onReset(res)\n } catch (error: any) {\n message.error(error.message)\n submitButtonRef?.current?.onError()\n } finally {\n submitButtonRef.current?.onSpin(false)\n }\n }\n }\n\n return (\n <div className=\"authing-g2-login-phone-code\">\n <Form\n name=\"resetPassword\"\n form={form}\n onFinish={onFinish}\n onFinishFailed={() => {\n submitButtonRef?.current?.onError()\n }}\n autoComplete=\"off\"\n >\n <CustomFormItem.Password\n className=\"authing-g2-input-form\"\n name=\"password\"\n required={true}\n >\n <InputPassword\n autoFocus={!isPhoneMedia}\n className=\"authing-g2-input\"\n size=\"large\"\n placeholder={t('login.inputNewPwd')}\n prefix={\n <IconFont\n type=\"authing-a-lock-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </CustomFormItem.Password>\n <Form.Item\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form\"\n name=\"password2\"\n rules={[\n {\n validator(_, value) {\n let pwd = form.getFieldValue('password')\n if (!value) {\n return Promise.reject(t('login.inputPwd'))\n }\n if (value !== pwd) {\n return Promise.reject(t('common.repeatPasswordDoc'))\n }\n return Promise.resolve()\n },\n },\n ]}\n >\n <InputPassword\n className=\"authing-g2-input\"\n size=\"large\"\n placeholder={t('login.inputPwdAgain')}\n prefix={\n <IconFont\n type=\"authing-a-lock-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </Form.Item>\n {getPassWordUnsafeText()}\n <Form.Item className=\"authing-g2-input-form submit-form\">\n <SubmitButton\n className=\"forget-password\"\n text={t('common.confirm')}\n ref={submitButtonRef}\n />\n </Form.Item>\n </Form>\n </div>\n )\n}\n","import { message } from 'antd'\nimport React, { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { GuardModuleType } from '../Guard/module'\nimport { ImagePro } from '../ImagePro'\nimport {\n useGuardFinallyConfig,\n useGuardInitData,\n useGuardModule,\n} from '../_utils/context'\nimport { CompletePassword } from './core/completePassword'\nimport { FirstLoginReset } from './core/firstLoginReset'\nimport { RotateReset } from './core/rotateReset'\nimport { PasswordNotSafeReset } from './core/PasswordNotSafeReset'\n\n// 手动修改密码,并非「忘记密码」\n// 进入的场景是读取配置:1开了首次登录修改密码 || 2开了密码轮换\nexport const GuardChangePassword: React.FC<{\n title: string\n explain: string\n}> = (props) => {\n const { title, explain, children } = props\n\n const config = useGuardFinallyConfig()\n\n const typeContent = useMemo(\n () => ({\n title,\n explain,\n }),\n [explain, title]\n )\n\n return (\n <div className=\"g2-view-container g2-change-password\">\n <div className=\"g2-view-header\">\n <ImagePro\n src={config?.logo!}\n size={48}\n borderRadius={4}\n alt=\"\"\n className=\"icon\"\n />\n <div className=\"title\">{typeContent.title}</div>\n <div className=\"title-explain\">{typeContent.explain}</div>\n </div>\n <div className=\"g2-view-tabs\">{children}</div>\n </div>\n )\n}\n\nexport const GuardFirstLoginPasswordResetView: React.FC = () => {\n const { t } = useTranslation()\n\n const { changeModule } = useGuardModule()\n\n const onReset = () => {\n message.success(t('common.updatePsswordSuccess'))\n setTimeout(() => {\n changeModule?.(GuardModuleType.LOGIN)\n }, 500)\n }\n\n const config = useGuardFinallyConfig()\n\n const coreForm = <FirstLoginReset onReset={onReset} />\n\n return (\n <GuardChangePassword\n title={`${t('common.welcome')} ${config.title}`}\n explain={t('common.initPasswordText')}\n >\n {coreForm}\n </GuardChangePassword>\n )\n}\n\nexport const GuardPasswordNotSafeResetView: React.FC = () => {\n const { t } = useTranslation()\n\n const { changeModule } = useGuardModule()\n\n const onReset = () => {\n message.success(t('common.updatePsswordSuccess'))\n setTimeout(() => {\n changeModule?.(GuardModuleType.LOGIN)\n }, 500)\n }\n\n const config = useGuardFinallyConfig()\n\n const coreForm = <PasswordNotSafeReset onReset={onReset} />\n\n return (\n <GuardChangePassword\n title={`${t('common.welcome')} ${config.title}`}\n explain={t('common.unsafePasswordChangeText')}\n >\n {coreForm}\n </GuardChangePassword>\n )\n}\n\nexport const GuardForcedPasswordResetView: React.FC = () => {\n const { t } = useTranslation()\n\n const { changeModule } = useGuardModule()\n\n const initData = useGuardInitData<{ forcedCycle: number }>()\n\n const onReset = () => {\n message.success(t('common.updatePsswordSuccess'))\n setTimeout(() => {\n changeModule?.(GuardModuleType.LOGIN)\n }, 500)\n }\n\n const coreForm = <RotateReset onReset={onReset} />\n\n return (\n <GuardChangePassword\n title={t('user.modifyPwd')}\n explain={t('user.modifyPwdText', {\n number: initData.forcedCycle,\n })}\n >\n {coreForm}\n </GuardChangePassword>\n )\n}\n\nexport const GuardNoticePasswordResetView: React.FC = () => {\n const { t } = useTranslation()\n\n const { changeModule } = useGuardModule()\n\n const initData = useGuardInitData<{\n forcedCycle: number\n onFinishCallBack: any\n }>()\n\n const onReset = () => {\n message.success(t('common.updatePsswordSuccess'))\n setTimeout(() => {\n changeModule?.(GuardModuleType.LOGIN)\n }, 500)\n }\n\n const coreForm = (\n <RotateReset\n onReset={onReset}\n onFinishCallBack={initData.onFinishCallBack}\n />\n )\n\n return (\n <GuardChangePassword\n title={t('user.modifyPwd')}\n explain={t('user.modifyNoticePwdText', {\n number: initData.forcedCycle,\n })}\n >\n {coreForm}\n </GuardChangePassword>\n )\n}\n\nexport const GuardRegisterCompletePasswordView: React.FC = () => {\n const { t } = useTranslation()\n\n const config = useGuardFinallyConfig()\n\n return (\n <GuardChangePassword\n title={`${t('common.welcome')} ${config.title}`}\n explain={t('common.initPasswordText')}\n >\n <CompletePassword />\n </GuardChangePassword>\n )\n}\n","import { PlusOutlined } from '@ant-design/icons'\nimport { message, Spin, Upload } from 'antd'\nimport { UploadChangeParam } from 'antd/lib/upload'\nimport React, { FC, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useGuardContext } from '../../../context/global/context'\n\nexport const UploadImage: FC<{\n value?: string\n onChange?: (value: string) => void\n}> = ({ value, onChange }) => {\n const [uploading, setUploading] = useState(false)\n const { t } = useTranslation()\n const {\n state: {\n config: { apiHost },\n },\n } = useGuardContext()\n\n const onStatusChange = (info: UploadChangeParam) => {\n const { status } = info.file\n\n if (status === 'uploading') {\n setUploading(true)\n } else {\n setUploading(false)\n }\n\n if (status === 'done') {\n const { code, message: errMsg, data } = info.file.response\n if (code !== 200) {\n return message.error(errMsg)\n }\n const { url } = data\n onChange?.(url)\n } else if (status === 'error') {\n message.error(\n t('common.uploadFail', {\n name: info.file.name,\n })\n )\n }\n }\n\n const uploadButton = (\n <div>\n <PlusOutlined />\n <div style={{ marginTop: 8 }}>Upload</div>\n </div>\n )\n\n return (\n <Upload\n name=\"file\"\n accept=\"image/*\"\n listType=\"picture-card\"\n showUploadList={false}\n action={`${apiHost}/api/v2/upload?folder=photos`}\n onChange={onStatusChange}\n >\n <Spin size=\"small\" spinning={uploading}>\n {value ? (\n <img src={value} alt=\"\" style={{ width: '100%' }} />\n ) : (\n uploadButton\n )}\n </Spin>\n </Upload>\n )\n}\n","import { User } from 'authing-js-sdk'\nimport { getGuardAuthClient } from '../Guard/authClient'\nimport { getGuardHttp } from '../_utils/guardHttp'\nimport { CompleteInfoRequest, RegisterCompleteInfoInitData } from './interface'\n\nexport enum CompleteInfoAuthFlowAction {\n Complete = 'complete-completion',\n Skip = 'skip-completion',\n}\n\nexport const authFlow = async (\n action: CompleteInfoAuthFlowAction,\n data?: CompleteInfoRequest\n) => {\n const { authFlow } = getGuardHttp()\n\n const res = await authFlow(action, data)\n\n return res\n}\n\nconst registerMethod = (\n fnName: RegisterCompleteInfoInitData['businessRequestName'],\n content: any,\n profile: any\n) => {\n const authClient = getGuardAuthClient()\n\n const { post } = getGuardHttp()\n\n if (fnName === 'registerByEmail') {\n const phoneToken = profile.phoneToken\n\n delete profile.phoneToken\n\n return authClient!.registerByEmail(\n content.email,\n content.password,\n {\n ...content.profile,\n ...profile,\n },\n {\n ...content.options,\n phoneToken,\n }\n )\n } else if (fnName === 'registerByPhoneCode') {\n const emailToken = profile?.emailToken\n\n delete profile?.emailToken\n\n return authClient!.registerByPhoneCode(\n content.phone,\n content.code,\n content.password,\n {\n ...content.profile,\n ...profile,\n },\n {\n ...content.options,\n emailToken,\n }\n )\n } else if (fnName === 'registerByEmailCode') {\n const phoneToken = profile.phoneToken\n\n delete profile.phoneToken\n return post('/api/v2/register/email-code', {\n email: content.email,\n code: content.code,\n password: content.password,\n profile: {\n ...content.profile,\n ...profile,\n },\n ...content.options,\n phoneToken,\n }) as Promise<User>\n }\n}\n\nexport const registerSkipMethod = (\n fnName: RegisterCompleteInfoInitData['businessRequestName'],\n content: any\n) => {\n const authClient = getGuardAuthClient()\n const { post } = getGuardHttp()\n\n if (fnName === 'registerByEmail') {\n return authClient!.registerByEmail(\n content.email,\n content.password,\n {\n ...content.profile,\n },\n {\n ...content.options,\n }\n )\n } else if (fnName === 'registerByPhoneCode') {\n return authClient!.registerByPhoneCode(\n content.phone,\n content.code,\n content.password,\n {\n ...content.profile,\n },\n {\n ...content.options,\n }\n )\n } else if (fnName === 'registerByEmailCode') {\n return post('/api/v2/register/email-code', {\n email: content.email,\n code: content.code,\n password: content.password,\n profile: {\n ...content.profile,\n },\n ...content.options,\n })\n }\n}\n\nexport const registerRequest = async (\n action: CompleteInfoAuthFlowAction,\n registerFnName: RegisterCompleteInfoInitData['businessRequestName'],\n registerContent: any,\n registerProfile?: any\n) => {\n if (action === CompleteInfoAuthFlowAction.Skip) {\n return await registerSkipMethod(registerFnName, registerContent)\n } else if (action === CompleteInfoAuthFlowAction.Complete) {\n return await registerMethod(\n registerFnName,\n registerContent,\n registerProfile\n )\n }\n}\n","import Input, { InputProps } from 'antd/lib/input'\nimport React, { useState } from 'react'\n\nexport interface InputNumberProps extends InputProps {}\n\nexport const InputNumber = React.forwardRef<any, InputNumberProps>(\n (props, ref) => {\n const { onChange, value: propsValue, ...inputProps } = props\n const [value, setValue] = useState<InputNumberProps['value']>(\n /^[0-9]*$/.test(String(propsValue)) ? propsValue : ''\n )\n\n const valueChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value)\n onChange?.(e)\n }\n\n return (\n <Input\n {...inputProps}\n ref={ref}\n value={value}\n type=\"tel\"\n pattern=\"[0-9]*\"\n onChange={(e) => {\n let v = e.target.value\n if (!/^[0-9]*$/.test(v)) {\n return\n }\n\n valueChange(e)\n }}\n />\n )\n }\n)\n","import { Button } from 'antd'\nimport React, { FC, useState, useRef, useEffect, useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport './style.less'\nimport { ButtonProps } from 'antd/lib/button'\n\nconst TIME = 60\nexport interface SendCodeProps extends ButtonProps {\n beforeSend: () => Promise<boolean>\n btnRef?: React.RefObject<HTMLButtonElement>\n setSent?: (value: boolean) => void\n sendDesc?: string\n}\n\nconst useSentCounter = (effect: any) => {\n const [countDown, setCountDown] = useState(0)\n const timerRef = useRef<any>(0)\n\n useEffect(() => {\n return () => clearInterval(timerRef.current)\n }, [])\n\n useEffect(() => {\n if (countDown <= 0) {\n clearInterval(timerRef.current)\n effect?.(false)\n } else {\n effect?.(true)\n }\n }, [countDown, effect])\n\n const enabled = useMemo(() => countDown <= 0, [countDown])\n\n const send = () => {\n setCountDown(TIME)\n\n timerRef.current = setInterval(() => {\n setCountDown((prev) => {\n return prev - 1\n })\n }, 1000)\n }\n\n return {\n enabled,\n send,\n countDown,\n }\n}\n\nexport const SendCodeBtn: FC<SendCodeProps> = (props) => {\n const { t } = useTranslation()\n const {\n sendDesc = t('login.clickSent'),\n beforeSend,\n btnRef,\n setSent,\n ...buttonProps\n } = props\n const { enabled, send, countDown } = useSentCounter(setSent)\n const [loading, setLoading] = useState(false)\n const disabled = useMemo(() => {\n return !enabled || loading\n }, [enabled, loading])\n\n const onClick = async (e: React.MouseEvent<HTMLButtonElement>) => {\n setLoading(true)\n if (disabled) {\n return\n }\n let beforeStop = !(await beforeSend())\n if (beforeStop) {\n setLoading(false)\n return\n }\n setLoading(false)\n send()\n }\n\n return (\n <Button\n {...buttonProps}\n className={\n buttonProps.type ?? 'authing-g2-send-code-btn g2-loading-btn-center'\n }\n disabled={disabled}\n loading={loading}\n onClick={onClick}\n ref={btnRef}\n >\n {loading === true && <span></span>}\n {loading === false && (\n <span>\n {enabled\n ? sendDesc\n : t('common.retryAfterTime', {\n time: countDown,\n })}\n </span>\n )}\n </Button>\n )\n}\n","import { Col, Row } from 'antd'\nimport React, { FC } from 'react'\n\nimport { SendCodeBtn } from './SendCodeBtn'\n\nimport './style.less'\nimport { useTranslation } from 'react-i18next'\n\nimport { InputProps } from 'antd/lib/input'\nimport { InputNumber } from '../InputNumber'\n\nexport interface SendPhoneCodeProps extends InputProps {\n form?: any\n beforeSend?: any // 点击的时候先做这个\n autoSubmit?: boolean //验证码输入完毕是否自动提交\n}\n\nexport const SendCode: FC<SendPhoneCodeProps> = ({\n value,\n onChange,\n autoSubmit = false,\n form,\n beforeSend,\n maxLength,\n ...inputProps\n}) => {\n const { t } = useTranslation()\n\n return (\n <>\n <Row justify=\"space-between\" align=\"middle\">\n <Col span={15} className=\"g2-send-code-input-col\">\n <InputNumber\n value={value}\n onChange={(e) => {\n onChange?.(e)\n if (!autoSubmit) return\n if (maxLength && e.target.value.length >= maxLength) {\n form?.submit()\n }\n }}\n {...inputProps}\n maxLength={maxLength}\n />\n </Col>\n <Col offset={1} span={8}>\n <SendCodeBtn\n beforeSend={beforeSend}\n sendDesc={t('common.sendVerifyCode')}\n />\n </Col>\n </Row>\n </>\n )\n}\n","import { message } from 'antd'\nimport React, { FC } from 'react'\nimport './style.less'\nimport { useTranslation } from 'react-i18next'\nimport { validate } from '../_utils'\nimport { InputProps } from 'antd/lib/input'\nimport { SendCode } from './index'\nimport { getGuardHttp } from '../_utils/guardHttp'\nimport { EmailScene } from '../Type'\nexport interface SendCodeByEmailProps extends InputProps {\n data?: string\n form?: any\n onSendCodeBefore?: any // 点击的时候先做这个\n fieldName?: string\n autoSubmit?: boolean //验证码输入完毕是否自动提交\n scene: EmailScene\n}\n\nexport const SendCodeByEmail: FC<SendCodeByEmailProps> = (props) => {\n const {\n scene,\n data,\n form,\n onSendCodeBefore,\n fieldName,\n ...remainProps\n } = props\n const { t } = useTranslation()\n\n const { post } = getGuardHttp()\n const sendEmail = async (email: string) => {\n if (!email) {\n message.error(t('login.inputEmail'))\n return false\n }\n if (!validate('email', email)) {\n message.error(t('common.emailFormatError'))\n return false\n }\n try {\n const { code } = await post('/api/v2/email/send', {\n email,\n scene,\n })\n if (code === 200) {\n return true\n } else {\n message.error(t('login.sendCodeTimeout'))\n return false\n }\n // await await authClient.sendEmail(email, scene)\n // onSend?.()\n } catch (error) {\n // onError?.(error)\n return false\n }\n }\n\n return (\n <SendCode\n beforeSend={() => {\n return onSendCodeBefore()\n .then(async (b: any) => {\n let email = form ? form.getFieldValue(fieldName || 'email') : data\n return await sendEmail(email)\n })\n .catch((e: any) => {\n return false\n })\n }}\n form={form}\n {...remainProps}\n />\n )\n}\n","import { message } from 'antd'\nimport React, { FC } from 'react'\nimport { SceneType } from 'authing-js-sdk'\nimport './style.less'\nimport { useTranslation } from 'react-i18next'\nimport { useGuardAuthClient } from '../Guard/authClient'\nimport { InputProps } from 'antd/lib/input'\nimport { SendCode } from './index'\nimport { parsePhone } from '../_utils/hooks'\nexport interface SendCodeByPhoneProps extends InputProps {\n data?: string\n form?: any\n onSendCodeBefore?: any // 点击的时候先做这个\n fieldName?: string\n autoSubmit?: boolean //验证码输入完毕是否自动提交\n scene: SceneType\n areaCode?: string //国际区号\n isInternationSms?: boolean //是否是国际短信\n}\n\nexport const SendCodeByPhone: FC<SendCodeByPhoneProps> = (props) => {\n const {\n scene,\n data,\n form,\n areaCode,\n onSendCodeBefore,\n fieldName,\n isInternationSms = false,\n ...remainProps\n } = props\n const { t } = useTranslation()\n\n const authClient = useGuardAuthClient()\n\n const sendPhone = async (phone: string, countryCode?: string) => {\n try {\n await authClient.sendSmsCode(phone, countryCode, scene)\n return true\n } catch (error: any) {\n if (error.code === 'ECONNABORTED') {\n message.error(t('login.sendCodeTimeout'))\n return false\n }\n const { message: msg } = JSON.parse(error.message)\n message.error(msg)\n return false\n }\n }\n\n return (\n <>\n <SendCode\n beforeSend={() => {\n return onSendCodeBefore()\n .then(async (b: any) => {\n let fieldValue = form\n ? form.getFieldValue(fieldName || 'phone')\n : data\n const { phoneNumber, countryCode } = parsePhone(\n isInternationSms,\n fieldValue,\n areaCode\n )\n\n return await sendPhone(phoneNumber, countryCode)\n })\n .catch((e: any) => {\n return false\n })\n }}\n form={form}\n {...remainProps}\n />\n </>\n )\n}\n","export interface IsoType {\n iso: string\n regions: string\n regions_en: string\n phoneCountryCode: string\n}\nexport const isoInfo: IsoType[] = [\n {\n iso: 'CA',\n regions: '加拿大',\n regions_en: 'Canada',\n phoneCountryCode: '+1',\n },\n {\n iso: 'US',\n regions: '美国',\n regions_en: 'United States',\n phoneCountryCode: '+1',\n },\n {\n iso: 'KZ',\n regions: '哈萨克斯坦',\n regions_en: 'Kazakhstan',\n phoneCountryCode: '+7',\n },\n {\n iso: 'RU',\n regions: '俄罗斯',\n regions_en: 'Russia',\n phoneCountryCode: '+7',\n },\n {\n iso: 'EG',\n regions: '埃及',\n regions_en: 'Egypt',\n phoneCountryCode: '+20',\n },\n {\n iso: 'ZA',\n regions: '南非',\n regions_en: 'South Africa',\n phoneCountryCode: '+27',\n },\n {\n iso: 'GR',\n regions: '希腊',\n regions_en: 'Greece',\n phoneCountryCode: '+30',\n },\n {\n iso: 'NL',\n regions: '荷兰',\n regions_en: 'Netherlands',\n phoneCountryCode: '+31',\n },\n {\n iso: 'BE',\n regions: '比利时',\n regions_en: 'Belgium',\n phoneCountryCode: '+32',\n },\n {\n iso: 'FR',\n regions: '法国',\n regions_en: 'France',\n phoneCountryCode: '+33',\n },\n {\n iso: 'ES',\n regions: '西班牙',\n regions_en: 'Spain',\n phoneCountryCode: '+34',\n },\n {\n iso: 'HU',\n regions: '匈牙利',\n regions_en: 'Hungary',\n phoneCountryCode: '+36',\n },\n {\n iso: 'IT',\n regions: '意大利',\n regions_en: 'Italy',\n phoneCountryCode: '+39',\n },\n {\n iso: 'RO',\n regions: '罗马尼亚',\n regions_en: 'Romania',\n phoneCountryCode: '+40',\n },\n {\n iso: 'CH',\n regions: '瑞士',\n regions_en: 'Switzerland',\n phoneCountryCode: '+41',\n },\n {\n iso: 'AT',\n regions: '奥地利',\n regions_en: 'Austria',\n phoneCountryCode: '+43',\n },\n {\n iso: 'GB',\n regions: '英国',\n regions_en: 'United Kingdom',\n phoneCountryCode: '+44',\n },\n {\n iso: 'DK',\n regions: '丹麦',\n regions_en: 'Denmark',\n phoneCountryCode: '+45',\n },\n {\n iso: 'SE',\n regions: '瑞典',\n regions_en: 'Sweden',\n phoneCountryCode: '+46',\n },\n {\n iso: 'NO',\n regions: '挪威',\n regions_en: 'Norway',\n phoneCountryCode: '+47',\n },\n {\n iso: 'PL',\n regions: '波兰',\n regions_en: 'Poland',\n phoneCountryCode: '+48',\n },\n {\n iso: 'DE',\n regions: '德国',\n regions_en: 'Germany',\n phoneCountryCode: '+49',\n },\n {\n iso: 'PE',\n regions: '秘鲁',\n regions_en: 'Peru',\n phoneCountryCode: '+51',\n },\n {\n iso: 'MX',\n regions: '墨西哥',\n regions_en: 'Mexico',\n phoneCountryCode: '+52',\n },\n {\n iso: 'CU',\n regions: '古巴',\n regions_en: 'Cuba',\n phoneCountryCode: '+53',\n },\n {\n iso: 'AR',\n regions: '阿根廷',\n regions_en: 'Argentina',\n phoneCountryCode: '+54',\n },\n {\n iso: 'BR',\n regions: '巴西',\n regions_en: 'Brazil',\n phoneCountryCode: '+55',\n },\n {\n iso: 'CL',\n regions: '智利',\n regions_en: 'Chile',\n phoneCountryCode: '+56',\n },\n {\n iso: 'CO',\n regions: '哥伦比亚',\n regions_en: 'Colombia',\n phoneCountryCode: '+57',\n },\n {\n iso: 'VE',\n regions: '委内瑞拉',\n regions_en: 'Venezuela',\n phoneCountryCode: '+58',\n },\n {\n iso: 'MY',\n regions: '马来西亚',\n regions_en: 'Malaysia',\n phoneCountryCode: '+60',\n },\n {\n iso: 'AU',\n regions: '澳大利亚',\n regions_en: 'Australia',\n phoneCountryCode: '+61',\n },\n {\n iso: 'ID',\n regions: '印度尼西亚',\n regions_en: 'Indonesia',\n phoneCountryCode: '+62',\n },\n {\n iso: 'PH',\n regions: '菲律宾',\n regions_en: 'Philippines',\n phoneCountryCode: '+63',\n },\n {\n iso: 'NZ',\n regions: '新西兰',\n regions_en: 'New Zealand',\n phoneCountryCode: '+64',\n },\n {\n iso: 'SG',\n regions: '新加坡',\n regions_en: 'Singapore',\n phoneCountryCode: '+65',\n },\n {\n iso: 'TH',\n regions: '泰国',\n regions_en: 'Thailand',\n phoneCountryCode: '+66',\n },\n {\n iso: 'JP',\n regions: '日本',\n regions_en: 'Japan',\n phoneCountryCode: '+81',\n },\n {\n iso: 'KR',\n regions: '韩国',\n regions_en: 'South Korea',\n phoneCountryCode: '+82',\n },\n {\n iso: 'VN',\n regions: '越南',\n regions_en: 'Vietnam',\n phoneCountryCode: '+84',\n },\n {\n iso: 'CN',\n regions: '中国',\n regions_en: 'China',\n phoneCountryCode: '+86',\n },\n {\n iso: 'TR',\n regions: '土耳其',\n regions_en: 'Turkey',\n phoneCountryCode: '+90',\n },\n {\n iso: 'IN',\n regions: '印度',\n regions_en: 'India',\n phoneCountryCode: '+91',\n },\n {\n iso: 'PK',\n regions: '巴基斯坦',\n regions_en: 'Pakistan',\n phoneCountryCode: '+92',\n },\n {\n iso: 'AF',\n regions: '阿富汗',\n regions_en: 'Afghanistan',\n phoneCountryCode: '+93',\n },\n {\n iso: 'LK',\n regions: '斯里兰卡',\n regions_en: 'Sri Lanka',\n phoneCountryCode: '+94',\n },\n {\n iso: 'MM',\n regions: '缅甸',\n regions_en: 'Myanmar',\n phoneCountryCode: '+95',\n },\n {\n iso: 'IR',\n regions: '伊朗',\n regions_en: 'Iran',\n phoneCountryCode: '+98',\n },\n {\n iso: 'MA',\n regions: '摩洛哥',\n regions_en: 'Morocco',\n phoneCountryCode: '+212',\n },\n {\n iso: 'DZ',\n regions: '阿尔及利亚',\n regions_en: 'Algeria',\n phoneCountryCode: '+213',\n },\n {\n iso: 'TN',\n regions: '突尼斯',\n regions_en: 'Tunisia',\n phoneCountryCode: '+216',\n },\n {\n iso: 'LY',\n regions: '利比亚',\n regions_en: 'Libya',\n phoneCountryCode: '+218',\n },\n {\n iso: 'GM',\n regions: '冈比亚',\n regions_en: 'Gambia',\n phoneCountryCode: '+220',\n },\n {\n iso: 'SN',\n regions: '塞内加尔',\n regions_en: 'Senegal',\n phoneCountryCode: '+221',\n },\n {\n iso: 'MR',\n regions: '毛里塔尼亚',\n regions_en: 'Mauritania',\n phoneCountryCode: '+222',\n },\n {\n iso: 'ML',\n regions: '马里',\n regions_en: 'Mali',\n phoneCountryCode: '+223',\n },\n {\n iso: 'GN',\n regions: '几内亚',\n regions_en: 'Guinea',\n phoneCountryCode: '+224',\n },\n {\n iso: 'CI',\n regions: '象牙海岸',\n regions_en: 'Ivory Coast',\n phoneCountryCode: '+225',\n },\n {\n iso: 'BF',\n regions: '布基纳法索',\n regions_en: 'Burkina Faso',\n phoneCountryCode: '+226',\n },\n {\n iso: 'NE',\n regions: '尼日尔',\n regions_en: 'Niger',\n phoneCountryCode: '+227',\n },\n {\n iso: 'TG',\n regions: '多哥',\n regions_en: 'Togo',\n phoneCountryCode: '+228',\n },\n {\n iso: 'BJ',\n regions: '贝宁',\n regions_en: 'Benin',\n phoneCountryCode: '+229',\n },\n {\n iso: 'MU',\n regions: '毛里求斯',\n regions_en: 'Mauritius',\n phoneCountryCode: '+230',\n },\n {\n iso: 'LR',\n regions: '利比里亚',\n regions_en: 'Liberia',\n phoneCountryCode: '+231',\n },\n {\n iso: 'SL',\n regions: '塞拉利昂',\n regions_en: 'Sierra Leone',\n phoneCountryCode: '+232',\n },\n {\n iso: 'GH',\n regions: '加纳',\n regions_en: 'Ghana',\n phoneCountryCode: '+233',\n },\n {\n iso: 'NG',\n regions: '尼日利亚',\n regions_en: 'Nigeria',\n phoneCountryCode: '+234',\n },\n {\n iso: 'TD',\n regions: '乍得',\n regions_en: 'Chad',\n phoneCountryCode: '+235',\n },\n {\n iso: 'CF',\n regions: '中非共和国',\n regions_en: 'Central African Republic',\n phoneCountryCode: '+236',\n },\n {\n iso: 'CM',\n regions: '喀麦隆',\n regions_en: 'Cameroon',\n phoneCountryCode: '+237',\n },\n {\n iso: 'CV',\n regions: '开普',\n regions_en: 'Cape Verde',\n phoneCountryCode: '+238',\n },\n {\n iso: 'ST',\n regions: '圣多美和普林西比',\n regions_en: 'Sao Tome and Principe',\n phoneCountryCode: '+239',\n },\n {\n iso: 'GQ',\n regions: '赤道几内亚',\n regions_en: 'Equatorial Guinea',\n phoneCountryCode: '+240',\n },\n {\n iso: 'GA',\n regions: '加蓬',\n regions_en: 'Gabon',\n phoneCountryCode: '+241',\n },\n {\n iso: 'CG',\n regions: '刚果共和国',\n regions_en: 'Republic Of The Congo',\n phoneCountryCode: '+242',\n },\n {\n iso: 'CD',\n regions: '刚果民主共和国',\n regions_en: 'Democratic Republic of theCongo',\n phoneCountryCode: '+243',\n },\n {\n iso: 'AO',\n regions: '安哥拉',\n regions_en: 'Angola',\n phoneCountryCode: '+244',\n },\n {\n iso: 'GW',\n regions: '几内亚比绍共和国',\n regions_en: 'Guinea-Bissau',\n phoneCountryCode: '+245',\n },\n {\n iso: 'SC',\n regions: '塞舌尔',\n regions_en: 'Seychelles',\n phoneCountryCode: '+248',\n },\n {\n iso: 'SD',\n regions: '苏丹',\n regions_en: 'Sudan',\n phoneCountryCode: '+249',\n },\n {\n iso: 'RW',\n regions: '卢旺达',\n regions_en: 'Rwanda',\n phoneCountryCode: '+250',\n },\n {\n iso: 'ET',\n regions: '埃塞俄比亚',\n regions_en: 'Ethiopia',\n phoneCountryCode: '+251',\n },\n {\n iso: 'SO',\n regions: '索马里',\n regions_en: 'Somalia',\n phoneCountryCode: '+252',\n },\n {\n iso: 'DJ',\n regions: '吉布提',\n regions_en: 'Djibouti',\n phoneCountryCode: '+253',\n },\n {\n iso: 'KE',\n regions: '肯尼亚',\n regions_en: 'Kenya',\n phoneCountryCode: '+254',\n },\n {\n iso: 'TZ',\n regions: '坦桑尼亚',\n regions_en: 'Tanzania',\n phoneCountryCode: '+255',\n },\n {\n iso: 'UG',\n regions: '乌干达',\n regions_en: 'Uganda',\n phoneCountryCode: '+256',\n },\n {\n iso: 'BI',\n regions: '布隆迪',\n regions_en: 'Burundi',\n phoneCountryCode: '+257',\n },\n {\n iso: 'MZ',\n regions: '莫桑比克',\n regions_en: 'Mozambique',\n phoneCountryCode: '+258',\n },\n {\n iso: 'ZM',\n regions: '赞比亚',\n regions_en: 'Zambia',\n phoneCountryCode: '+260',\n },\n {\n iso: 'MG',\n regions: '马达加斯加',\n regions_en: 'Madagascar',\n phoneCountryCode: '+261',\n },\n {\n iso: 'RE',\n regions: '留尼汪',\n regions_en: 'Réunion Island',\n phoneCountryCode: '+262',\n },\n {\n iso: 'ZW',\n regions: '津巴布韦',\n regions_en: 'Zimbabwe',\n phoneCountryCode: '+263',\n },\n {\n iso: 'NA',\n regions: '纳米比亚',\n regions_en: 'Namibia',\n phoneCountryCode: '+264',\n },\n {\n iso: 'MW',\n regions: '马拉维',\n regions_en: 'Malawi',\n phoneCountryCode: '+265',\n },\n {\n iso: 'LS',\n regions: '莱索托',\n regions_en: 'Lesotho',\n phoneCountryCode: '+266',\n },\n {\n iso: 'BW',\n regions: '博茨瓦纳',\n regions_en: 'Botswana',\n phoneCountryCode: '+267',\n },\n {\n iso: 'SZ',\n regions: '斯威士兰',\n regions_en: 'Swaziland',\n phoneCountryCode: '+268',\n },\n {\n iso: 'KM',\n regions: '科摩罗',\n regions_en: 'Comoros',\n phoneCountryCode: '+269',\n },\n {\n iso: 'YT',\n regions: '马约特',\n regions_en: 'Mayotte',\n phoneCountryCode: '+269',\n },\n {\n iso: 'ER',\n regions: '厄立特里亚',\n regions_en: 'Eritrea',\n phoneCountryCode: '+291',\n },\n {\n iso: 'AW',\n regions: '阿鲁巴',\n regions_en: 'Aruba',\n phoneCountryCode: '+297',\n },\n {\n iso: 'FO',\n regions: '法罗群岛',\n regions_en: 'Faroe Islands',\n phoneCountryCode: '+298',\n },\n {\n iso: 'GL',\n regions: '格陵兰岛',\n regions_en: 'Greenland',\n phoneCountryCode: '+299',\n },\n {\n iso: 'GI',\n regions: '直布罗陀',\n regions_en: 'Gibraltar',\n phoneCountryCode: '+350',\n },\n {\n iso: 'PT',\n regions: '葡萄牙',\n regions_en: 'Portugal',\n phoneCountryCode: '+351',\n },\n {\n iso: 'LU',\n regions: '卢森堡',\n regions_en: 'Luxembourg',\n phoneCountryCode: '+352',\n },\n {\n iso: 'IE',\n regions: '爱尔兰',\n regions_en: 'Ireland',\n phoneCountryCode: '+353',\n },\n {\n iso: 'IS',\n regions: '冰岛',\n regions_en: 'Iceland',\n phoneCountryCode: '+354',\n },\n {\n iso: 'AL',\n regions: '阿尔巴尼亚',\n regions_en: 'Albania',\n phoneCountryCode: '+355',\n },\n {\n iso: 'MT',\n regions: '马耳他',\n regions_en: 'Malta',\n phoneCountryCode: '+356',\n },\n {\n iso: 'CY',\n regions: '塞浦路斯',\n regions_en: 'Cyprus',\n phoneCountryCode: '+357',\n },\n {\n iso: 'FI',\n regions: '芬兰',\n regions_en: 'Finland',\n phoneCountryCode: '+358',\n },\n {\n iso: 'BG',\n regions: '保加利亚',\n regions_en: 'Bulgaria',\n phoneCountryCode: '+359',\n },\n {\n iso: 'LT',\n regions: '立陶宛',\n regions_en: 'Lithuania',\n phoneCountryCode: '+370',\n },\n {\n iso: 'LV',\n regions: '拉脱维亚',\n regions_en: 'Latvia',\n phoneCountryCode: '+371',\n },\n {\n iso: 'EE',\n regions: '爱沙尼亚',\n regions_en: 'Estonia',\n phoneCountryCode: '+372',\n },\n {\n iso: 'MD',\n regions: '摩尔多瓦',\n regions_en: 'Moldova',\n phoneCountryCode: '+373',\n },\n {\n iso: 'AM',\n regions: '亚美尼亚',\n regions_en: 'Armenia',\n phoneCountryCode: '+374',\n },\n {\n iso: 'BY',\n regions: '白俄罗斯',\n regions_en: 'Belarus',\n phoneCountryCode: '+375',\n },\n {\n iso: 'AD',\n regions: '安道尔',\n regions_en: 'Andorra',\n phoneCountryCode: '+376',\n },\n {\n iso: 'MC',\n regions: '摩纳哥',\n regions_en: 'Monaco',\n phoneCountryCode: '+377',\n },\n {\n iso: 'SM',\n regions: '圣马力诺',\n regions_en: 'San Marino',\n phoneCountryCode: '+378',\n },\n {\n iso: 'UA',\n regions: '乌克兰',\n regions_en: 'Ukraine',\n phoneCountryCode: '+380',\n },\n {\n iso: 'RS',\n regions: '塞尔维亚',\n regions_en: 'Serbia',\n phoneCountryCode: '+381',\n },\n {\n iso: 'ME',\n regions: '黑山',\n regions_en: 'Montenegro',\n phoneCountryCode: '+382',\n },\n {\n iso: 'HR',\n regions: '克罗地亚',\n regions_en: 'Croatia',\n phoneCountryCode: '+385',\n },\n {\n iso: 'SI',\n regions: '斯洛文尼亚',\n regions_en: 'Slovenia',\n phoneCountryCode: '+386',\n },\n {\n iso: 'BA',\n regions: '波斯尼亚和黑塞哥维那',\n regions_en: 'Bosniaand Herzegovina',\n phoneCountryCode: '+387',\n },\n {\n iso: 'MK',\n regions: '马其顿',\n regions_en: 'Macedonia',\n phoneCountryCode: '+389',\n },\n {\n iso: 'CZ',\n regions: '捷克',\n regions_en: 'Czech',\n phoneCountryCode: '+420',\n },\n {\n iso: 'SK',\n regions: '斯洛伐克',\n regions_en: 'Slovakia',\n phoneCountryCode: '+421',\n },\n {\n iso: 'LI',\n regions: '列支敦士登',\n regions_en: 'Liechtenstein',\n phoneCountryCode: '+423',\n },\n {\n iso: 'BZ',\n regions: '伯利兹',\n regions_en: 'Belize',\n phoneCountryCode: '+501',\n },\n {\n iso: 'GT',\n regions: '瓜地马拉',\n regions_en: 'Guatemala',\n phoneCountryCode: '+502',\n },\n {\n iso: 'SV',\n regions: '萨尔瓦多',\n regions_en: 'ElSalvador',\n phoneCountryCode: '+503',\n },\n {\n iso: 'HN',\n regions: '洪都拉斯',\n regions_en: 'Honduras',\n phoneCountryCode: '+504',\n },\n {\n iso: 'NI',\n regions: '尼加拉瓜',\n regions_en: 'Nicaragua',\n phoneCountryCode: '+505',\n },\n {\n iso: 'CR',\n regions: '哥斯达黎加',\n regions_en: 'CostaRica',\n phoneCountryCode: '+506',\n },\n {\n iso: 'PA',\n regions: '巴拿马',\n regions_en: 'Panama',\n phoneCountryCode: '+507',\n },\n {\n iso: 'PM',\n regions: '圣彼埃尔和密克隆岛',\n regions_en: 'Saint Pierreand Miquelon',\n phoneCountryCode: '+508',\n },\n {\n iso: 'HT',\n regions: '海地',\n regions_en: 'Haiti',\n phoneCountryCode: '+509',\n },\n {\n iso: 'GP',\n regions: '瓜德罗普岛',\n regions_en: 'Guadeloupe',\n phoneCountryCode: '+590',\n },\n {\n iso: 'BO',\n regions: '玻利维亚',\n regions_en: 'Bolivia',\n phoneCountryCode: '+591',\n },\n {\n iso: 'GY',\n regions: '圭亚那',\n regions_en: 'Guyana',\n phoneCountryCode: '+592',\n },\n {\n iso: 'EC',\n regions: '厄瓜多尔',\n regions_en: 'Ecuador',\n phoneCountryCode: '+593',\n },\n {\n iso: 'GF',\n regions: '法属圭亚那',\n regions_en: 'French Guiana',\n phoneCountryCode: '+594',\n },\n {\n iso: 'PY',\n regions: '巴拉圭',\n regions_en: 'Paraguay',\n phoneCountryCode: '+595',\n },\n {\n iso: 'SR',\n regions: '苏里南',\n regions_en: 'Suriname',\n phoneCountryCode: '+597',\n },\n {\n iso: 'UY',\n regions: '乌拉圭',\n regions_en: 'Uruguay',\n phoneCountryCode: '+598',\n },\n {\n iso: 'BQ',\n regions: '荷兰加勒比',\n regions_en: 'Caribisch Nederland',\n phoneCountryCode: '+599',\n },\n {\n iso: 'CW',\n regions: '库拉索',\n regions_en: 'Curacao',\n phoneCountryCode: '+599',\n },\n {\n iso: 'TL',\n regions: '东帝汶',\n regions_en: 'East Timor',\n phoneCountryCode: '+670',\n },\n {\n iso: 'BN',\n regions: '文莱',\n regions_en: 'Brunei',\n phoneCountryCode: '+673',\n },\n {\n iso: 'NR',\n regions: '拿鲁岛',\n regions_en: 'Nauru',\n phoneCountryCode: '+674',\n },\n {\n iso: 'PG',\n regions: '巴布亚新几内亚',\n regions_en: 'Papua New Guinea',\n phoneCountryCode: '+675',\n },\n {\n iso: 'TO',\n regions: '汤加',\n regions_en: 'Tonga',\n phoneCountryCode: '+676',\n },\n {\n iso: 'SB',\n regions: '所罗门群岛',\n regions_en: 'Solomon Islands',\n phoneCountryCode: '+677',\n },\n {\n iso: 'VU',\n regions: '瓦努阿图',\n regions_en: 'Vanuatu',\n phoneCountryCode: '+678',\n },\n {\n iso: 'FJ',\n regions: '斐济',\n regions_en: 'Fiji',\n phoneCountryCode: '+679',\n },\n {\n iso: 'PW',\n regions: '帕劳',\n regions_en: 'Palau',\n phoneCountryCode: '+680',\n },\n {\n iso: 'CK',\n regions: '库克群岛',\n regions_en: 'Cook Islands',\n phoneCountryCode: '+682',\n },\n {\n iso: 'WS',\n regions: '萨摩亚',\n regions_en: 'Samoa',\n phoneCountryCode: '+685',\n },\n {\n iso: 'KI',\n regions: '基里巴斯',\n regions_en: 'Kiribati',\n phoneCountryCode: '+686',\n },\n {\n iso: 'NC',\n regions: '新喀里多尼亚',\n regions_en: 'New Caledonia',\n phoneCountryCode: '+687',\n },\n {\n iso: 'PF',\n regions: '法属波利尼西亚',\n regions_en: 'French Polynesia',\n phoneCountryCode: '+689',\n },\n {\n iso: 'FM',\n regions: '密克罗尼西亚',\n regions_en: 'Micronesia',\n phoneCountryCode: '+691',\n },\n {\n iso: 'MH',\n regions: '马绍尔群岛',\n regions_en: 'Marshall Islands',\n phoneCountryCode: '+692',\n },\n {\n iso: 'KP',\n regions: '朝鲜',\n regions_en: 'Korea Democratic Rep.',\n phoneCountryCode: '+850',\n },\n {\n iso: 'HK',\n regions: '中国香港',\n regions_en: 'Hong Kong',\n phoneCountryCode: '+852',\n },\n {\n iso: 'MO',\n regions: '中国澳门',\n regions_en: 'Macau',\n phoneCountryCode: '+853',\n },\n {\n iso: 'KH',\n regions: '柬埔寨',\n regions_en: 'Cambodia',\n phoneCountryCode: '+855',\n },\n {\n iso: 'LA',\n regions: '老挝',\n regions_en: 'Laos',\n phoneCountryCode: '+856',\n },\n {\n iso: 'BD',\n regions: '孟加拉国',\n regions_en: 'Bangladesh',\n phoneCountryCode: '+880',\n },\n {\n iso: 'TW',\n regions: '中国台湾',\n regions_en: 'Taiwan',\n phoneCountryCode: '+886',\n },\n {\n iso: 'MV',\n regions: '马尔代夫',\n regions_en: 'Maldives',\n phoneCountryCode: '+960',\n },\n {\n iso: 'LB',\n regions: '黎巴嫩',\n regions_en: 'Lebanon',\n phoneCountryCode: '+961',\n },\n {\n iso: 'JO',\n regions: '约旦',\n regions_en: 'Jordan',\n phoneCountryCode: '+962',\n },\n {\n iso: 'SY',\n regions: '叙利亚',\n regions_en: 'Syria',\n phoneCountryCode: '+963',\n },\n {\n iso: 'IQ',\n regions: '伊拉克',\n regions_en: 'Iraq',\n phoneCountryCode: '+964',\n },\n {\n iso: 'KW',\n regions: '科威特',\n regions_en: 'Kuwait',\n phoneCountryCode: '+965',\n },\n {\n iso: 'SA',\n regions: '沙特阿拉伯',\n regions_en: 'Saudi Arabia',\n phoneCountryCode: '+966',\n },\n {\n iso: 'YE',\n regions: '也门',\n regions_en: 'Yemen',\n phoneCountryCode: '+967',\n },\n {\n iso: 'OM',\n regions: '阿曼',\n regions_en: 'Oman',\n phoneCountryCode: '+968',\n },\n {\n iso: 'AE',\n regions: '阿拉伯联合酋长国',\n regions_en: 'United Arab Emirates',\n phoneCountryCode: '+971',\n },\n {\n iso: 'IL',\n regions: '以色列',\n regions_en: 'Israel',\n phoneCountryCode: '+972',\n },\n {\n iso: 'BH',\n regions: '巴林',\n regions_en: 'Bahrain',\n phoneCountryCode: '+973',\n },\n {\n iso: 'QA',\n regions: '卡塔尔',\n regions_en: 'Qatar',\n phoneCountryCode: '+974',\n },\n {\n iso: 'BT',\n regions: '不丹',\n regions_en: 'Bhutan',\n phoneCountryCode: '+975',\n },\n {\n iso: 'MN',\n regions: '蒙古',\n regions_en: 'Mongolia',\n phoneCountryCode: '+976',\n },\n {\n iso: 'NP',\n regions: '尼泊尔',\n regions_en: 'Nepal',\n phoneCountryCode: '+977',\n },\n {\n iso: 'TJ',\n regions: '塔吉克斯坦',\n regions_en: 'Tajikistan',\n phoneCountryCode: '+992',\n },\n {\n iso: 'TM',\n regions: '土库曼斯坦',\n regions_en: 'Turkmenistan',\n phoneCountryCode: '+993',\n },\n {\n iso: 'AZ',\n regions: '阿塞拜疆',\n regions_en: 'Azerbaijan',\n phoneCountryCode: '+994',\n },\n {\n iso: 'GE',\n regions: '格鲁吉亚',\n regions_en: 'Georgia',\n phoneCountryCode: '+995',\n },\n {\n iso: 'KG',\n regions: '吉尔吉斯斯坦',\n regions_en: 'Kyrgyzstan',\n phoneCountryCode: '+996',\n },\n {\n iso: 'UZ',\n regions: '乌兹别克斯坦',\n regions_en: 'Uzbekistan',\n phoneCountryCode: '+998',\n },\n {\n iso: 'BS',\n regions: '巴哈马',\n regions_en: 'Bahamas',\n phoneCountryCode: '+1242',\n },\n {\n iso: 'BB',\n regions: '巴巴多斯',\n regions_en: 'Barbados',\n phoneCountryCode: '+1246',\n },\n {\n iso: 'AI',\n regions: '安圭拉',\n regions_en: 'Anguilla',\n phoneCountryCode: '+1264',\n },\n {\n iso: 'AG',\n regions: '安提瓜和巴布达',\n regions_en: 'Antigua and Barbuda',\n phoneCountryCode: '+1268',\n },\n {\n iso: 'VG',\n regions: '英属处女群岛',\n regions_en: 'VirginIslands,British',\n phoneCountryCode: '+1284',\n },\n {\n iso: 'KY',\n regions: '开曼群岛',\n regions_en: 'Cayman Islands',\n phoneCountryCode: '+1345',\n },\n {\n iso: 'BM',\n regions: '百慕大群岛',\n regions_en: 'Bermuda',\n phoneCountryCode: '+1441',\n },\n {\n iso: 'GD',\n regions: '格林纳达',\n regions_en: 'Grenada',\n phoneCountryCode: '+1473',\n },\n {\n iso: 'TC',\n regions: '特克斯和凯科斯群岛',\n regions_en: 'Turksand Caicos Islands',\n phoneCountryCode: '+1649',\n },\n {\n iso: 'MS',\n regions: '蒙特塞拉特岛',\n regions_en: 'Montserrat',\n phoneCountryCode: '+1664',\n },\n {\n iso: 'GU',\n regions: '关岛',\n regions_en: 'Guam',\n phoneCountryCode: '+1671',\n },\n {\n iso: 'AS',\n regions: '美属萨摩亚',\n regions_en: 'American Samoa',\n phoneCountryCode: '+1684',\n },\n {\n iso: 'LC',\n regions: '圣露西亚',\n regions_en: 'Saint Lucia',\n phoneCountryCode: '+1758',\n },\n {\n iso: 'DM',\n regions: '多米尼加',\n regions_en: 'Dominica',\n phoneCountryCode: '+1767',\n },\n {\n iso: 'VC',\n regions: '圣文森特和格林纳丁斯',\n regions_en: 'Saint Vincent and The Grenadines',\n phoneCountryCode: '+1784',\n },\n {\n iso: 'PR',\n regions: '波多黎各',\n regions_en: 'Puerto Rico',\n phoneCountryCode: '+1787',\n },\n {\n iso: 'DO',\n regions: '多米尼加共和国',\n regions_en: 'dominican republic',\n phoneCountryCode: '+1809',\n },\n {\n iso: 'TT',\n regions: '特立尼达和多巴哥',\n regions_en: 'Trinidadand Tobago',\n phoneCountryCode: '+1868',\n },\n {\n iso: 'KN',\n regions: '圣基茨和尼维斯',\n regions_en: 'Saint Kitts and Nevis',\n phoneCountryCode: '+1869',\n },\n {\n iso: 'JM',\n regions: '牙买加',\n regions_en: 'Jamaica',\n phoneCountryCode: '+1876',\n },\n]\n","import React, { FC } from 'react'\nimport { Select, Tooltip } from 'antd'\nimport { isoInfo, IsoType } from '../../../_utils/countryList'\nimport './styles.less'\nimport { IconFont } from '../../../IconFont'\nimport { i18n } from '../../../_utils/locales'\n\nexport interface VirtualDropdownProps {\n value?: string\n onChange?: (value: string) => void\n style?: React.CSSProperties\n}\nexport const VirtualDropdown: FC<VirtualDropdownProps> = (props) => {\n const { value, onChange } = props\n // const [open, setOpen] = useState(false)\n const options = isoInfo.map((info: IsoType) => {\n return {\n value: info.iso,\n key: info.iso,\n children: info.phoneCountryCode,\n label: (\n <div className=\"select-option-item\">\n <span>{info.phoneCountryCode}</span>\n <div className=\"country\">\n <Tooltip\n title={i18n.language === 'zh-CN' ? info.regions : info.regions_en}\n >\n {i18n.language === 'zh-CN' ? info.regions : info.regions_en}\n </Tooltip>\n </div>\n </div>\n ),\n region: info.regions,\n region_en: info.regions_en,\n }\n })\n\n return (\n <Select\n showSearch\n dropdownClassName=\"areacode-virtual-dropdown\"\n bordered={false}\n listHeight={258}\n options={options}\n value={value}\n onChange={onChange}\n optionLabelProp=\"children\"\n dropdownMatchSelectWidth={138}\n filterOption={(input, option: any) => {\n if (option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0) {\n return true\n }\n if (option.region.toLowerCase().indexOf(input.toLowerCase()) >= 0) {\n return true\n }\n if (option.region_en.toLowerCase().indexOf(input.toLowerCase()) >= 0) {\n return true\n }\n return false\n // return option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }}\n suffixIcon={\n <IconFont\n className={'areacode-virtual-dropdown-icon'}\n type={'authing-arrow-down-s-fill'}\n style={{ width: 20, height: 20 }}\n />\n }\n />\n )\n}\n","import Input, { InputProps } from 'antd/lib/input'\nimport React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { VirtualDropdown } from './VirtualDropdown'\nexport interface InputInternationPhoneProps extends InputProps {\n areaCode: string\n onAreaCodeChange: (areaCode: string) => void\n}\nexport const InputInternationPhone: React.FC<InputInternationPhoneProps> = (\n props\n) => {\n const {\n areaCode,\n onAreaCodeChange,\n onChange,\n value: formValue,\n ...inputProps\n } = props\n const { t } = useTranslation()\n const [value, setValue] = useState(\n /^[^a-zA-Z]*$/.test(String(formValue)) ? formValue : ''\n )\n\n const valueChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value)\n onChange?.(e)\n }\n\n return (\n <>\n <Input\n pattern=\"[^a-zA-Z]*\"\n value={value}\n placeholder={t('login.inputPhone')}\n {...inputProps}\n onChange={(e) => {\n let v = e.target.value\n if (!/^[^a-zA-Z]*$/.test(v)) {\n return\n }\n valueChange(e)\n }}\n prefix={\n <VirtualDropdown value={areaCode} onChange={onAreaCodeChange} />\n }\n />\n </>\n )\n}\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { Form, Input, Select, DatePicker, message } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { useAsyncFn } from 'react-use'\nimport { UploadImage } from '../../AuthingGuard/Forms/UploadImage'\nimport { i18n } from '../../_utils/locales'\nimport {\n CompleteInfoBaseControls,\n CompleteInfoExtendsControls,\n CompleteInfoMetaData,\n CompleteInfoRequest,\n} from '../interface'\nimport { useGuardHttp } from '../../_utils/guardHttp'\nimport SubmitButton from '../../SubmitButton'\nimport { InputNumber } from '../../InputNumber'\nimport { SceneType } from 'authing-js-sdk'\nimport CustomFormItem from '../../ValidatorRules'\nimport { fieldRequiredRule } from '../../_utils'\nimport { SendCodeByEmail } from '../../SendCode/SendCodeByEmail'\nimport { SendCodeByPhone } from '../../SendCode/SendCodeByPhone'\nimport { useGuardPublicConfig } from '../../_utils/context'\nimport { parsePhone } from '../../_utils/hooks'\nimport { InputInternationPhone } from '../../Login/core/withVerifyCode/InputInternationPhone'\nimport { EmailScene } from '../../Type'\nexport interface CompleteInfoProps {\n metaData: CompleteInfoMetaData[]\n businessRequest: (data: CompleteInfoRequest) => Promise<void>\n}\n\nexport interface FieldMetadata {\n key: string\n options: any\n}\n\nconst filterOption = (input: any, option: any) => {\n return (\n option.props.value.toLowerCase().indexOf(input.toLowerCase()) >= 0 ||\n option.props.label.toLowerCase().indexOf(input.toLowerCase()) >= 0\n )\n}\n\nexport const CompleteInfo: React.FC<CompleteInfoProps> = (props) => {\n const { metaData, businessRequest } = props\n\n const config = useGuardPublicConfig()\n\n const verifyCodeLength = config?.verifyCodeLength\n\n const submitButtonRef = useRef<any>(null)\n\n const [countryList, setCountryList] = useState<any>([])\n\n const isInternationSms = config?.internationalSmsConfig?.enabled || false\n\n const [areaCode, setAreaCode] = useState(\n config?.internationalSmsConfig?.defaultISOType || 'CN'\n )\n\n const { get, post } = useGuardHttp()\n\n const { t } = useTranslation()\n\n const [form] = Form.useForm()\n\n const loadInitCountryList = useCallback(async () => {\n const { data } = await get(`/api/v2/country-list`)\n\n const countryMap = i18n.language === 'zh-CN' ? data?.zh : data?.en\n\n const countryList: { label: string; value: string }[] = []\n\n for (const [key, value] of Object.entries(countryMap)) {\n countryList.push({\n label: value + ` (${key})`,\n value: key,\n })\n }\n\n setCountryList(countryList)\n }, [get])\n\n useEffect(() => {\n if (!metaData.map((i) => i.name).includes('country')) return\n loadInitCountryList()\n }, [loadInitCountryList, metaData])\n\n const PhoneAccount = useCallback(\n (props) => {\n if (isInternationSms) {\n return (\n <InputInternationPhone\n {...props}\n className=\"authing-g2-input\"\n size=\"large\"\n areaCode={areaCode}\n onAreaCodeChange={(value: string) => {\n setAreaCode(value)\n form.getFieldValue(['internal phone:phone']) &&\n form.validateFields(['internal phone:phone'])\n }}\n />\n )\n } else {\n return (\n <InputNumber\n {...props}\n className=\"authing-g2-input\"\n autoComplete=\"off\"\n key=\"internal-phone:phone123\"\n type=\"tel\"\n size=\"large\"\n maxLength={11}\n placeholder={t('login.inputPhone')}\n />\n )\n }\n },\n [areaCode, form, isInternationSms, t]\n )\n const baseControlMap: Record<\n string,\n (props?: any) => React.ReactNode | undefined\n > = useMemo(\n () => ({\n gender: (props) => (\n <Select\n key={props.key}\n className=\"authing-g2-select\"\n options={[\n { label: i18n.t('common.man'), value: 'M' },\n { label: i18n.t('common.female'), value: 'F' },\n ]}\n />\n ),\n country: (props) => (\n <Select\n key={props.key}\n className=\"authing-g2-select\"\n options={countryList}\n showSearch\n filterOption={filterOption}\n />\n ),\n image: () => <UploadImage />,\n number: (props) => (\n <InputNumber\n key={props.key}\n style={{ width: '100%' }}\n className=\"authing-g2-input\"\n />\n ),\n date: (props) => (\n <DatePicker\n key={props.key}\n className=\"authing-g2-input\"\n style={{ width: '100%' }}\n placeholder={i18n.t('common.pleaseSelectDate')}\n />\n ),\n datetime: (props) => (\n <DatePicker\n key={props.key}\n className=\"authing-g2-input\"\n style={{ width: '100%' }}\n placeholder={i18n.t('common.pleaseSelectDate')}\n />\n ),\n select: (props: any) => (\n <Select\n key={props.key}\n className=\"authing-g2-select\"\n showSearch\n options={props.options}\n filterOption={filterOption}\n />\n ),\n dropdown: (props: any) => (\n <Select\n key={props.key}\n className=\"authing-g2-select\"\n showSearch\n options={props.options}\n filterOption={filterOption}\n />\n ),\n boolean: (props) => (\n <Select\n key={props.key}\n className=\"authing-g2-select\"\n options={[\n { label: i18n.t('common.yes'), value: true as any },\n { label: i18n.t('common.no'), value: false as any },\n ]}\n />\n ),\n string: (props) => (\n <Input\n key={props.key}\n type=\"text\"\n size=\"large\"\n className=\"authing-g2-input\"\n autoComplete=\"off\"\n />\n ),\n text: (props) => (\n <Input\n key={props.key}\n type=\"text\"\n size=\"large\"\n className=\"authing-g2-input\"\n autoComplete=\"off\"\n />\n ),\n }),\n [countryList]\n )\n const internalControlMap: Record<\n string,\n (props: any) => React.ReactNode | undefined\n > = useMemo(\n () => ({\n username: (props: any) => (\n <CustomFormItem.UserName\n validateFirst={true}\n className=\"authing-g2-input-form\"\n name=\"username\"\n key={props.key}\n label={i18n.t('common.username')}\n required={props.required}\n checkRepeat={true}\n >\n <Input\n className=\"authing-g2-input\"\n autoComplete=\"username\"\n key=\"internal-username:asdf\"\n size=\"large\"\n maxLength={11}\n placeholder={t('login.inputUsername')}\n />\n </CustomFormItem.UserName>\n ),\n phone: (props: { required?: boolean }) => (\n <>\n <CustomFormItem.Phone\n validateFirst={true}\n className={\n isInternationSms\n ? 'authing-g2-input-form remove-padding'\n : 'authing-g2-input-form'\n }\n name=\"phone\"\n key=\"internal-phone:phone\"\n label={i18n.t('common.phoneLabel')}\n required={props.required}\n checkRepeat={true}\n areaCode={areaCode}\n >\n <PhoneAccount />\n </CustomFormItem.Phone>\n <Form.Item\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form\"\n name=\"phoneCode\"\n key=\"internal-phone:code\"\n rules={\n props.required\n ? fieldRequiredRule(t('common.captchaCode'))\n : undefined\n }\n >\n <SendCodeByPhone\n isInternationSms={isInternationSms}\n areaCode={areaCode}\n className=\"authing-g2-input g2-send-code-input\"\n autoComplete=\"one-time-code\"\n size=\"large\"\n placeholder={t('common.inputFourVerifyCode', {\n length: verifyCodeLength,\n })}\n scene={SceneType.SCENE_TYPE_COMPLETE_PHONE}\n maxLength={verifyCodeLength}\n fieldName=\"phone\"\n form={form}\n onSendCodeBefore={() => form.validateFields(['phone'])}\n />\n </Form.Item>\n </>\n ),\n email: (props: { required?: boolean }) => (\n <>\n <CustomFormItem.Email\n className=\"authing-g2-input-form\"\n name=\"email\"\n checkRepeat={true}\n label={i18n.t('common.email')}\n required={props.required}\n key=\"internal email:email13\"\n validateFirst={true}\n >\n <Input\n className=\"authing-g2-input\"\n autoComplete=\"email\"\n size=\"large\"\n placeholder={t('login.inputEmail')}\n />\n </CustomFormItem.Email>\n <Form.Item\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form\"\n name=\"emailCode\"\n key=\"internal email:code1432\"\n rules={\n props.required\n ? fieldRequiredRule(t('common.captchaCode'))\n : undefined\n }\n >\n <SendCodeByEmail\n className=\"authing-g2-input g2-send-code-input\"\n autoComplete=\"one-time-code\"\n size=\"large\"\n placeholder={t('common.inputFourVerifyCode', {\n length: verifyCodeLength,\n })}\n maxLength={verifyCodeLength}\n data={''}\n scene={EmailScene.INFORMATION_COMPLETION_VERIFY_CODE}\n fieldName=\"email\"\n form={form}\n onSendCodeBefore={() => form.validateFields(['email'])}\n />\n </Form.Item>\n </>\n ),\n }),\n [PhoneAccount, areaCode, form, isInternationSms, t, verifyCodeLength]\n )\n\n const generateRules = useCallback(\n (metaData: CompleteInfoMetaData) => {\n const formRules = []\n\n const label =\n i18n.language === 'zh-CN'\n ? metaData.label || metaData.name\n : metaData.name\n\n const rules = metaData.validateRules ?? []\n\n const required = metaData.required ?? false\n\n if (metaData.required) {\n formRules.push({\n required: true,\n message: `${label} ${t('login.noEmpty')}`,\n })\n }\n\n // TODO 后端的 rule Type 有很多 前端目前只做了两种的映射\n rules.forEach((rule) => {\n switch (rule.type) {\n case 'isNumber':\n formRules.push({\n type: 'number',\n required,\n message: rule.errorMessage || '请填写数字',\n })\n break\n case 'regExp':\n formRules.push({\n required,\n pattern: new RegExp((rule.content as any).replaceAll('/', '')),\n message: rule.errorMessage,\n })\n break\n default:\n break\n }\n })\n return formRules\n },\n [t]\n )\n\n const inputElement = useCallback(\n (metaData: CompleteInfoMetaData) => {\n const label =\n i18n.language === 'zh-CN'\n ? metaData.label || metaData.name\n : metaData.name\n\n // 这部分的控件分两种 一个集成控件(手机号 + 验证码)一种是基础控件 分开处理\n if (\n (Object.values(CompleteInfoBaseControls) as (\n | CompleteInfoBaseControls\n | CompleteInfoExtendsControls\n )[]).includes(metaData.type)\n ) {\n return internalControlMap[metaData.name]({\n required: metaData.required,\n })\n } else {\n const userFormItem = (children: React.ReactNode) => (\n <Form.Item\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form\"\n rules={generateRules(metaData)}\n key={metaData.name}\n name={metaData.name}\n label={label}\n style={{ marginBottom: 8 }}\n >\n {children}\n </Form.Item>\n )\n\n if (Object.keys(baseControlMap).includes(metaData.name)) {\n return userFormItem(\n baseControlMap[metaData.name]({\n options: metaData.options,\n key: metaData.name,\n })\n )\n } else if (Object.keys(baseControlMap).includes(metaData.type)) {\n return userFormItem(\n baseControlMap[metaData.type]({\n options: metaData.options,\n key: metaData.name,\n })\n )\n }\n return userFormItem(\n <Input type=\"text\" className=\"authing-g2-input\" autoComplete=\"off\" />\n )\n }\n },\n [baseControlMap, generateRules, internalControlMap]\n )\n\n const formFieldsV2 = useMemo(() => {\n return metaData.map((data) => inputElement(data))\n }, [inputElement, metaData])\n\n const [, onFinish] = useAsyncFn(\n async (values: any) => {\n const fieldKeys = Object.keys(values)\n // 先过滤掉 为空的字段\n .filter((key) => values[key] !== undefined && values[key] !== '')\n\n submitButtonRef.current?.onSpin(true)\n\n const fieldValues = fieldKeys\n // 再过滤掉 两个验证码的字段\n .filter((key) => !['phoneCode', 'emailCode'].includes(key))\n .map((key) => {\n const baseData = {\n name: key,\n value: values[key],\n }\n // 给这两个字段添加一个验证码\n // 国际化短信 需要携带区号\n // TODO 默认这里手机号与邮箱 都是有验证码的\n if (key === 'phone') {\n if (isInternationSms) {\n const { countryCode } = parsePhone(\n isInternationSms,\n values[key],\n areaCode\n )\n return {\n ...baseData,\n code: values.phoneCode,\n phoneCountryCode: countryCode,\n }\n }\n\n return { ...baseData, code: values.phoneCode }\n }\n if (key === 'email') return { ...baseData, code: values.emailCode }\n return baseData\n })\n\n try {\n // 对特殊字段提前进行 precheck 不然直接调用注册接口失败也会导致上一步验证码失效\n // 用户名 check\n if (fieldKeys.includes('username')) {\n const { data: checkResult, code: checkCode } = await get(\n '/api/v2/users/is-user-exists',\n {\n username: values.username,\n }\n )\n // checkResult 为 true 时 代表用户名已存在 直接报message 并且不调用注册接口\n if (checkCode === 200 && checkResult) {\n message.error(t('common.userNameIsExists'))\n return\n }\n }\n // 手机验证码check\n if (fieldKeys.includes('phone')) {\n const options: any = {\n phone: values.phone,\n phoneCode: values.phoneCode,\n }\n if (isInternationSms) {\n const { countryCode } = parsePhone(\n isInternationSms,\n values.phone,\n areaCode\n )\n options.phoneCountryCode = countryCode\n }\n const {\n statusCode: checkCode,\n data: { valid, message: checkMessage },\n } = await post('/api/v2/sms/preCheckCode', options)\n if (checkCode !== 200 || !valid) {\n message.error(checkMessage)\n return\n }\n }\n // 邮箱验证码check\n if (fieldKeys.includes('email')) {\n const {\n statusCode: checkCode,\n data: { valid, message: checkMessage },\n } = await post('/api/v2/email/preCheckCode', {\n email: values.email,\n emailCode: values.emailCode,\n })\n if (checkCode !== 200 || !valid) {\n message.error(checkMessage)\n return\n }\n }\n\n await businessRequest?.({ fieldValues })\n } catch (error) {\n // TODO\n // throw new Error(error)\n } finally {\n submitButtonRef.current?.onSpin(false)\n }\n },\n [areaCode]\n )\n\n return (\n <Form\n layout=\"vertical\"\n form={form}\n onFinish={onFinish}\n onSubmitCapture={() => submitButtonRef.current.onSpin(true)}\n onFinishFailed={() => submitButtonRef.current.onError()}\n className=\"authing-g2-completeInfo-form authing-g2-form-required-item-icon-after\"\n >\n {formFieldsV2}\n\n <Form.Item className=\"authing-g2-input-form\">\n <SubmitButton\n text={t('common.problem.form.submit')}\n ref={submitButtonRef}\n className=\"password g2-completeInfo-submit\"\n />\n </Form.Item>\n </Form>\n )\n}\n","import { Tabs } from 'antd'\nimport React, { ReactNode, useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { ImagePro } from '../ImagePro'\nimport './styles.less'\nimport { useGuardModule, useGuardPublicConfig } from '../_utils/context'\nimport { BackCustom } from '../Back'\n\nenum DownloadType {\n IOS = 'ios',\n Android = 'Android',\n}\n\nexport const GuardDownloadATView: React.FC = () => {\n const { t } = useTranslation()\n\n const publicConfig = useGuardPublicConfig()\n\n const { backModule } = useGuardModule()\n\n const cdnBase = publicConfig?.cdnBase\n\n const downloadConfig: Record<DownloadType, any> = useMemo(\n () => ({\n [DownloadType.IOS]: {\n title: t('common.downloadTotpAppIOS'),\n google: `${cdnBase}/GoogleAuthenticator-Apple.png`,\n microsoft: `${cdnBase}/MicrosoftAuthenticator-Apple.png`,\n },\n [DownloadType.Android]: {\n title: t('common.downloadTotpAppAndroid'),\n google: `${cdnBase}/GoogleAuthenticator-Authing.png`,\n microsoft: `${cdnBase}/MicrosoftAuthenticator-Baidu.png`,\n },\n }),\n [cdnBase, t]\n )\n\n const renderTab = useMemo(\n () =>\n (Object.keys(downloadConfig) as DownloadType[]).map<ReactNode>(\n (value: DownloadType, index: number) => (\n <Tabs.TabPane\n tab={downloadConfig[value].title}\n key={index}\n className=\"g2-mfa-download-at-tab\"\n >\n <span className=\"g2-mfa-totp-download-subtitle\">\n {t('common.downloadTotpAppDocs')}\n </span>\n <div className=\"g2-mfa-totp-download-qrcode\">\n <div className=\"g2-mfa-totp-download-qrcode-item\">\n <ImagePro\n width={120}\n height={120}\n className=\"g2-mfa-totp-download-image\"\n src={downloadConfig[value].google}\n alt=\"Google Authenticator\"\n />\n <span className=\"g2-mfa-totp-download-qrcode-text\">\n Google Authenticator\n </span>\n </div>\n <div className=\"g2-mfa-totp-download-qrcode-item\">\n <ImagePro\n width={120}\n height={120}\n className=\"g2-mfa-totp-download-image\"\n src={downloadConfig[value].microsoft}\n alt=\"Microsoft Authenticator\"\n />\n <span className=\"g2-mfa-totp-download-qrcode-text\">\n Microsoft Authenticator\n </span>\n </div>\n </div>\n </Tabs.TabPane>\n )\n ),\n [downloadConfig, t]\n )\n\n const renderBack = useMemo(() => {\n const onBack = () => backModule?.()\n\n return <BackCustom onBack={onBack}>{t('common.backToMFA')}</BackCustom>\n }, [backModule, t])\n\n return (\n <div className=\"g2-view-container g2-download-authenticator\">\n {renderBack}\n <div className=\"g2-view-tabs g2-mfa-totp-download-tabs\">\n <Tabs defaultActiveKey={DownloadType.IOS}>{renderTab}</Tabs>\n </div>\n </div>\n )\n}\n","import { User } from 'authing-js-sdk'\nimport { ApplicationConfig } from '../AuthingGuard/api'\nimport {\n CompleteInfoBaseControls,\n CompleteInfoExtendsControls,\n CompleteInfoMetaData,\n CompleteInfoRequest,\n ExtendsField,\n} from '../CompleteInfo/interface'\n\nexport const completeFieldsFilter = (user: User, field: ExtendsField) => {\n if (!user) {\n return true\n }\n const { name } = field\n if (name === 'email' && user?.email) {\n return false\n }\n if (name === 'phone' && user?.phone) {\n return false\n }\n if (name === 'username') {\n if (user[name] === user['phone'] || user[name] === user['email']) {\n return true\n }\n }\n\n // gender 默认是 U\n if (name === 'gender' && user[name] === 'U') {\n return true\n }\n // 如果基础字段里面已经有了,不再要求补全\n if (\n user[name as keyof User] !== undefined &&\n user[name as keyof User] !== null\n ) {\n return false\n }\n // 如果扩展信息又了,不再要求补全\n const customData = user.customData\n if (\n customData &&\n customData[name] !== undefined &&\n customData[name] !== null\n ) {\n return false\n }\n return true\n}\n\nexport const extendsFieldsToMetaData = (\n extendsFields: ApplicationConfig['extendsFields'] = [],\n selectOptions: {\n key: string\n options: {\n value: string\n label: string\n }[]\n }[]\n): CompleteInfoMetaData[] =>\n extendsFields.map((item) => {\n return {\n type: item.inputType as\n | CompleteInfoBaseControls\n | CompleteInfoExtendsControls,\n label: item.label,\n name: item.name,\n required: item.required,\n validateRules: item.validateRules,\n options: selectOptions.find((option) => option.key === item.name)\n ?.options,\n }\n })\n\nexport const fieldValuesToRegisterProfile = (\n extendsFields: ApplicationConfig['extendsFields'],\n fieldValues?: CompleteInfoRequest['fieldValues']\n) => {\n const registerProfile: Record<string, any> = {\n udf: [],\n }\n\n fieldValues?.forEach(({ name, value, code }) => {\n const fieldType = extendsFields.find((item) => item.name === name)?.type\n\n // 根据字段类型生成不同的数据结构\n if (fieldType === 'internal') {\n if (name === 'phone') registerProfile.phoneToken = code\n\n if (name === 'email') registerProfile.emailToken = code\n\n registerProfile[name] = value\n } else if (fieldType === 'user') {\n registerProfile.udf.push({\n key: name,\n value,\n })\n }\n })\n\n return registerProfile\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { ImagePro } from '../ImagePro'\nimport { CompleteInfo } from './core/completeInfo'\nimport {\n CompleteInfoInitData,\n CompleteInfoMetaData,\n CompleteInfoRequest,\n OmitCompleteInfo,\n RegisterCompleteInfoInitData,\n} from './interface'\nimport './styles.less'\nimport { IconFont } from '../IconFont'\nimport { useGuardAuthClient } from '../Guard/authClient'\nimport {\n useGuardButtonState,\n useGuardEvents,\n useGuardFinallyConfig,\n useGuardHttpClient,\n useGuardInitData,\n useGuardPublicConfig,\n} from '../_utils/context'\nimport {\n authFlow,\n CompleteInfoAuthFlowAction,\n registerRequest,\n} from './businessRequest'\nimport { extendsFieldsToMetaData, fieldValuesToRegisterProfile } from './utils'\nimport { message } from 'antd'\nimport { GuardButton } from '../GuardButton'\n\nexport const GuardCompleteInfo: React.FC<{\n metaData: CompleteInfoMetaData[]\n skipComplateFileds: boolean\n businessRequest: (\n action: CompleteInfoAuthFlowAction,\n data?: CompleteInfoRequest\n ) => Promise<void>\n}> = ({ metaData, businessRequest, skipComplateFileds }) => {\n const config = useGuardFinallyConfig()\n\n const { t } = useTranslation()\n\n const { spinChange } = useGuardButtonState()\n\n const [skipLoading, setSkipLoading] = useState(false)\n\n const onSkip = async () => {\n spinChange(true)\n setSkipLoading(true)\n\n await businessRequest(CompleteInfoAuthFlowAction.Skip)\n setSkipLoading(false)\n spinChange(false)\n }\n\n return (\n <div className=\"g2-view-container g2-complete-info\">\n <div className=\"g2-view-header\">\n <div className=\"g2-completeInfo-header\">\n <ImagePro\n src={config?.logo!}\n size={48}\n borderRadius={4}\n alt=\"\"\n className=\"icon\"\n />\n\n {skipComplateFileds && (\n <GuardButton\n className=\"g2-completeInfo-header-skip\"\n type=\"link\"\n loading={skipLoading}\n onClick={() => onSkip()}\n >\n {!skipLoading && (\n <IconFont type=\"authing-a-share-forward-line1\" />\n )}\n <span>{t('common.skip')}</span>\n </GuardButton>\n )}\n </div>\n\n <div className=\"title\">{t('common.perfectUserInfo')}</div>\n <div className=\"title-explain\">\n {t('common.welcomeDoc', { name: config.title })}\n </div>\n </div>\n <div className=\"g2-view-tabs g2-completeInfo-content\">\n <CompleteInfo\n metaData={metaData}\n businessRequest={async (data) =>\n await businessRequest?.(CompleteInfoAuthFlowAction.Complete, data)\n }\n />\n </div>\n </div>\n )\n}\n\nexport const GuardLoginCompleteInfoView: React.FC = () => {\n const { metaData, skip } = useGuardInitData<CompleteInfoInitData>()\n\n const events = useGuardEvents()\n\n const authClient = useGuardAuthClient()\n\n const businessRequest = async (\n action: CompleteInfoAuthFlowAction,\n data?: CompleteInfoRequest\n ) => {\n const { isFlowEnd, data: resData, onGuardHandling } = await authFlow(\n action,\n data\n )\n\n if (isFlowEnd) {\n events?.onLogin?.(resData, authClient)\n } else {\n onGuardHandling?.()\n }\n }\n\n return (\n <GuardCompleteInfo\n metaData={metaData}\n businessRequest={businessRequest}\n skipComplateFileds={skip}\n />\n )\n}\n\nexport const GuardRegisterCompleteInfoView: React.FC = () => {\n const initData = useGuardInitData<RegisterCompleteInfoInitData>()\n\n const publicConfig = useGuardPublicConfig()\n\n const { get } = useGuardHttpClient()\n\n const config = useGuardFinallyConfig()\n\n const [selectOptions, setSelectOptions] = useState<\n Array<{\n key: string\n options: {\n value: string\n label: string\n }[]\n }>\n >()\n\n const [metaData, setMetaData] = useState<CompleteInfoMetaData[]>()\n\n // 过滤掉 phone 或者 email\n const extendsFields = useMemo(() => {\n return publicConfig?.extendsFields.filter(\n (field) => field.name !== OmitCompleteInfo[initData.businessRequestName]\n )\n }, [initData.businessRequestName, publicConfig?.extendsFields])\n\n const skipComplateFileds = publicConfig?.skipComplateFileds\n\n const loadingComponent = useMemo(() => {\n return config.loadingComponent\n }, [config.loadingComponent])\n\n const loadSelectOptions = useCallback(async () => {\n const { data: selectOptions } = await get(\n `/api/v2/udfs/field-metadata-for-completion`,\n undefined,\n {}\n )\n\n setSelectOptions(selectOptions)\n }, [get])\n\n const businessRequest = async (\n action: CompleteInfoAuthFlowAction,\n data?: CompleteInfoRequest\n ) => {\n const registerProfile = fieldValuesToRegisterProfile(\n extendsFields,\n data?.fieldValues\n )\n try {\n // sdk 直接 throw error 拿不到错误详细信息 不能手动给他执行我们的拦截\n const user: any = await registerRequest(\n action,\n initData.businessRequestName,\n initData.content,\n registerProfile\n )\n // sdk 还没有这个接口 后续添加后 可以已 sdk 的逻辑执行\n if (initData.businessRequestName === 'registerByEmailCode') {\n if (user.code === 200) {\n initData.onRegisterSuccess(user.data)\n // events?.onRegister?.(user.data, authClient)\n // changeModule?.(GuardModuleType.LOGIN)\n } else {\n user?.onGuardHandling?.()\n const { code, message: errorMessage, data } = user\n initData.onRegisterFailed(code, data, errorMessage)\n // events?.onRegisterError?.({ code, data, message: errorMessage })\n // TODO 后续sdk的验证码逻辑改完后\n }\n return\n }\n if (user) {\n // events?.onRegister?.(user, authClient)\n // changeModule?.(GuardModuleType.LOGIN)\n initData.onRegisterSuccess(user.data)\n }\n } catch (error: any) {\n // TODO 后续sdk的验证码逻辑改完后·\n const { code, message: errorMessage, data } = error\n message.error(errorMessage)\n // events?.onRegisterError?.({ code, data, message: errorMessage })\n initData.onRegisterFailed(code, data, errorMessage)\n }\n }\n\n useEffect(() => {\n loadSelectOptions()\n }, [loadSelectOptions])\n\n useEffect(() => {\n if (!selectOptions) return\n\n const metaData = extendsFieldsToMetaData(extendsFields, selectOptions)\n\n setMetaData(metaData)\n }, [extendsFields, selectOptions])\n\n return (\n <>\n {!metaData ? (\n loadingComponent\n ) : (\n <GuardCompleteInfo\n metaData={metaData}\n skipComplateFileds={skipComplateFileds}\n businessRequest={businessRequest}\n />\n )}\n </>\n )\n}\n","import React, { useCallback, useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Form } from 'antd'\nimport { useGuardAuthClient } from '../../Guard/authClient'\nimport { fieldRequiredRule, validate } from '../../_utils'\nimport SubmitButton from '../../SubmitButton'\nimport CustomFormItem from '../../ValidatorRules'\nimport { IconFont } from '../../IconFont'\nimport { InputPassword } from '../../InputPassword'\nimport { SceneType } from 'authing-js-sdk'\nimport { SendCodeByEmail } from '../../SendCode/SendCodeByEmail'\nimport { SendCodeByPhone } from '../../SendCode/SendCodeByPhone'\nimport { FormItemIdentify } from '../../Login/core/withVerifyCode/FormItemIdentify'\nimport { InputIdentify } from '../../Login/core/withVerifyCode/inputIdentify'\nimport { parsePhone, useMediaSize } from '../../_utils/hooks'\nimport { EmailScene } from '../../Type'\nimport { usePasswordErrorText } from '../../_utils/useErrorText'\nimport { getGuardHttp } from '../../_utils/guardHttp'\nimport { ApiCode } from '../../_utils/responseManagement/interface'\nimport { useGuardPublicConfig } from '../../_utils/context'\nexport enum InputMethodMap {\n email = 'email-code',\n phone = 'phone-code',\n}\ninterface ResetPasswordProps {\n onReset: any\n publicConfig: any\n onSend: (type: 'email' | 'phone') => void\n onSendError: (type: 'email' | 'phone', error: any) => void\n}\nexport const ResetPassword = (props: ResetPasswordProps) => {\n const { t } = useTranslation()\n let [form] = Form.useForm()\n let [identify, setIdentify] = useState('')\n let [codeMethod, setCodeMethod] = useState<'phone' | 'email'>('phone')\n let submitButtonRef = useRef<any>(null)\n const { isPhoneMedia } = useMediaSize()\n const { post } = getGuardHttp()\n let authClient = useGuardAuthClient()\n const { publicKey } = useGuardPublicConfig()\n const verifyCodeLength = props.publicConfig.verifyCodeLength ?? 4\n // 是否开启了国际化短信功能\n const isInternationSms =\n props.publicConfig.internationalSmsConfig?.enabled || false\n const {\n getPassWordUnsafeText,\n setPasswordErrorTextShow,\n } = usePasswordErrorText()\n const onFinish = async (values: any) => {\n let identify = values.identify\n let code = values.code\n let tempPassword = values.password\n let context = new Promise(() => {})\n const newPassword = await authClient.options?.encryptFunction?.(\n tempPassword,\n publicKey\n )\n if (codeMethod === 'email') {\n context = post('/api/v2/users/password/reset', {\n email: identify,\n code,\n newPassword,\n })\n // context = client.resetPasswordByEmailCode(identify, code, newPassword)\n }\n if (codeMethod === 'phone') {\n const { phoneNumber: phone, countryCode: phoneCountryCode } = parsePhone(\n isInternationSms,\n identify\n )\n context = post('/api/v2/users/password/reset', {\n phone,\n code,\n newPassword,\n phoneCountryCode,\n })\n // context = client.resetPasswordByPhoneCode(\n // phoneNumber,\n // code,\n // newPassword,\n // countryCode\n // )\n }\n\n context\n .then((r: any) => {\n const { code } = r\n if (code === ApiCode.UNSAFE_PASSWORD_TIP) {\n setPasswordErrorTextShow(true)\n }\n props.onSend(codeMethod)\n props.onReset(r)\n })\n .catch((e) => {\n submitButtonRef.current.onError()\n props.onSendError(codeMethod, e)\n props.onReset(e)\n })\n }\n\n const SendCode = useCallback(\n (props: any) => {\n return (\n <>\n {codeMethod === 'phone' && (\n <SendCodeByPhone\n {...props}\n isInternationSms={isInternationSms}\n className=\"authing-g2-input g2-send-code-input\"\n autoComplete=\"off\"\n size=\"large\"\n placeholder={t('common.inputFourVerifyCode', {\n length: verifyCodeLength,\n })}\n prefix={\n <IconFont\n type=\"authing-a-shield-check-line1\"\n style={{ color: '#878A95' }}\n />\n }\n scene={SceneType.SCENE_TYPE_RESET}\n maxLength={verifyCodeLength}\n data={identify}\n onSendCodeBefore={async () => {\n await form.validateFields(['identify'])\n }}\n />\n )}\n {codeMethod === 'email' && (\n <SendCodeByEmail\n {...props}\n className=\"authing-g2-input g2-send-code-input\"\n autoComplete=\"off\"\n size=\"large\"\n placeholder={t('common.inputFourVerifyCode', {\n length: verifyCodeLength,\n })}\n prefix={\n <IconFont\n type=\"authing-a-shield-check-line1\"\n style={{ color: '#878A95' }}\n />\n }\n scene={EmailScene.RESET_PASSWORD_VERIFY_CODE}\n maxLength={verifyCodeLength}\n data={identify}\n onSendCodeBefore={async () => {\n await form.validateFields(['identify'])\n }}\n />\n )}\n </>\n )\n },\n [codeMethod, form, identify, isInternationSms, t, verifyCodeLength]\n )\n\n return (\n <div className=\"authing-g2-login-phone-code\">\n <Form\n name=\"resetPassword\"\n form={form}\n onFinish={onFinish}\n onFinishFailed={() => {\n submitButtonRef?.current?.onError()\n }}\n autoComplete=\"off\"\n >\n <FormItemIdentify\n name=\"identify\"\n className=\"authing-g2-input-form\"\n methods={['email-code', 'phone-code']}\n currentMethod={InputMethodMap[codeMethod]}\n checkExist={true}\n >\n <InputIdentify\n methods={['email-code', 'phone-code']}\n className=\"authing-g2-input\"\n autoComplete=\"off\"\n autoFocus={!isPhoneMedia}\n size=\"large\"\n value={identify}\n onChange={(e) => {\n let v = e.target.value\n setIdentify(v)\n if (validate('email', v)) {\n setCodeMethod('email')\n } else {\n setCodeMethod('phone')\n }\n }}\n prefix={\n <IconFont\n type=\"authing-a-user-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </FormItemIdentify>\n\n <Form.Item\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form\"\n name=\"code\"\n rules={[...fieldRequiredRule(t('common.captchaCode'))]}\n >\n <SendCode />\n </Form.Item>\n <CustomFormItem.Password\n className=\"authing-g2-input-form\"\n name=\"password\"\n >\n <InputPassword\n className=\"authing-g2-input\"\n size=\"large\"\n placeholder={t('user.inputNewPwd')}\n prefix={\n <IconFont\n type=\"authing-a-lock-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </CustomFormItem.Password>\n {getPassWordUnsafeText()}\n <Form.Item className=\"authing-g2-input-form submit-form\">\n <SubmitButton\n className=\"forget-password\"\n text={t('common.confirm')}\n ref={submitButtonRef}\n />\n </Form.Item>\n </Form>\n </div>\n )\n}\n","import React, { useMemo } from 'react'\nimport { ErrorInitData } from './interface'\nimport { i18n } from '../_utils/locales'\nimport './styles.less'\nimport { useGuardInitData } from '../_utils/context'\n\nexport interface ErrorProps {\n error?: Error\n}\n\nexport const GuardErrorView: React.FC<ErrorProps> = (propsInitData) => {\n const guardXInitData = useGuardInitData<ErrorInitData>()\n\n const messages = useMemo(() => {\n const error = propsInitData?.error ?? guardXInitData?.error\n\n return `${error?.message}` ?? `${i18n.t('user.contactAdministrator')}`\n }, [guardXInitData?.error, propsInitData?.error])\n\n return (\n <div className=\"g2-view-container g2-view-error\">\n <div className=\"g2-error-content\">\n <div style={{ display: 'flex', justifyContent: 'center' }}>\n <div\n style={{\n width: 240,\n height: 160,\n backgroundImage:\n 'url(https://authing-files.oss-cn-zhangjiakou.aliyuncs.com/authing-guard/authing_error.svg)',\n backgroundSize: 'contain',\n }}\n />\n </div>\n <div className=\"g2-error-message\">{i18n.t('user.error')}</div>\n <span\n className=\"g2-error-message-text\"\n dangerouslySetInnerHTML={{ __html: messages }}\n />\n </div>\n </div>\n )\n}\n","import { FormItemProps, Rule } from 'antd/lib/form'\nimport FormItem from 'antd/lib/form/FormItem'\nimport React, { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport CustomFormItem from '../../../ValidatorRules'\nimport { fieldRequiredRule, VALIDATE_PATTERN } from '../../../_utils'\nimport { phone } from 'phone'\nimport {\n useGuardHttpClient,\n useGuardPublicConfig,\n} from '../../../_utils/context'\nimport { VerifyLoginMethods } from '../../../AuthingGuard/api'\nimport { useCheckRepeat } from '../../../ValidatorRules/useCheckRepeat'\nimport { parsePhone } from '../../../_utils/hooks'\nexport interface FormItemIdentifyProps extends FormItemProps {\n checkRepeat?: boolean // 重复性校验\n checkExist?: boolean //存在性校验\n methods: VerifyLoginMethods[]\n currentMethod: 'phone-code' | 'email-code' //当前 input 输入\n areaCode?: string //国际化手机号区号\n}\n\nconst FindMethodConversion = {\n 'phone-code': 'phone',\n 'email-code': 'email',\n}\n\nexport const FormItemIdentify: React.FC<FormItemIdentifyProps> = (props) => {\n const {\n methods,\n areaCode = 'CN',\n currentMethod,\n checkRepeat,\n checkExist,\n ...formItemProps\n } = props\n const publicConfig = useGuardPublicConfig()\n const { t } = useTranslation()\n\n const { get } = useGuardHttpClient()\n\n const checkInternationalSms =\n publicConfig.internationalSmsConfig?.enabled &&\n currentMethod === 'phone-code'\n\n const methodContent = useMemo(() => {\n if (currentMethod === 'email-code')\n return {\n field: t('common.emailLabel'),\n checkRepeatErrorMessage: t('common.checkEmail'),\n checkExistErrorMessage: t('common.noFindEmail'),\n formatErrorMessage: t('login.inputCorrectPhone'),\n pattern: VALIDATE_PATTERN.email,\n }\n else\n return {\n field: t('common.phone'),\n checkRepeatErrorMessage: t('common.checkPhone'),\n checkExistErrorMessage: t('common.noFindPhone'),\n formatErrorMessage: t('login.inputCorrectPhone'),\n pattern: VALIDATE_PATTERN.phone,\n }\n }, [currentMethod, t])\n\n const checkRepeatRet = (\n value: any,\n resolve: (value: unknown) => void,\n reject: (reason?: any) => void\n ) => {\n let checkValue = value\n if (currentMethod === 'phone-code' && checkInternationalSms) {\n const { phoneNumber } = parsePhone(\n checkInternationalSms,\n checkValue,\n areaCode\n )\n checkValue = phoneNumber\n }\n get<boolean>(`/api/v2/users/find`, {\n userPoolId: publicConfig?.userPoolId,\n key: checkValue,\n type: FindMethodConversion[currentMethod],\n }).then(({ data }) => {\n if (checkExist) {\n Boolean(data)\n ? resolve(true)\n : reject(methodContent.checkExistErrorMessage)\n }\n if (checkRepeat) {\n Boolean(data)\n ? reject(methodContent.checkRepeatErrorMessage)\n : resolve(true)\n }\n })\n }\n\n const checkRepeatFn = useCheckRepeat(checkRepeatRet)\n\n const formatRules = useMemo<Rule>(() => {\n if (checkInternationalSms) {\n return {\n validateTrigger: 'onBlur',\n validator: async (_, value) => {\n if (\n !value ||\n phone(value, { country: areaCode }).isValid ||\n phone(value).isValid\n )\n return Promise.resolve()\n return Promise.reject(t('common.i18nCheckErrorMessage'))\n },\n }\n }\n\n return {\n validateTrigger: 'onBlur',\n pattern: methodContent.pattern,\n message: methodContent.formatErrorMessage,\n }\n }, [\n areaCode,\n checkInternationalSms,\n methodContent.formatErrorMessage,\n methodContent.pattern,\n t,\n ])\n\n const rules = useMemo<Rule[]>(() => {\n // 如果不是必填就不校验\n\n // 必填项的默认校验规则\n const rules = [...fieldRequiredRule(t('common.phoneOrEmail'))]\n\n // 格式校验\n rules.push(formatRules)\n\n // 是否校验重复\n if (checkRepeat || checkExist) {\n rules.push({\n validator: checkRepeatFn,\n validateTrigger: [],\n })\n }\n\n return rules\n }, [t, formatRules, checkRepeat, checkExist, checkRepeatFn])\n // TODO 未来抽离\n const renderTemplate = useMemo(() => {\n if (methods.length !== 1)\n return (\n <FormItem\n validateTrigger={['onBlur', 'onChange']}\n validateFirst={true}\n rules={rules}\n {...formItemProps}\n />\n )\n\n switch (currentMethod) {\n case 'phone-code':\n return (\n <CustomFormItem.Phone\n {...formItemProps}\n areaCode={areaCode}\n checkRepeat={checkRepeat}\n checkExist={checkExist}\n />\n )\n case 'email-code':\n return (\n <CustomFormItem.Email\n {...formItemProps}\n checkRepeat={checkRepeat}\n checkExist={checkExist}\n />\n )\n }\n }, [\n areaCode,\n checkExist,\n checkRepeat,\n currentMethod,\n formItemProps,\n methods.length,\n rules,\n ])\n\n return <>{renderTemplate}</>\n}\n","import Input, { InputProps } from 'antd/lib/input'\nimport React, { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { VerifyLoginMethods } from '../../../AuthingGuard/api'\nimport { IconFont } from '../../../IconFont'\nimport { InputNumber } from '../../../InputNumber'\nimport { useGuardPublicConfig } from '../../../_utils/context'\n\nexport interface InputIdentifyProps extends InputProps {\n methods: VerifyLoginMethods[]\n}\n\nexport const InputIdentify: React.FC<InputIdentifyProps> = (props) => {\n const { methods, ...inputProps } = props\n\n const publicConfig = useGuardPublicConfig()\n\n const { t } = useTranslation()\n\n const verifyCodeMethodsText = useMemo<\n Record<\n VerifyLoginMethods,\n {\n t: string\n sort: number\n }\n >\n >(\n () => ({\n 'email-code': {\n t: t('common.email'),\n sort: 2,\n },\n 'phone-code': {\n t: publicConfig?.internationalSmsConfig?.enabled\n ? t('common.areaCodePhone')\n : t('common.phoneNumber'),\n sort: 1,\n },\n }),\n [publicConfig, t]\n )\n\n const placeholder = useMemo(\n () =>\n t('login.inputAccount', {\n text: methods\n ?.map((item) => verifyCodeMethodsText[item])\n .sort((a, b) => a.sort - b.sort)\n .map((item) => item.t)\n .join(' / '),\n }),\n [methods, t, verifyCodeMethodsText]\n )\n\n const renderInput = useMemo(() => {\n if (methods.length === 1 && methods[0] === 'phone-code') {\n // TODO 开启国际化配置并登录方式为手机号码时\n return (\n <InputNumber maxLength={11} placeholder={placeholder} {...inputProps} />\n )\n }\n\n return (\n <Input\n placeholder={placeholder}\n {...inputProps}\n prefix={\n <IconFont type=\"authing-a-user-line1\" style={{ color: '#878A95' }} />\n }\n />\n )\n }, [inputProps, methods, placeholder])\n\n return <>{renderInput}</>\n}\n","import { useGuardIsAuthFlow } from '../_utils/context'\nimport { getGuardHttp } from '../_utils/guardHttp'\n\nexport enum MfaBusinessAction {\n VerifyEmail = 'verify-email',\n VerifySms = 'verify-sms',\n VerifyTotp = 'verify-totp',\n VerifyFace = 'verify-face',\n AssociateFace = 'associate-face',\n}\n\nexport const authFlow = async (action: MfaBusinessAction, content: any) => {\n const { authFlow } = getGuardHttp()\n\n const res = await authFlow(action, { ...content })\n\n return res\n}\n\ninterface VerifySmsContent {\n phone: string\n code: string\n mfaToken?: string\n phoneCountryCode?: string\n}\n\ninterface VerifyEmailContent {\n email: string\n code: string\n mfaToken?: string\n}\n\ninterface VerifyTotpContent {\n totp: string\n mfaToken?: string\n}\n\ninterface VerifyFaceContent {\n photo: string\n mfaToken?: string\n}\n\ninterface AssociateFaceContent {\n photoA: string\n photoB: string\n isExternalPhoto?: boolean\n mfaToken?: string\n}\n\nexport const VerifyEmail = async (content: VerifyEmailContent) => {\n const { email, code, mfaToken } = content\n const { post } = getGuardHttp()\n\n return await post(\n '/api/v2/applications/mfa/email/verify',\n {\n email,\n code,\n },\n {\n headers: {\n authorization: `Bearer ${mfaToken}`,\n },\n }\n )\n}\n\nexport const VerifySms = async (content: VerifySmsContent) => {\n const { phone, code, mfaToken, phoneCountryCode } = content\n const { post } = getGuardHttp()\n\n return await post(\n '/api/v2/applications/mfa/sms/verify',\n {\n phone,\n code,\n phoneCountryCode,\n },\n {\n headers: {\n authorization: `Bearer ${mfaToken}`,\n },\n }\n )\n}\n\nexport const VerifyTotp = async (content: VerifyTotpContent) => {\n const { totp, mfaToken } = content\n const { post } = getGuardHttp()\n\n return await post(\n '/api/v2/applications/mfa/totp/verify',\n {\n totp,\n },\n {\n headers: {\n authorization: `Bearer ${mfaToken}`,\n },\n }\n )\n}\n\nexport const VerifyFace = async (content: VerifyFaceContent) => {\n const { photo, mfaToken } = content\n const { post } = getGuardHttp()\n\n return await post(\n '/api/v2/applications/mfa/face/verify',\n {\n photo,\n },\n {\n headers: {\n authorization: `Bearer ${mfaToken}`,\n },\n }\n )\n}\n\nexport const AssociateFace = async (content: AssociateFaceContent) => {\n const { photoA, photoB, isExternalPhoto, mfaToken } = content\n const { post } = getGuardHttp()\n\n return await post(\n '/api/v2/mfa/face/associate',\n {\n photoA,\n photoB,\n isExternalPhoto,\n },\n {\n headers: {\n authorization: `Bearer ${mfaToken}`,\n },\n }\n )\n}\n\nexport const useMfaBusinessRequest = () => {\n const isFlow = useGuardIsAuthFlow()\n\n const request = {\n [MfaBusinessAction.VerifyEmail]: (content: VerifyEmailContent) => {\n if (isFlow) {\n return authFlow(MfaBusinessAction.VerifyEmail, content)\n }\n\n return VerifyEmail(content)\n },\n [MfaBusinessAction.VerifySms]: (content: VerifySmsContent) => {\n if (isFlow) {\n return authFlow(MfaBusinessAction.VerifySms, content)\n }\n\n return VerifySms(content)\n },\n [MfaBusinessAction.VerifyTotp]: (content: VerifyTotpContent) => {\n if (isFlow) {\n return authFlow(MfaBusinessAction.VerifyTotp, content)\n }\n\n return VerifyTotp(content)\n },\n [MfaBusinessAction.VerifyFace]: (content: VerifyFaceContent) => {\n if (isFlow) {\n return authFlow(MfaBusinessAction.VerifyFace, content)\n }\n\n return VerifyFace(content)\n },\n [MfaBusinessAction.AssociateFace]: (content: AssociateFaceContent) => {\n if (isFlow) {\n return authFlow(MfaBusinessAction.AssociateFace, content)\n }\n\n return AssociateFace(content)\n },\n }\n\n return request\n}\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { message } from 'antd'\n\nimport { GuardModuleType } from '../Guard/module'\nimport { ResetPassword } from './core/resetPassword'\n\nimport { ImagePro } from '../ImagePro'\nimport { useGuardAuthClient } from '../Guard/authClient'\nimport { CommonMessage } from '..'\nimport {\n useGuardEvents,\n useGuardFinallyConfig,\n useGuardModule,\n useGuardPublicConfig,\n} from '../_utils/context'\n// import { ChangeLanguage } from '../ChangeLanguage'\n\nexport const GuardForgetPassword: React.FC = () => {\n const { t } = useTranslation()\n\n const events = useGuardEvents()\n\n const publicConfig = useGuardPublicConfig()\n\n const authClient = useGuardAuthClient()\n\n const config = useGuardFinallyConfig()\n\n const { changeModule } = useGuardModule()\n\n const onReset = (res: any) => {\n let code = res.code\n if (code !== 200) {\n events?.onPwdResetError?.(res, authClient)\n message.error(res.message)\n return\n }\n events?.onPwdReset?.(authClient)\n // 返回登录\n const initData = {\n title: t('common.resetSuccess'),\n message: t('common.resetSuccessMessage'),\n }\n changeModule?.(GuardModuleType.SUBMIT_SUCCESS, {\n ...initData,\n })\n }\n\n const onSend = (type: 'phone' | 'email') => {\n if (type === 'phone') events?.onPwdPhoneSend?.(authClient)\n if (type === 'email') events?.onPwdEmailSend?.(authClient)\n }\n const onSendError = (type: 'phone' | 'email', error: any) => {\n if (type === 'phone')\n events?.onPwdPhoneSendError?.(error as CommonMessage, authClient)\n if (type === 'email')\n events?.onPwdEmailSendError?.(error as CommonMessage, authClient)\n }\n\n return (\n <div className=\"g2-view-container g2-forget-password\">\n <div className=\"g2-view-header\">\n <ImagePro\n src={config?.logo!}\n size={48}\n borderRadius={4}\n alt=\"\"\n className=\"icon\"\n />\n <div className=\"title\">{t('login.resetPwd')}</div>\n <div className=\"title-explain\">{t('user.resetpasswordText1')}</div>\n </div>\n <div className=\"g2-view-tabs\">\n <ResetPassword\n onReset={onReset}\n publicConfig={publicConfig}\n onSend={onSend}\n onSendError={onSendError}\n />\n </div>\n <div className=\"g2-tips-line\">\n <div\n className=\"link-like back-to-login\"\n onClick={() => changeModule?.(GuardModuleType.LOGIN)}\n >\n {t('common.backLoginPage')}\n </div>\n </div>\n {/* <ChangeLanguage langRange={langRange} onLangChange={props.onLangChange} /> */}\n </div>\n )\n}\n","import { FormItemProps } from 'antd/lib/form'\nimport FormItem from 'antd/lib/form/FormItem'\nimport React, { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { PasswordLoginMethods } from '../../../AuthingGuard/api'\nimport CustomFormItem from '../../../ValidatorRules'\nimport { fieldRequiredRule } from '../../../_utils'\n\nexport interface FormItemAccountProps extends FormItemProps {\n passwordLoginMethods: PasswordLoginMethods[]\n}\n\nexport const FormItemAccount: React.FC<FormItemAccountProps> = (props) => {\n const { passwordLoginMethods: methods, ...formItemPtops } = props\n const { t } = useTranslation()\n const runderTemplate = useMemo(() => {\n if (methods.length !== 1)\n return (\n <FormItem\n validateTrigger={['onBlur', 'onChange']}\n rules={fieldRequiredRule(t('common.account'))}\n {...formItemPtops}\n />\n )\n\n switch (methods[0]) {\n case 'phone-password':\n return (\n <CustomFormItem.Phone {...formItemPtops} isCheckI18nSms={false} />\n )\n case 'email-password':\n return <CustomFormItem.Email {...formItemPtops} />\n case 'username-password':\n return <CustomFormItem.UserName {...formItemPtops} />\n }\n }, [formItemPtops, methods, t])\n\n return <>{runderTemplate}</>\n}\n","import Input, { InputProps } from 'antd/lib/input'\nimport React, { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { PasswordLoginMethods } from '../../../AuthingGuard/api'\nimport { InputNumber } from '../../../InputNumber'\n\nexport interface InputAccountProps extends InputProps {\n passwordLoginMethods: PasswordLoginMethods[]\n}\n\nexport const InputAccount: React.FC<InputAccountProps> = (props) => {\n const { passwordLoginMethods: methods, ...inputProps } = props\n\n const { t } = useTranslation()\n\n const loginMethodsText = useMemo<\n Record<\n PasswordLoginMethods,\n {\n t: string\n sort: number\n }\n >\n >(\n () => ({\n 'email-password': {\n t: t('common.email'),\n sort: 1,\n },\n 'phone-password': {\n t: t('common.phoneNumber'),\n sort: 0,\n },\n 'username-password': {\n t: t('common.username'),\n sort: 2,\n },\n }),\n [t]\n )\n\n const placeholder = useMemo(\n () =>\n t('login.inputAccount', {\n text: methods\n ?.map((item) => loginMethodsText[item])\n .sort((a, b) => a.sort - b.sort)\n .map((item) => item.t)\n .join(' / '),\n }),\n [loginMethodsText, methods, t]\n )\n\n const runderInput = useMemo(() => {\n if (methods.length === 1 && methods[0] === 'phone-password')\n return (\n <InputNumber maxLength={11} placeholder={placeholder} {...inputProps} />\n )\n\n return <Input placeholder={placeholder} {...inputProps} />\n }, [inputProps, methods, placeholder])\n\n return <>{runderInput}</>\n}\n","import Input, { InputProps } from 'antd/lib/input'\nimport React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { ImagePro } from '../../../ImagePro'\n\nexport interface GraphicVerifyCodeProps extends InputProps {\n verifyCodeUrl: string\n changeCode: () => void\n}\n\nexport const GraphicVerifyCode: React.FC<GraphicVerifyCodeProps> = (props) => {\n const { verifyCodeUrl, changeCode, ...inputProps } = props\n\n const { t } = useTranslation()\n\n return (\n <div className=\"g2-graphic-verify-code\">\n <Input {...inputProps} />\n\n <ImagePro\n className=\"g2-captcha-code-image\"\n src={verifyCodeUrl}\n alt={t('login.captchaCode')}\n height=\"46px\"\n style={{ cursor: 'pointer' }}\n onClick={() => changeCode()}\n />\n </div>\n )\n}\n","import React, { FC, useState, useMemo, useEffect } from 'react'\nimport { Space, Checkbox } from 'antd'\nimport './style.less'\nimport { getClassnames } from '../../../_utils'\nimport { Agreement } from '../../../AuthingGuard/api'\n\nexport interface AgreementsProps {\n value?: boolean\n onChange?: (value: boolean) => void\n style?: React.CSSProperties\n agreements: Agreement[]\n showError?: boolean\n}\n\nexport const Agreements: FC<AgreementsProps> = ({\n showError,\n onChange = () => {},\n style,\n agreements,\n}) => {\n const [acceptList, setAcceptList] = useState<(string | number)[]>([])\n\n const toggleItemCheck = (id: string | number) => {\n setAcceptList((prev) => {\n if (prev.includes(id)) {\n return prev.filter((item) => item !== id)\n }\n return [...prev, id]\n })\n }\n\n /** 是否可以注册 */\n const isAccept = useMemo(() => {\n /** 所有必须勾选的都勾了就可以通过 */\n return agreements\n .filter((item) => item.required)\n .every((item) => acceptList.includes(item.id))\n }, [acceptList, agreements])\n\n useEffect(() => {\n onChange(isAccept)\n }, [isAccept, onChange])\n\n return (\n <div\n className={getClassnames([\n 'authing-agreements',\n showError && 'authing-agreements-error',\n ])}\n >\n {agreements.map((item) => {\n return (\n <div\n key={item.id}\n style={{ ...style }}\n className={getClassnames([\n 'authing-agreements-item',\n item.required &&\n !acceptList.includes(item.id) &&\n 'authing-agreements-item-invalid',\n ])}\n onClick={(e: any) => {\n e.persist()\n if (e.target.nodeName !== 'A') {\n toggleItemCheck(item.id)\n }\n }}\n >\n <Space align=\"start\" size={5}>\n <Checkbox\n className=\"authing-agreements-checkbox\"\n checked={acceptList.includes(item.id)}\n />\n <div\n className=\"authing-agreements-item-content\"\n dangerouslySetInnerHTML={{\n __html: item.title,\n }}\n ></div>\n </Space>\n </div>\n )\n })}\n </div>\n )\n}\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { Form } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { useGuardHttp } from '../../../_utils/guardHttp'\nimport { useGuardAuthClient } from '../../../Guard/authClient'\nimport { fieldRequiredRule, getUserRegisterParams } from '../../../_utils'\nimport { ErrorCode } from '../../../_utils/GuardErrorCode'\nimport SubmitButton from '../../../SubmitButton'\nimport { Agreement, PasswordLoginMethods } from '../../../AuthingGuard/api'\nimport { LoginMethods } from '../../..'\nimport { FormItemAccount } from './FormItemAccount'\nimport { InputAccount } from './InputAccount'\nimport { GraphicVerifyCode } from './GraphicVerifyCode'\nimport { IconFont } from '../../../IconFont'\nimport { InputPassword } from '../../../InputPassword'\nimport { Agreements } from '../../../Register/components/Agreements'\nimport { AuthingGuardResponse, AuthingResponse } from '../../../_utils/http'\nimport { CodeAction } from '../../../_utils/responseManagement/interface'\nimport { useMediaSize } from '../../../_utils/hooks'\nimport { useGuardInitData, useGuardPublicConfig } from '../../../_utils/context'\nimport { GuardLoginInitData } from '../../interface'\ninterface LoginWithPasswordProps {\n // configs\n publicKey: string\n autoRegister?: boolean\n host?: string\n\n // events\n // onLogin: any\n onBeforeLogin?: any\n onLoginSuccess?: any\n onLoginFailed?: any\n // 越过 login 正常的请求,返回一个 res\n onLoginRequest?: (loginInfo: any) => Promise<AuthingResponse>\n passwordLoginMethods: PasswordLoginMethods[]\n\n agreements: Agreement[]\n loginWay?: LoginMethods\n submitButText?: string\n saveIdentify?: (type: LoginMethods, identity: string) => void\n}\n\nexport const LoginWithPassword = (props: LoginWithPasswordProps) => {\n const { agreements, onLoginFailed, onLoginSuccess, saveIdentify } = props\n\n const {\n _firstItemInitialValue = '',\n specifyDefaultLoginMethod,\n } = useGuardInitData<GuardLoginInitData>()\n\n const [acceptedAgreements, setAcceptedAgreements] = useState(false)\n const { isPhoneMedia } = useMediaSize()\n const [validated, setValidated] = useState(false)\n\n let { t } = useTranslation()\n let { post } = useGuardHttp()\n let client = useGuardAuthClient()\n\n const publicConfig = useGuardPublicConfig()\n\n let submitButtonRef = useRef<any>(null)\n\n const [showCaptcha, setShowCaptcha] = useState(false)\n const [verifyCodeUrl, setVerifyCodeUrl] = useState('')\n const [remainCount, setRemainCount] = useState(0)\n const [accountLock, setAccountLock] = useState(false)\n const getCaptchaUrl = () => {\n const url = new URL(props.host!)\n url.pathname = '/api/v2/security/captcha'\n url.search = `?r=${+new Date()}`\n return url.href\n }\n\n const encrypt = client.options.encryptFunction\n\n const loginRequest = useCallback(\n async (loginInfo: any): Promise<AuthingGuardResponse> => {\n if (!!props.onLoginRequest) {\n const res = await props.onLoginRequest(loginInfo)\n return res\n }\n\n // onLogin\n const { data: loginData } = loginInfo\n let url = publicConfig?.mergeAdAndAccountPasswordLogin\n ? '/api/v2/login/ad-all-in-one'\n : '/api/v2/login/account'\n let account = loginData.identity && loginData.identity.trim()\n let password = loginData.password && loginData.password.trim()\n let captchaCode = loginData.captchaCode && loginData.captchaCode.trim()\n\n let body = {\n account: account,\n password: await encrypt!(password, props.publicKey),\n captchaCode,\n customData: getUserRegisterParams(),\n autoRegister: props.autoRegister,\n withCustomData: true,\n }\n const res = await post(url, body)\n\n return res\n },\n [encrypt, post, props, publicConfig.mergeAdAndAccountPasswordLogin]\n )\n\n const onFinish = async (values: any) => {\n setValidated(true)\n if (agreements?.length && !acceptedAgreements) {\n submitButtonRef.current.onError()\n return\n }\n setRemainCount(0)\n // onBeforeLogin\n submitButtonRef?.current?.onSpin(true)\n let loginInfo = {\n type: LoginMethods.Password,\n data: {\n identity: values.account,\n password: values.password,\n captchaCode: values.captchaCode,\n },\n }\n let context = await props.onBeforeLogin?.(loginInfo)\n if (!context && !!props.onBeforeLogin) {\n submitButtonRef?.current?.onSpin(false)\n return\n }\n\n const res = await loginRequest(loginInfo)\n\n onLoginRes(res)\n }\n\n const onLoginRes = (res: AuthingGuardResponse) => {\n const { code, apiCode, message: msg, data, onGuardHandling } = res\n\n submitButtonRef?.current?.onSpin(false)\n\n if (code === 200) {\n onLoginSuccess(data, msg)\n } else {\n if (apiCode === ErrorCode.INPUT_CAPTCHACODE) {\n setVerifyCodeUrl(getCaptchaUrl())\n setShowCaptcha(true)\n }\n\n if (apiCode === ErrorCode.PASSWORD_ERROR) {\n if ((data as any)?.remainCount ?? false) {\n setRemainCount((data as any)?.remainCount ?? 0)\n submitButtonRef?.current?.onSpin(false)\n // TODO 临时拦截密码错误限制不报 message\n // props.onLogin(9999, data, msg)\n onLoginFailed?.(9999, data, msg)\n return\n }\n }\n\n if (\n apiCode === ErrorCode.ACCOUNT_LOCK ||\n apiCode === ErrorCode.MULTIPLE_ERROR_LOCK\n ) {\n // 账号锁定\n setAccountLock(true)\n }\n\n // 响应拦截器处理通用错误以及changeModule\n const handMode = onGuardHandling?.()\n // 向上层抛出错误\n handMode === CodeAction.RENDER_MESSAGE && onLoginFailed?.(code, data, msg)\n }\n }\n\n useEffect(() => {\n setRemainCount(0)\n setAccountLock(false)\n }, [props.loginWay])\n\n const submitText = useMemo(() => {\n if (props.submitButText) return props.submitButText\n\n return props.autoRegister\n ? `${t('common.login')} / ${t('common.register')}`\n : t('common.login')\n }, [props, t])\n\n const formValuesChange = (changedValues: Record<string, any>) => {\n if (changedValues?.account && saveIdentify) {\n saveIdentify(LoginMethods.Password, changedValues?.account)\n }\n }\n\n return (\n <div className=\"authing-g2-login-password\">\n <Form\n name=\"passworLogin\"\n onFinish={onFinish}\n onFinishFailed={() => submitButtonRef.current.onError()}\n autoComplete=\"off\"\n onValuesChange={formValuesChange}\n >\n <FormItemAccount\n name=\"account\"\n className=\"authing-g2-input-form\"\n passwordLoginMethods={props.passwordLoginMethods}\n initialValue={\n specifyDefaultLoginMethod === LoginMethods.Password\n ? _firstItemInitialValue\n : ''\n }\n // TODO\n // 开启国际化手机号场景且只有手机号情况下 不应再根据区号去验证手机号\n >\n <InputAccount\n className=\"authing-g2-input\"\n autoComplete=\"off\"\n size=\"large\"\n autoFocus={!isPhoneMedia}\n prefix={\n <IconFont\n type=\"authing-a-user-line1\"\n style={{ color: '#878A95' }}\n />\n }\n passwordLoginMethods={props.passwordLoginMethods}\n />\n </FormItemAccount>\n <Form.Item\n name=\"password\"\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form\"\n rules={fieldRequiredRule(t('common.password'))}\n >\n <InputPassword\n className=\"authing-g2-input\"\n size=\"large\"\n placeholder={t('login.inputLoginPwd')}\n prefix={\n <IconFont\n type=\"authing-a-lock-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </Form.Item>\n {/* 图形验证码 */}\n {showCaptcha && (\n <Form.Item\n className=\"authing-g2-input-form\"\n validateTrigger={['onBlur', 'onChange']}\n name=\"captchaCode\"\n rules={fieldRequiredRule(t('common.captchaCode'))}\n >\n <GraphicVerifyCode\n className=\"authing-g2-input\"\n size=\"large\"\n placeholder={t('login.inputCaptchaCode')}\n verifyCodeUrl={verifyCodeUrl}\n changeCode={() => setVerifyCodeUrl(getCaptchaUrl())}\n />\n </Form.Item>\n )}\n {remainCount !== 0 && !accountLock && (\n <span\n style={{\n marginBottom: 23,\n fontSize: 12,\n color: '#E8353E',\n display: 'block',\n }}\n >\n {t('common.loginFailCheck', {\n number: remainCount,\n })}\n </span>\n )}\n {accountLock && (\n <span\n style={{\n marginBottom: 23,\n fontSize: 12,\n color: '#E8353E',\n display: 'block',\n }}\n >\n {t('common.accountLock')}\n </span>\n )}\n\n {Boolean(agreements?.length) && (\n <Agreements\n onChange={setAcceptedAgreements}\n agreements={agreements}\n showError={validated}\n />\n )}\n <Form.Item>\n <SubmitButton\n // TODO 产品还没想好 暂时不上\n // disabled={\n // !!agreements.find((item) => item.required && !acceptedAgreements)\n // }\n text={submitText}\n className=\"password\"\n ref={submitButtonRef}\n />\n </Form.Item>\n </Form>\n </div>\n )\n}\n","import React, { useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Form, Input, message } from 'antd'\nimport { LoginMethods } from '../../'\nimport { ErrorCode } from '../../_utils/GuardErrorCode'\n// import { useGuardAuthClient } from '../../Guard/authClient'\nimport SubmitButton from '../../SubmitButton'\nimport { fieldRequiredRule } from '../../_utils'\nimport { IconFont } from '../../IconFont'\nimport { InputPassword } from '../../InputPassword'\nimport { Agreements } from '../../Register/components/Agreements'\nimport { Agreement } from '../../AuthingGuard/api'\nimport { useGuardHttpClient } from '../../_utils/context'\nimport { CodeAction } from '../../_utils/responseManagement/interface'\nimport { useMediaSize } from '../../_utils/hooks'\ninterface LoginWithLDAPProps {\n // configs\n publicKey: string\n autoRegister?: boolean\n host?: string\n\n // events\n // onLogin: any\n onLoginSuccess: any\n onLoginFailed: any\n onBeforeLogin: any\n agreements: Agreement[]\n}\n\nexport const LoginWithLDAP = (props: LoginWithLDAPProps) => {\n const { agreements, onLoginSuccess, onLoginFailed } = props\n\n // const { responseIntercept } = useGuardHttpClient()\n\n const [acceptedAgreements, setAcceptedAgreements] = useState(false)\n\n const { isPhoneMedia } = useMediaSize()\n\n const [validated, setValidated] = useState(false)\n // let client = useGuardAuthClient()\n const { post } = useGuardHttpClient()\n const { t } = useTranslation()\n let submitButtonRef = useRef<any>(null)\n\n const [showCaptcha, setShowCaptcha] = useState(false)\n const [verifyCodeUrl, setVerifyCodeUrl] = useState('')\n const captchaUrl = `${props.host}/api/v2/security/captcha`\n const getCaptchaUrl = () => `${captchaUrl}?r=${+new Date()}`\n\n const onFinish = async (values: any) => {\n setValidated(true)\n if (agreements?.length && !acceptedAgreements) {\n submitButtonRef.current?.onError()\n return\n }\n // onBeforeLogin\n submitButtonRef.current?.onSpin(true)\n let loginInfo = {\n type: LoginMethods.LDAP,\n data: {\n identity: values.account,\n password: values.password,\n captchaCode: values.captchaCode,\n },\n }\n let context = await props.onBeforeLogin(loginInfo)\n if (!context) {\n submitButtonRef.current?.onSpin(false)\n return\n }\n\n // onLogin\n let username = values.account && values.account.trim()\n let password = values.password && values.password.trim()\n\n try {\n const { code, data, onGuardHandling } = await post(\n '/api/v2/ldap/verify-user',\n {\n username,\n password,\n }\n )\n\n submitButtonRef.current.onSpin(false)\n\n if (code === 200) {\n onLoginSuccess(data)\n } else {\n if (code === ErrorCode.INPUT_CAPTCHACODE) {\n setVerifyCodeUrl(getCaptchaUrl())\n setShowCaptcha(true)\n }\n const handMode = onGuardHandling?.()\n // 向上层抛出错误\n handMode === CodeAction.RENDER_MESSAGE && onLoginFailed(code, data)\n }\n } catch (error: any) {\n submitButtonRef.current?.onSpin(false)\n if (error.code === 'ECONNABORTED') {\n message.error(t('common.timeoutLDAP'))\n onLoginFailed(2333, {})\n } else {\n console.log(error)\n }\n }\n\n // let captchaCode = values.captchaCode && values.captchaCode.trim()\n // await client\n // .loginByLdap(account, password)\n // .then((user) => {\n // onLoginSuccess(user)\n // })\n // .catch((error: any) => {\n // if (error.code === 'ECONNABORTED') {\n // message.error(t('common.timeoutLDAP'))\n // onLoginFailed(2333, {})\n // } else {\n // submitButtonRef.current?.onError()\n // let parsedMessage: any = {}\n // try {\n // parsedMessage = JSON.parse(error.message) || error\n // } catch {\n // console.log('message 解析失败')\n // }\n // const { code, statusCode, apiCode, message, data } = parsedMessage\n // if (code === ErrorCode.INPUT_CAPTCHACODE) {\n // setVerifyCodeUrl(getCaptchaUrl())\n // setShowCaptcha(true)\n // }\n // // TODO 错误信息返回不符合 AuthingResponse 的格式 暂用 code 替代\n // const { onGuardHandling } = responseIntercept({\n // statusCode: statusCode || code,\n // apiCode,\n // data,\n // message,\n // code,\n // })\n // const handMode = onGuardHandling?.()\n // // 向上层抛出错误\n // handMode === CodeAction.RENDER_MESSAGE && onLoginFailed(code, data)\n // }\n // })\n // .finally(() => {\n // submitButtonRef.current?.onSpin(false)\n // })\n }\n\n return (\n <div className=\"authing-g2-login-ldap\">\n <Form\n name=\"passworLogin\"\n onFinish={onFinish}\n onFinishFailed={() => submitButtonRef.current?.onError()}\n autoComplete=\"off\"\n >\n <Form.Item\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form\"\n name=\"account\"\n rules={fieldRequiredRule(t('common.account'))}\n >\n <Input\n autoFocus={!isPhoneMedia}\n className=\"authing-g2-input\"\n autoComplete=\"off\"\n size=\"large\"\n placeholder={t('login.inputLdapUsername')}\n prefix={\n <IconFont\n type=\"authing-a-user-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </Form.Item>\n <Form.Item\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form\"\n name=\"password\"\n rules={fieldRequiredRule(t('common.password'))}\n >\n <InputPassword\n className=\"authing-g2-input\"\n size=\"large\"\n placeholder={t('login.inputLdapPwd')}\n // prefix={<LockOutlined style={{ color: '#878A95' }} />}\n prefix={\n <IconFont\n type=\"authing-a-lock-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </Form.Item>\n {showCaptcha && (\n <Form.Item\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form\"\n name=\"captchaCode\"\n rules={[{ required: true, message: t('login.inputCaptchaCode') }]}\n >\n <Input\n className=\"authing-g2-input add-after\"\n size=\"large\"\n placeholder={t('login.inputCaptchaCode')}\n addonAfter={\n <img\n className=\"g2-captcha-code-image\"\n src={verifyCodeUrl}\n alt={t('login.captchaCode')}\n style={{ height: '2em', cursor: 'pointer' }}\n onClick={() => setVerifyCodeUrl(getCaptchaUrl())}\n />\n }\n />\n </Form.Item>\n )}\n {Boolean(agreements?.length) && (\n <Agreements\n onChange={setAcceptedAgreements}\n agreements={agreements}\n showError={validated}\n />\n )}\n <Form.Item>\n <SubmitButton\n // disabled={\n // !!agreements.find((item) => item.required && !acceptedAgreements)\n // }\n text={t('common.login')}\n className=\"password\"\n ref={submitButtonRef}\n />\n </Form.Item>\n </Form>\n </div>\n )\n}\n","import { Form, Input, message } from 'antd'\nimport { LoginMethods } from 'authing-js-sdk'\nimport React, { useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Agreement } from '../../AuthingGuard/api'\n// import { useGuardAuthClient } from '../../Guard/authClient'\nimport { IconFont } from '../../IconFont'\nimport { InputPassword } from '../../InputPassword'\nimport { Agreements } from '../../Register/components/Agreements'\nimport SubmitButton from '../../SubmitButton'\nimport version from '../../version/version'\nimport { fieldRequiredRule } from '../../_utils'\nimport {\n useGuardAppId,\n useGuardFinallyConfig,\n useGuardHttpClient,\n useGuardPublicConfig,\n} from '../../_utils/context'\nimport { useMediaSize } from '../../_utils/hooks'\nimport { requestClient } from '../../_utils/http'\nimport { i18n } from '../../_utils/locales'\nimport { CodeAction } from '../../_utils/responseManagement/interface'\n\ninterface LoginWithADProps {\n // configs\n publicKey: string\n autoRegister?: boolean\n // host?: string\n\n // events\n // onLogin: any\n onLoginSuccess: any\n onLoginFailed: any\n onBeforeLogin: any\n agreements: Agreement[]\n}\n\nexport const LoginWithAD = (props: LoginWithADProps) => {\n const { agreements, onLoginFailed, onLoginSuccess } = props\n\n const [acceptedAgreements, setAcceptedAgreements] = useState(false)\n\n const [validated, setValidated] = useState(false)\n\n const publicConfig = useGuardPublicConfig()\n\n const { host } = useGuardFinallyConfig()\n\n const appId = useGuardAppId()\n\n const { responseIntercept } = useGuardHttpClient()\n\n const { t } = useTranslation()\n\n const { isPhoneMedia } = useMediaSize()\n // let client = useGuardAuthClient()\n\n // const { post } = useGuardHttpClient()\n\n let submitButtonRef = useRef<any>(null)\n\n const onFinish = async (values: any) => {\n setValidated(true)\n if (agreements?.length && !acceptedAgreements) {\n submitButtonRef.current?.onError()\n return\n }\n // onBeforeLogin\n submitButtonRef.current?.onSpin(true)\n let loginInfo = {\n type: LoginMethods.AD,\n data: {\n identity: values.account,\n password: values.password,\n },\n }\n let context = await props.onBeforeLogin(loginInfo)\n if (!context) {\n submitButtonRef.current?.onSpin(false)\n return\n }\n\n // onLogin\n let username = values.account && values.account.trim()\n let password = values.password && values.password.trim()\n\n // todo\n try {\n const api = `${host}/api/v2/ad/verify-user`\n\n const fetchRes = await fetch(api, {\n method: 'POST',\n body: JSON.stringify({ username, password }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n [requestClient.langHeader]: i18n.language,\n 'x-authing-userpool-id': publicConfig.userPoolId,\n 'x-authing-app-id': appId,\n 'x-authing-sdk-version': version,\n 'x-authing-request-from': `Guard@${version}`,\n },\n })\n\n const res = await fetchRes.json()\n\n const { code, data, onGuardHandling } = responseIntercept(res)\n\n submitButtonRef.current?.onSpin(false)\n\n if (code === 200) {\n onLoginSuccess(data)\n } else {\n const handMode = onGuardHandling?.()\n // 向上层抛出错误\n handMode === CodeAction.RENDER_MESSAGE && onLoginFailed(code, data)\n }\n } catch (error: any) {\n submitButtonRef.current?.onSpin(false)\n if (error.code === 'ECONNABORTED') {\n message.error(t('common.timeoutAD'))\n onLoginFailed(2333, {})\n } else {\n console.log(error)\n }\n }\n\n // await client\n // .loginByAd(account, password)\n // .then((user) => {\n // // props.onLogin(200, user)\n // onLoginSuccess(user)\n // })\n // .catch((error: any) => {\n // if (error.code === 'ECONNABORTED') {\n // message.error(t('common.timeoutAD'))\n // onLoginFailed(2333, {})\n // } else {\n // submitButtonRef.current?.onError()\n // let parsedMessage: any = {}\n // try {\n // parsedMessage = JSON.parse(error.message) || error\n // } catch {\n // console.log('message 解析失败')\n // }\n // const { code, statusCode, apiCode, message, data } = parsedMessage\n // // TODO 错误信息返回不符合 AuthingResponse 的格式 暂用 code 替代\n // const { onGuardHandling } = responseIntercept({\n // statusCode: statusCode || code,\n // apiCode,\n // data,\n // message,\n // code,\n // })\n\n // const handMode = onGuardHandling?.()\n // // 向上层抛出错误\n // handMode === CodeAction.RENDER_MESSAGE && onLoginFailed(code, data)\n // }\n // })\n // .finally(() => {\n // submitButtonRef.current?.onSpin(false)\n // })\n }\n\n return (\n <div className=\"authing-g2-login-ad\">\n <Form\n name=\"adLogin\"\n onFinish={onFinish}\n onFinishFailed={() => submitButtonRef.current.onError()}\n autoComplete=\"off\"\n >\n {publicConfig?.ssoPageComponentDisplay.userPasswordInput && (\n <>\n <Form.Item\n className=\"authing-g2-input-form\"\n name=\"account\"\n validateTrigger={['onBlur', 'onChange']}\n rules={fieldRequiredRule(t('common.account'))}\n >\n <Input\n autoFocus={!isPhoneMedia}\n className=\"authing-g2-input\"\n autoComplete=\"off\"\n size=\"large\"\n placeholder={\n publicConfig?.mergeAdAndAccountPasswordLogin\n ? t('login.inputUsername')\n : t('login.inputAdUsername')\n }\n prefix={\n <IconFont\n type=\"authing-a-user-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </Form.Item>\n <Form.Item\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form\"\n name=\"password\"\n rules={fieldRequiredRule(t('common.password'))}\n >\n <InputPassword\n autoComplete=\"off\"\n className=\"authing-g2-input\"\n size=\"large\"\n placeholder={\n publicConfig?.mergeAdAndAccountPasswordLogin\n ? t('login.inputPwd')\n : t('login.inputAdPwd')\n }\n prefix={\n <IconFont\n type=\"authing-a-lock-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </Form.Item>\n {Boolean(agreements?.length) && (\n <Agreements\n onChange={setAcceptedAgreements}\n agreements={agreements}\n showError={validated}\n />\n )}\n <Form.Item>\n <SubmitButton\n // disabled={\n // !!agreements.find(\n // (item) => item.required && !acceptedAgreements\n // )\n // }\n text={t('common.login')}\n className=\"password\"\n ref={submitButtonRef}\n />\n </Form.Item>\n </>\n )}\n </Form>\n </div>\n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { ShieldSpin } from '../../ShieldSpin'\nimport { useGuardAuthClient } from '../../Guard/authClient'\nimport { message } from 'antd'\nimport { useGuardFinallyConfig, useGuardHttpClient } from '../../_utils/context'\nimport { getGuardWindow } from '../../Guard/core/useAppendConfig'\n\ninterface LoginWithAppQrcodeProps {\n // onLogin: any\n onLoginSuccess: any\n canLoop: boolean\n qrCodeScanOptions: any\n}\n\nexport const LoginWithAppQrcode = (props: LoginWithAppQrcodeProps) => {\n const timerRef = useRef<any>()\n const client = useGuardAuthClient()\n const [loading, setLoading] = useState(true)\n const appQrcodeClient = client.qrcode\n const { responseIntercept } = useGuardHttpClient()\n const config = useGuardFinallyConfig()\n useEffect(() => {\n const guardWindow = getGuardWindow()\n\n if (!guardWindow) return\n\n if (!!config?._qrCodeScanOptions) return\n\n const document = guardWindow.document\n\n if (!props.canLoop) {\n return () => clearInterval(timerRef.current)\n }\n setLoading(true)\n appQrcodeClient.startScanning('authingGuardAppQrcode', {\n currentDocument: document,\n autoExchangeUserInfo: true,\n ...props.qrCodeScanOptions,\n onCodeShow() {\n setLoading(false)\n },\n onStart(timer) {\n timerRef.current = timer\n },\n onSuccess(user) {\n // props.onLogin(200, user)\n clearInterval(timerRef.current)\n props.onLoginSuccess(user)\n },\n onError: (ms) => {\n if (ms) {\n message.error(ms)\n }\n },\n onCodeLoadFailed: ({ message: mes }: any) => {\n message.error(JSON.parse(mes).message)\n setLoading(false)\n },\n onRetry: () => {\n setLoading(true)\n },\n onAuthFlow: (scannedResult: any) => {\n clearInterval(timerRef.current)\n const { onGuardHandling } = responseIntercept(scannedResult)\n onGuardHandling?.()\n },\n })\n return () => clearInterval(timerRef.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [appQrcodeClient, props.canLoop])\n\n return (\n <div className=\"authing-g2-login-app-qrcode\">\n {config._qrCodeScanOptions ? (\n <div className=\"qrcode\">\n <img src={config._qrCodeScanOptions.appQrcode.qrcode} alt=\"\" />\n <span>{props.qrCodeScanOptions.tips.title}</span>\n </div>\n ) : (\n <>\n {loading && <ShieldSpin />}\n <div id=\"authingGuardAppQrcode\"></div>\n </>\n )}\n </div>\n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { message } from 'antd'\nimport { ShieldSpin } from '../../ShieldSpin'\nimport { useGuardAuthClient } from '../../Guard/authClient'\nimport { useGuardFinallyConfig, useGuardHttpClient } from '../../_utils/context'\nimport { getGuardWindow } from '../../Guard/core/useAppendConfig'\n\ninterface LoginWithWechatMiniQrcodeProps {\n // onLogin: any\n onLoginSuccess: any\n canLoop: boolean\n qrCodeScanOptions: any\n}\n\nexport const LoginWithWechatMiniQrcode = (\n props: LoginWithWechatMiniQrcodeProps\n) => {\n const timerRef = useRef<any>()\n const client = useGuardAuthClient()\n const [loading, setLoading] = useState(true)\n const appQrcodeClient = client.wxqrcode\n const { responseIntercept } = useGuardHttpClient()\n const config = useGuardFinallyConfig()\n const domId = `authingGuardMiniQrcode-${props.qrCodeScanOptions.extIdpConnId}`\n\n useEffect(() => {\n const guardWindow = getGuardWindow()\n\n if (!guardWindow) return\n\n if (!!config._qrCodeScanOptions) return\n\n const document = guardWindow.document\n\n if (!props.canLoop) {\n return () => clearInterval(timerRef.current)\n }\n\n setLoading(true)\n\n appQrcodeClient.startScanning(domId, {\n currentDocument: document,\n autoExchangeUserInfo: true,\n ...props.qrCodeScanOptions,\n onCodeShow() {\n setLoading(false)\n },\n onStart(timer) {\n timerRef.current = timer\n },\n onSuccess(user) {\n // props.onLogin(200, user)\n clearInterval(timerRef.current)\n props.onLoginSuccess(user)\n },\n onError: (ms) => {\n if (ms) {\n message.error(ms)\n }\n },\n onCodeLoadFailed: ({ message: mes }: any) => {\n message.error(JSON.parse(mes).message)\n setLoading(false)\n },\n onRetry: () => {\n setLoading(true)\n },\n onAuthFlow: (scannedResult: any) => {\n clearInterval(timerRef.current)\n const { onGuardHandling } = responseIntercept(scannedResult)\n onGuardHandling?.()\n },\n })\n return () => clearInterval(timerRef.current)\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [appQrcodeClient, props.canLoop])\n\n return (\n <div className=\"authing-g2-login-app-qrcode\">\n {config._qrCodeScanOptions ? (\n <div className=\"qrcode\">\n <img src={config._qrCodeScanOptions.wechatMiniQrcode.qrcode} alt=\"\" />\n <span>{props.qrCodeScanOptions.tips.title}</span>\n </div>\n ) : (\n <>\n {loading && <ShieldSpin />}\n <div id={domId}></div>\n </>\n )}\n </div>\n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { ShieldSpin } from '../../ShieldSpin'\nimport { useGuardAuthClient } from '../../Guard/authClient'\nimport { useGuardFinallyConfig, useGuardHttpClient } from '../../_utils/context'\nimport { message } from 'antd'\nimport { getGuardWindow } from '../../Guard/core/useAppendConfig'\n\ninterface LoginWithWechatmpQrcodeProps {\n // onLogin: any\n onLoginSuccess: any\n canLoop: boolean\n qrCodeScanOptions: any\n}\n\nexport const LoginWithWechatmpQrcode = (\n props: LoginWithWechatmpQrcodeProps\n) => {\n const timerRef = useRef<any>()\n\n const client = useGuardAuthClient()\n\n const { responseIntercept } = useGuardHttpClient()\n\n const [loading, setLoading] = useState(true)\n\n const appQrcodeClient = client.wechatmpqrcode\n\n const domId = `authingGuardMpQrcode-${props.qrCodeScanOptions.extIdpConnId}`\n\n const config = useGuardFinallyConfig()\n\n useEffect(() => {\n const guardWindow = getGuardWindow()\n\n if (!guardWindow) return\n\n if (!!config._qrCodeScanOptions) return\n\n const document = guardWindow.document\n\n if (!props.canLoop) {\n return () => clearInterval(timerRef.current)\n }\n setLoading(true)\n appQrcodeClient.startScanning(domId, {\n currentDocument: document,\n autoExchangeUserInfo: true,\n ...props.qrCodeScanOptions,\n\n onCodeShow() {\n setLoading(false)\n },\n onStart(timer) {\n timerRef.current = timer\n },\n onSuccess(user) {\n // props.onLogin(200, user)\n props.onLoginSuccess(user)\n clearInterval(timerRef.current)\n },\n onError: (ms) => {\n if (ms) {\n message.error(ms)\n }\n },\n onCodeLoadFailed: ({ message: mes }: any) => {\n message.error(JSON.parse(mes).message)\n setLoading(false)\n },\n onRetry: () => {\n setLoading(true)\n },\n onAuthFlow: (scannedResult: any) => {\n // props.onLogin(code, mfaData, message)\n clearInterval(timerRef.current)\n const { onGuardHandling } = responseIntercept(scannedResult)\n onGuardHandling?.()\n },\n })\n return () => clearInterval(timerRef.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [appQrcodeClient, props.canLoop])\n\n return (\n <div className=\"authing-g2-login-app-qrcode\">\n {config._qrCodeScanOptions ? (\n <div className=\"qrcode\">\n <img src={config._qrCodeScanOptions.wechatmpQrcode.qrcode} alt=\"\" />\n <span>{props.qrCodeScanOptions.tips.title}</span>\n </div>\n ) : (\n <>\n {loading && <ShieldSpin />}\n <div id={domId}></div>\n </>\n )}\n </div>\n )\n}\n","import { ErrorCode } from '../_utils/GuardErrorCode'\nimport { GuardModuleAction, GuardModuleType } from '../Guard/module'\nimport { MFAType } from '../MFA/interface'\n\nexport const codeMap: Record<number, GuardModuleAction> = {\n [ErrorCode.APP_MFA_CODE]: {\n // 跳转去 mfa 验证\n action: 'changeModule',\n module: GuardModuleType.MFA,\n },\n [ErrorCode.OTP_MFA_CODE]: {\n // 跳转去 mfa 验证\n action: 'changeModule',\n module: GuardModuleType.MFA,\n initData: {\n current: MFAType.TOTP,\n totpMfaEnabled: true,\n },\n },\n [ErrorCode.INPUT_CAPTCHACODE]: {\n // 需要输入图形验证码\n action: 'message',\n },\n 500: {\n action: 'message',\n },\n 1002: {\n // 登录太频繁\n action: 'message',\n },\n 2820002: {\n // ldap url报错信息\n action: 'message',\n },\n 2333: {\n // 密码错误\n action: 'message',\n },\n 2057: {\n // 多次错误登录导致账号锁定\n action: 'accountLock',\n },\n 2005: {\n // 账号锁定\n action: 'accountLock',\n },\n 2042: {\n // 禁止未验证邮箱注册\n action: 'message',\n },\n 2001: {\n // 验证码过期\n action: 'message',\n },\n 1576: {\n action: 'message',\n },\n 2029: {\n action: 'message',\n },\n 3720001: {\n // 01 02 03 计量计费相关\n action: 'message',\n },\n 3720002: {\n action: 'message',\n },\n 3720003: {\n action: 'message',\n },\n 2130010: {\n // 无权登录此应用\n action: 'message',\n },\n 2120008: {\n action: 'message',\n },\n 2031: {\n // 禁止注册\n action: 'message',\n },\n 1640: {\n action: 'changeModule',\n module: GuardModuleType.IDENTITY_BINDING,\n },\n 1641: {\n action: 'changeModule',\n module: GuardModuleType.IDENTITY_BINDING_ASK,\n },\n 1642: {\n action: 'changeModule',\n module: GuardModuleType.LOGIN_COMPLETE_INFO,\n },\n // 1643: {},\n 408: {\n action: 'message',\n },\n}\n","import { Avatar, message } from 'antd'\nimport { Protocol } from 'authing-js-sdk'\nimport qs from 'qs'\nimport React, { useCallback } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { getGuardWindow } from '../../../Guard/core/useAppendConfig'\nimport { GuardButton } from '../../../GuardButton'\nimport { IconFont } from '../../../IconFont'\nimport version from '../../../version/version'\nimport { isSpecialBrowser, popupCenter } from '../../../_utils'\nimport { useGuardTenantId } from '../../../_utils/context'\nimport { SocialConnectionEvent } from '../../../_utils/hooks'\nimport { i18n } from '../../../_utils/locales'\n\nconst baseLoginPathMapping: Record<Protocol, string | null> = {\n [Protocol.OIDC]: '/connections/oidc/init',\n [Protocol.SAML]: '/connections/saml/init',\n [Protocol.CAS]: '/connections/cas/init',\n [Protocol.OAUTH]: '/connections/oauth2/init',\n [Protocol.AZURE_AD]: '/connections/azure-ad/init',\n}\n\nconst loginUrlFieldMapping: Record<Protocol, string> = {\n [Protocol.OIDC]: 'oidcConnectionLoginUrl',\n [Protocol.SAML]: 'samlRequest',\n [Protocol.CAS]: 'casConnectionLoginUrl',\n [Protocol.OAUTH]: 'authUrl',\n [Protocol.AZURE_AD]: 'authorizationUrl',\n}\n\nexport const IdpButton = (props: any) => {\n // TODO: 能不能加个类型\n const { i, appId, appHost, isHost } = props\n\n const { t } = useTranslation()\n const tenantId = useGuardTenantId()\n\n const renderBtn = useCallback(() => {\n const query: Record<string, any> = {\n from_guard: '1',\n app_id: appId,\n guard_version: `Guard@${version}`,\n ...(tenantId && { tenant_id: tenantId }),\n }\n\n if (isHost) {\n delete query.from_guard\n query.from_hosted_guard = '1'\n\n if (isSpecialBrowser()) {\n query.redirected = '1'\n\n const guardWindow = getGuardWindow()\n if (guardWindow) {\n // 如果 isHost 是 true,则从 url 获取 finish_login_url 作为 social.authorize 方法的 targetUrl 参数\n query.redirect_url = qs.parse(guardWindow.location.search)?.[\n 'finish_login_url'\n ]\n }\n }\n }\n\n if (i?.provider) {\n // 社交身份源\n const iconType = `authing-${i.provider.replace(/:/g, '-')}`\n\n const onLogin = () => {\n if (i.action === SocialConnectionEvent.Message) {\n message.error(\n t('login.socialConnectionMessage', {\n provider:\n i.displayName ??\n (i18n.language === 'zh-CN' ? i.name : i.name_en) ??\n i.provider,\n })\n )\n } else if (i.action === SocialConnectionEvent.Auth) {\n const initUrl = `${appHost}/connections/social/${\n i.identifier\n }?${qs.stringify(query)}`\n if (query.redirected) {\n window.location.replace(initUrl)\n } else {\n popupCenter(initUrl)\n }\n }\n }\n\n return (\n <GuardButton\n key={i.identifier}\n className=\"g2-guard-third-login-btn\"\n block\n size=\"large\"\n icon={\n <IconFont\n type={`${iconType}-fill`}\n style={{ fontSize: 20, marginRight: 8 }}\n />\n }\n onClick={onLogin}\n >\n {t('login.loginBy', {\n name: i.displayName,\n })}\n </GuardButton>\n )\n } else {\n let initUrl: string\n\n if (isHost) {\n // 托管登录页,直接写死登录 URL\n query.identifier = i.identifier\n\n const basePath = baseLoginPathMapping[i.protocol as Protocol]\n if (!basePath) {\n return null\n }\n\n initUrl = `${appHost}${basePath}?${qs.stringify(query)}`\n } else {\n const field = loginUrlFieldMapping[i.protocol as Protocol]\n if (!field) {\n return null\n }\n\n // 嵌入式组件,从配置字段获取登录 URL\n initUrl = i.config[field]\n }\n\n return (\n <GuardButton\n key={i.identifier}\n className=\"g2-guard-third-login-btn\"\n block\n size=\"large\"\n icon={<Avatar size={20} src={i.logo} style={{ marginRight: 8 }} />}\n onClick={() => {\n if (query.redirected) {\n window.location.replace(initUrl)\n } else {\n popupCenter(initUrl)\n }\n }}\n >\n {t('login.loginBy', {\n name: i.displayName,\n })}\n </GuardButton>\n )\n }\n }, [appId, i, t, isHost, appHost, tenantId])\n return renderBtn()\n}\n","import { message, Space, Tooltip } from 'antd'\nimport { Lang } from 'authing-js-sdk/build/main/types'\nimport React, { useEffect } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { i18n } from '../../_utils/locales'\nimport { isSpecialBrowser, popupCenter } from '../../_utils'\nimport querystring from 'query-string'\nimport { ApplicationConfig, SocialConnectionItem } from '../../AuthingGuard/api'\nimport { IconFont } from '../../IconFont'\nimport './style.less'\nimport { useMediaSize, SocialConnectionEvent } from '../../_utils/hooks'\nimport { useGuardPublicConfig, useGuardTenantId } from '../../_utils/context'\nimport { IdpButton } from './IdpButton'\nimport { usePostMessage } from './postMessage'\nimport { CodeAction } from '../../_utils/responseManagement/interface'\nimport version from '../../version/version'\nimport { GuardLocalConfig } from '../../Guard'\nimport { getGuardWindow } from '../../Guard/core/useAppendConfig'\nimport { GuardButton } from '../../GuardButton'\n\nexport interface SocialLoginProps {\n appId: string\n config: GuardLocalConfig\n // onLogin: any\n onLoginFailed: any\n onLoginSuccess: any\n enterpriseConnectionObjs: ApplicationConfig['identityProviders']\n socialConnectionObjs: SocialConnectionItem[]\n}\n\nexport const SocialLogin: React.FC<SocialLoginProps> = ({\n appId,\n config,\n onLoginFailed,\n onLoginSuccess,\n enterpriseConnectionObjs,\n socialConnectionObjs,\n}) => {\n const noLoginMethods = !config?.loginMethods?.length\n\n const publicConfig = useGuardPublicConfig()\n\n const userPoolId = publicConfig?.userPoolId\n\n const { t } = useTranslation()\n\n const { isPhoneMedia } = useMediaSize()\n\n const onMessage = usePostMessage()\n\n const tenantId = useGuardTenantId()\n\n useEffect(() => {\n const onPostMessage = (evt: MessageEvent) => {\n const res = onMessage(evt)\n\n if (!res) return\n\n const { code, data, onGuardHandling } = res\n if (code === 200) {\n onLoginSuccess(data)\n } else {\n const handMode = onGuardHandling?.()\n // 向上层抛出错误\n handMode === CodeAction.RENDER_MESSAGE && onLoginFailed(code, data)\n }\n }\n\n const guardWindow = getGuardWindow()\n\n guardWindow?.addEventListener('message', onPostMessage)\n return () => {\n guardWindow?.removeEventListener('message', onPostMessage)\n }\n }, [onLoginFailed, onLoginSuccess, onMessage])\n\n const idpButtons = enterpriseConnectionObjs.map((i: any) => {\n return (\n <IdpButton\n key={i.identifier}\n i={i}\n appId={appId}\n appHost={config?.host}\n userPoolId={userPoolId}\n isHost={config?.isHost}\n />\n )\n })\n\n const socialLoginButtons = socialConnectionObjs.map((item: any) => {\n let iconType = `authing-${item.provider.replace(/:/g, '-')}`\n\n const query: Record<string, any> = {\n from_guard: '1',\n app_id: appId,\n guard_version: `Guard@${version}`,\n }\n\n if (tenantId) {\n query.tenant_id = tenantId\n }\n\n if (config?.isHost) {\n query.from_hosted_guard = '1'\n\n if (isSpecialBrowser()) {\n query.redirected = '1'\n\n const guardWindow = getGuardWindow()\n if (guardWindow) {\n // 如果 isHost 是 true,则从 url 获取 finish_login_url 作为 social.authorize 方法的 targetUrl 参数\n query.redirect_url = querystring.parse(guardWindow.location.search)?.[\n 'finish_login_url'\n ]\n }\n }\n }\n\n const onLogin = () => {\n if (item.action === SocialConnectionEvent.Message) {\n message.error(\n t('login.socialConnectionMessage', {\n provider:\n item.displayName ??\n (i18n.language === 'zh-CN' ? item.name : item.name_en) ??\n item.provider,\n })\n )\n } else if (item.action === SocialConnectionEvent.Auth) {\n const initUrl = `${config.host}/connections/social/${\n item.identifier\n }?${querystring.stringify(query)}`\n\n if (query.redirected) {\n window.location.replace(initUrl)\n } else {\n popupCenter(initUrl)\n }\n }\n }\n\n const shape = config.socialConnectionsBtnShape\n if (shape === 'button') {\n return (\n <GuardButton\n key={item.id}\n block\n size=\"large\"\n className=\"g2-guard-third-login-btn\"\n icon={\n <IconFont\n type={`${iconType}-fill`}\n style={{ fontSize: 20, marginRight: 8 }}\n />\n }\n onClick={onLogin}\n style={{\n marginBottom: 8,\n }}\n >\n {item.displayName ??\n (i18n.language === 'zh-CN' ? item.name : item.name_en) ??\n item.provider}\n </GuardButton>\n )\n } else if (shape === 'icon') {\n return isPhoneMedia ? (\n <GuardButton className=\"g2-social-login-item\" onClick={onLogin}>\n <IconFont type={`${iconType}-fill`} />\n </GuardButton>\n ) : (\n <Tooltip\n key={item.id}\n title={item.tooltip?.[i18n.language as Lang] || item.name}\n trigger={['hover', 'click', 'contextMenu']}\n >\n <GuardButton className=\"g2-social-login-item\" onClick={onLogin}>\n <IconFont type={`${iconType}-fill`} />\n </GuardButton>\n </Tooltip>\n )\n } else {\n return noLoginMethods ? (\n <GuardButton\n key={item.id}\n block\n size=\"large\"\n className=\"g2-guard-third-login-btn\"\n icon={\n <IconFont\n type={`${iconType}-fill`}\n style={{ fontSize: 20, marginRight: 8 }}\n />\n }\n onClick={onLogin}\n >\n {item.displayName ??\n (i18n.language === 'zh-CN' ? item.name : item.name_en) ??\n item.provider}\n </GuardButton>\n ) : isPhoneMedia ? (\n <GuardButton\n className=\"g2-social-login-item\"\n onClick={onLogin}\n key={item.id}\n >\n <IconFont type={`${iconType}-fill`} />\n </GuardButton>\n ) : (\n <Tooltip\n overlayStyle={{ fontFamily: 'sans-serif' }}\n key={item.id}\n title={\n item.displayName ||\n item.tooltip?.[i18n.language as Lang] ||\n item.name\n }\n trigger={['hover', 'click', 'contextMenu']}\n >\n <GuardButton className=\"g2-social-login-item\" onClick={onLogin}>\n <IconFont type={`${iconType}-fill`} />\n </GuardButton>\n </Tooltip>\n )\n }\n })\n const idp = enterpriseConnectionObjs.length ? (\n <>\n {!noLoginMethods && (\n <div className=\"g2-social-login-title\">\n {i18n.t('login.otherLoginWay')}\n </div>\n )}\n <div className=\"g2-social-login-list\">{idpButtons}</div>\n </>\n ) : null\n\n const socialLogin =\n socialLoginButtons.length > 0 && noLoginMethods ? (\n <Space\n size={noLoginMethods ? 0 : 12}\n className=\"g2-guard-full-width-space no-login-methods\"\n direction=\"vertical\"\n >\n {socialLoginButtons}\n </Space>\n ) : (\n socialLoginButtons.length > 0 && (\n <>\n <div className=\"g2-social-login-title\">\n {t('login.thridAccLogin')}\n </div>\n <div className=\"g2-social-login-list\">{socialLoginButtons}</div>\n </>\n )\n )\n\n return (\n <>\n {!noLoginMethods && (\n <div\n style={{\n flex: 1,\n minHeight: 32,\n }}\n />\n )}\n <Space\n size={noLoginMethods ? 0 : 12}\n direction=\"vertical\"\n className=\"g2-guard-full-width-space\"\n >\n {!publicConfig?.ssoPageComponentDisplay.idpBtns || idp}\n {!publicConfig?.ssoPageComponentDisplay.socialLoginBtns || socialLogin}\n </Space>\n </>\n )\n}\n","import { useGuardHttpClient } from '../../_utils/context'\nimport { AuthingResponse } from '../../_utils/http'\n\n// 处理所有使用 postMessage 方式的登录\nexport const usePostMessage = () => {\n // 借用一下 GuardHttpClient 的方法\n const { responseIntercept } = useGuardHttpClient()\n\n const onMessage = (evt: MessageEvent) => {\n const { message, data, event, code } = evt.data\n\n const { source } = event || {}\n // 社会化登录是用 authing-js-sdk 实现的,不用再在这里回调了\n // if (source === 'authing' && eventType === 'socialLogin') {\n // return\n // }\n\n if (source !== 'authing') {\n return\n }\n\n // 如果直接为 200 代表成功了\n if (code === 200) {\n return { code, data, onGuardHandling: undefined }\n }\n\n // TODO 完整的登陆信息 在 message 中 以 Json 的形式返回 待优化\n let parsedMessage: any\n try {\n parsedMessage = JSON.parse(message)\n } catch (error) {\n console.error('Json parse error in postMessage')\n console.error(`message: ${message}, code: ${code}`)\n return\n }\n\n const {\n code: authingCode,\n statusCode,\n apiCode,\n message: authingMessage,\n data: authingResData,\n flowHandle,\n } = parsedMessage\n\n const res = responseIntercept({\n statusCode,\n apiCode,\n data: authingResData,\n message: authingMessage,\n code: authingCode,\n flowHandle,\n })\n\n return res\n }\n\n return onMessage\n}\n\nexport const useErrorHandling = () => {\n // 借用一下 GuardHttpClient 的方法\n const { responseIntercept } = useGuardHttpClient()\n\n const errorHandling = (res: AuthingResponse) => {\n const { message } = res\n\n const parsedMsg = JSON.parse(message!)\n\n const {\n code: authingCode,\n statusCode,\n apiCode,\n message: authingMessage,\n data: authingResData,\n } = parsedMsg\n\n const response = responseIntercept({\n statusCode,\n apiCode,\n data: authingResData,\n message: authingMessage,\n code: authingCode,\n })\n\n return response\n }\n\n return errorHandling\n}\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { IconFont } from '../IconFont'\nimport { useGuardPageConfig } from '../_utils/context'\nimport { changeLang } from '../_utils/locales'\n\nexport const ChangeLanguage = (props: any) => {\n const { i18n } = useTranslation()\n\n const guardPageConfig = useGuardPageConfig()\n\n if (\n props.langRange.length <= 1 ||\n !guardPageConfig?.global?.showChangeLanguage\n ) {\n return null\n }\n\n let switchText = 'English'\n if (i18n.language === 'en-US') {\n switchText = '简体中文'\n }\n return (\n <div className=\"g2-change-language-container\">\n <span\n className=\"g2-change-language-button\"\n onClick={() => {\n if (i18n.language === 'zh-CN') {\n props.onLangChange?.('en-US')\n changeLang('en-US')\n } else if (i18n.language === 'en-US') {\n props.onLangChange?.('zh-CN')\n changeLang('zh-CN')\n }\n }}\n >\n <IconFont\n style={{ fontSize: 16 }}\n type={\n i18n.language === 'zh-CN'\n ? 'authing-a-yingwen1'\n : 'authing-zhongwen'\n }\n />\n <span className=\"g2-change-language-text\">{switchText}</span>\n </span>\n </div>\n )\n}\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { Form } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport {\n fieldRequiredRule,\n getUserRegisterParams,\n validate,\n} from '../../../_utils'\nimport SubmitButton from '../../../SubmitButton'\nimport { IconFont } from '../../../IconFont'\nimport { Agreements } from '../../../Register/components/Agreements'\nimport { SceneType } from 'authing-js-sdk'\nimport { SendCodeByPhone } from '../../../SendCode/SendCodeByPhone'\nimport {\n useGuardHttpClient,\n useGuardInitData,\n useGuardPublicConfig,\n} from '../../../_utils/context'\nimport { SendCodeByEmail } from '../../../SendCode/SendCodeByEmail'\nimport { FormItemIdentify } from './FormItemIdentify'\nimport { InputIdentify } from './inputIdentify'\nimport './styles.less'\nimport { InputInternationPhone } from './InputInternationPhone'\nimport { parsePhone, useMediaSize } from '../../../_utils/hooks'\nimport { EmailScene, InputMethod } from '../../../Type'\nimport { CodeAction } from '../../../_utils/responseManagement/interface'\nimport { GuardLoginInitData } from '../../interface'\nimport { LoginMethods } from '../../../AuthingGuard/types'\n\nexport const LoginWithVerifyCode = (props: any) => {\n const config = useGuardPublicConfig()\n const {\n _firstItemInitialValue = '',\n specifyDefaultLoginMethod,\n _lockMethod,\n } = useGuardInitData<GuardLoginInitData>()\n const {\n agreements,\n methods,\n autoRegister,\n submitButText,\n onLoginFailed,\n onLoginSuccess,\n saveIdentify,\n } = props\n\n const verifyCodeLength = config?.verifyCodeLength ?? 4\n\n const { post } = useGuardHttpClient()\n\n const { isPhoneMedia } = useMediaSize()\n\n // 是否开启了国际化短信功能\n const isInternationSms = config?.internationalSmsConfig?.enabled || false\n\n const [acceptedAgreements, setAcceptedAgreements] = useState(false)\n\n const [validated, setValidated] = useState(false)\n\n const [identify, setIdentify] = useState('')\n\n const [currentMethod, setCurrentMethod] = useState<InputMethod>(\n specifyDefaultLoginMethod ? _lockMethod ?? methods[0] : methods[0]\n )\n // 是否仅开启国际化短信\n const [isOnlyInternationSms, setInternationSms] = useState(false)\n // 区号 默认\n const [areaCode, setAreaCode] = useState(\n config?.internationalSmsConfig?.defaultISOType || 'CN'\n )\n\n let [form] = Form.useForm()\n\n let submitButtonRef = useRef<any>(null)\n const { t } = useTranslation()\n\n const SendCode = useCallback(\n (props: any) => {\n if (isOnlyInternationSms) {\n return (\n <SendCodeByPhone\n {...props}\n form={form}\n fieldName=\"identify\"\n className=\"authing-g2-input g2-send-code-input\"\n autoComplete=\"off\"\n size=\"large\"\n placeholder={t('common.inputFourVerifyCode', {\n length: verifyCodeLength,\n })}\n areaCode={areaCode}\n prefix={\n <IconFont\n type=\"authing-a-shield-check-line1\"\n style={{ color: '#878A95' }}\n />\n }\n isInternationSms={isInternationSms}\n scene={SceneType.SCENE_TYPE_LOGIN}\n maxLength={verifyCodeLength}\n onSendCodeBefore={async () => {\n await form.validateFields(['identify'])\n }}\n />\n )\n }\n\n return (\n <>\n {currentMethod === InputMethod.PhoneCode && (\n <SendCodeByPhone\n {...props}\n isInternationSms={isInternationSms}\n className=\"authing-g2-input g2-send-code-input\"\n autoComplete=\"off\"\n size=\"large\"\n placeholder={t('common.inputFourVerifyCode', {\n length: verifyCodeLength,\n })}\n areaCode={areaCode}\n prefix={\n <IconFont\n type=\"authing-a-shield-check-line1\"\n style={{ color: '#878A95' }}\n />\n }\n scene={SceneType.SCENE_TYPE_LOGIN}\n maxLength={verifyCodeLength}\n form={form}\n fieldName={'identify'}\n data={identify}\n onSendCodeBefore={async () => {\n await form.validateFields(['identify'])\n }}\n />\n )}\n {currentMethod === InputMethod.EmailCode && (\n <SendCodeByEmail\n {...props}\n className=\"authing-g2-input g2-send-code-input\"\n autoComplete=\"off\"\n size=\"large\"\n placeholder={t('common.inputFourVerifyCode', {\n length: verifyCodeLength,\n })}\n prefix={\n <IconFont\n type=\"authing-a-shield-check-line1\"\n style={{ color: '#878A95' }}\n />\n }\n form={form}\n fieldName={'identify'}\n scene={EmailScene.LOGIN_VERIFY_CODE}\n maxLength={verifyCodeLength}\n data={identify}\n onSendCodeBefore={async () => {\n await form.validateFields(['identify'])\n }}\n />\n )}\n </>\n )\n },\n [\n areaCode,\n currentMethod,\n form,\n identify,\n isInternationSms,\n isOnlyInternationSms,\n t,\n verifyCodeLength,\n ]\n )\n\n useEffect(() => {\n // 开启国际化配置且登录方式为手机号码时\n if (\n methods.length === 1 &&\n methods[0] === 'phone-code' &&\n config &&\n config.internationalSmsConfig?.enabled\n ) {\n setInternationSms(true)\n }\n }, [config, methods])\n\n const loginByPhoneCode = async (values: any) => {\n const reqContent: any = {\n phone: values.phoneNumber,\n code: values.code,\n customData: getUserRegisterParams(),\n autoRegister: autoRegister,\n withCustomData: true,\n }\n\n if (config && config.internationalSmsConfig?.enabled)\n reqContent.phoneCountryCode = values.phoneCountryCode\n\n const { code, data, onGuardHandling } = await post(\n '/api/v2/login/phone-code',\n reqContent\n )\n\n submitButtonRef.current?.onSpin(false)\n\n if (code === 200) {\n // props.onLogin(200, data)\n onLoginSuccess(data)\n } else {\n const handMode = onGuardHandling?.()\n // 向上层抛出错误\n handMode === CodeAction.RENDER_MESSAGE && onLoginFailed(code, data)\n }\n }\n\n const loginByEmailCode = async (values: any) => {\n const reqContent = {\n email: values.identify,\n code: values.code,\n customData: getUserRegisterParams(),\n autoRegister: autoRegister,\n withCustomData: true,\n }\n const { code, data, onGuardHandling } = await post(\n '/api/v2/login/email-code',\n reqContent\n )\n\n submitButtonRef.current?.onSpin(false)\n\n if (code === 200) {\n // props.onLogin(200, data)\n onLoginSuccess(data)\n } else {\n const handMode = onGuardHandling?.()\n // 向上层抛出错误\n handMode === CodeAction.RENDER_MESSAGE && onLoginFailed(code, data)\n }\n }\n\n const onFinish = async (values: any) => {\n setValidated(true)\n if (agreements?.length && !acceptedAgreements) {\n // message.error(t('common.loginProtocolTips'))\n submitButtonRef.current.onError()\n return\n }\n // 解析手机号码 ==> 输出 phoenNumber 和 phoneCountryCode\n const { phoneNumber, countryCode: phoneCountryCode } = parsePhone(\n isInternationSms,\n values.identify,\n areaCode\n )\n // onBeforeLogin\n submitButtonRef.current?.onSpin(true)\n\n let loginInfo = {\n type: currentMethod,\n data: {\n identity: phoneNumber,\n code: values.code,\n phoneCountryCode,\n },\n }\n\n let context = await props.onBeforeLogin?.(loginInfo)\n\n if (!context && !!props.onBeforeLogin) {\n submitButtonRef.current?.onSpin(false)\n return\n }\n // 身份源绑定\n if (!!props.onLoginRequest) {\n const res = await props.onLoginRequest?.(loginInfo)\n const { code, apiCode, data, onGuardHandling } = res\n\n submitButtonRef.current?.onSpin(false)\n\n if (code === 200) {\n onLoginSuccess(data)\n } else {\n const handMode = onGuardHandling?.()\n // 向上层抛出错误 执行绑定失败钩子\n handMode === CodeAction.RENDER_MESSAGE &&\n onLoginFailed(apiCode ?? code, data)\n }\n return\n }\n\n if (currentMethod === 'phone-code') {\n await loginByPhoneCode({ ...values, phoneNumber, phoneCountryCode })\n } else {\n await loginByEmailCode(values)\n }\n }\n\n const submitText = useMemo(() => {\n if (submitButText) return submitButText\n\n return autoRegister\n ? `${t('common.login')} / ${t('common.register')}`\n : t('common.login')\n }, [autoRegister, submitButText, t])\n // 为了 refresh input\n const AreaCodePhoneAccount = useCallback(\n (props) => {\n return (\n <InputInternationPhone\n {...props}\n className=\"authing-g2-input\"\n size=\"large\"\n areaCode={areaCode}\n onAreaCodeChange={(value: string) => {\n setAreaCode(value)\n form.getFieldValue(['identify']) &&\n form.validateFields(['identify'])\n }}\n />\n )\n },\n [areaCode, form]\n )\n\n const formValuesChange = (changedValues: Record<string, any>) => {\n if (changedValues?.identify && saveIdentify) {\n saveIdentify(LoginMethods.PhoneCode, changedValues?.identify)\n }\n }\n\n return (\n <div className=\"authing-g2-login-phone-code\">\n <Form\n name=\"phoneCode\"\n form={form}\n onFinish={onFinish}\n onFinishFailed={() => submitButtonRef.current.onError()}\n autoComplete=\"off\"\n onValuesChange={formValuesChange}\n >\n <FormItemIdentify\n initialValue={\n specifyDefaultLoginMethod === LoginMethods.PhoneCode\n ? _firstItemInitialValue\n : ''\n }\n name=\"identify\"\n className={\n isOnlyInternationSms\n ? 'authing-g2-input-form remove-padding'\n : 'authing-g2-input-form'\n }\n methods={methods}\n checkExist={!autoRegister}\n currentMethod={currentMethod}\n areaCode={areaCode}\n >\n {isOnlyInternationSms ? (\n <AreaCodePhoneAccount autoFocus={!isPhoneMedia} />\n ) : (\n <InputIdentify\n className=\"authing-g2-input\"\n size=\"large\"\n autoFocus={!isPhoneMedia}\n value={identify}\n methods={methods}\n onChange={(e) => {\n let v = e.target.value\n setIdentify(v)\n if (methods.length === 1) return\n if (validate('email', v)) {\n setCurrentMethod(InputMethod.EmailCode)\n } else {\n // 放开手机号校验 方便同时开启邮箱和短信国际化手机号通过\n setCurrentMethod(InputMethod.PhoneCode)\n }\n }}\n prefix={\n <IconFont\n type=\"authing-a-user-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n )}\n </FormItemIdentify>\n\n <Form.Item\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form\"\n name=\"code\"\n rules={[...fieldRequiredRule(t('common.captchaCode'))]}\n >\n <SendCode />\n </Form.Item>\n {Boolean(agreements?.length) && (\n <Agreements\n onChange={setAcceptedAgreements}\n agreements={agreements}\n showError={validated}\n />\n )}\n <Form.Item>\n <SubmitButton\n text={submitText}\n className=\"password\"\n ref={submitButtonRef}\n />\n </Form.Item>\n </Form>\n </div>\n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { message } from 'antd'\nimport { ShieldSpin } from '../../ShieldSpin'\nimport { useGuardAuthClient } from '../../Guard/authClient'\nimport { useGuardFinallyConfig, useGuardHttpClient } from '../../_utils/context'\nimport { getGuardWindow } from '../../Guard/core/useAppendConfig'\n\ninterface LoginWithLandrayQrcodeProps {\n // onLogin: any\n onLoginSuccess: any\n canLoop: boolean\n qrCodeScanOptions: any\n}\n\nexport const LoginWithLandrayQrcode = (props: LoginWithLandrayQrcodeProps) => {\n const timerRef = useRef<any>()\n const client = useGuardAuthClient()\n const [loading, setLoading] = useState(true)\n const appQrcodeClient = client.landrayqrcode\n const { responseIntercept } = useGuardHttpClient()\n const config = useGuardFinallyConfig()\n const domId = `authingGuardLandrayQrcode-${props.qrCodeScanOptions.extIdpConnId}`\n\n useEffect(() => {\n const guardWindow = getGuardWindow()\n\n if (!guardWindow) return\n\n if (!!config._qrCodeScanOptions) return\n\n const document = guardWindow.document\n\n if (!props.canLoop) {\n return () => clearInterval(timerRef.current)\n }\n\n setLoading(true)\n\n appQrcodeClient.startScanning(domId, {\n currentDocument: document,\n autoExchangeUserInfo: true,\n ...props.qrCodeScanOptions,\n onCodeShow() {\n setLoading(false)\n },\n onStart(timer: any) {\n timerRef.current = timer\n },\n onSuccess(user: any) {\n // props.onLogin(200, user)\n clearInterval(timerRef.current)\n props.onLoginSuccess(user)\n },\n onError: (ms: any) => {\n if (ms) {\n message.error(ms)\n }\n },\n onCodeLoadFailed: ({ message: mes }: any) => {\n message.error(JSON.parse(mes).message)\n setLoading(false)\n },\n onRetry: () => {\n setLoading(true)\n },\n onAuthFlow: (scannedResult: any) => {\n clearInterval(timerRef.current)\n const { onGuardHandling } = responseIntercept(scannedResult)\n onGuardHandling?.()\n },\n })\n return () => clearInterval(timerRef.current)\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [appQrcodeClient, props.canLoop])\n\n return (\n <div className=\"authing-g2-login-app-qrcode\">\n {config._qrCodeScanOptions ? (\n <div className=\"qrcode\">\n <img src={config._qrCodeScanOptions.wechatMiniQrcode.qrcode} alt=\"\" />\n <span>{props.qrCodeScanOptions.tips.title}</span>\n </div>\n ) : (\n <>\n {loading && <ShieldSpin />}\n <div id={domId}></div>\n </>\n )}\n </div>\n )\n}\n","import React, {\n useEffect,\n useLayoutEffect,\n useMemo,\n useState,\n useRef,\n} from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { message, Popover, Tabs, Tooltip } from 'antd'\nimport intersection from 'lodash/intersection'\n\nimport { LoginWithPassword } from './core/withPassword/index'\nimport { LoginWithLDAP } from './core/withLDAP'\nimport { LoginWithAD } from './core/withAD'\nimport { LoginWithAppQrcode } from './core/withAppQrcode'\nimport { LoginWithWechatMiniQrcode } from './core/withWechatMiniQrcode'\nimport { LoginWithWechatmpQrcode } from './core/withWechatmpQrcode'\nimport { codeMap } from './codemap'\nimport { SocialLogin } from './socialLogin'\n\nimport { GuardModuleType } from '../Guard/module'\nimport { LoginMethods } from '../AuthingGuard/types'\nimport { IconFont } from '../IconFont'\nimport { ChangeLanguage } from '../ChangeLanguage'\nimport { i18n } from '../_utils/locales'\n\nimport './styles.less'\nimport {\n useGuardAppId,\n useGuardEvents,\n useGuardFinallyConfig,\n useGuardInitData,\n useGuardModule,\n useGuardPublicConfig,\n} from '../_utils/context'\nimport { isWeChatBrowser, getPasswordIdentify } from '../_utils'\nimport { LoginWithVerifyCode } from './core/withVerifyCode'\nimport { VerifyLoginMethods } from '../AuthingGuard/api'\nimport { useMediaSize, useMethod } from '../_utils/hooks'\nimport { getGuardDocument } from '../_utils/guardDocument'\nimport { useGuardAuthClient } from '../Guard/authClient'\nimport { GuardLoginInitData } from './interface'\nimport { GuardButton } from '../GuardButton'\nimport { LoginWithLandrayQrcode } from './core/withLandrayQrcode'\n\nconst inputWays = [\n LoginMethods.Password,\n LoginMethods.PhoneCode,\n LoginMethods.AD,\n LoginMethods.LDAP,\n]\nconst qrcodeWays = [\n LoginMethods.AppQr,\n LoginMethods.WxMinQr,\n LoginMethods.WechatMpQrcode,\n LoginMethods.Landray,\n]\n\nconst useMethods = (config: any) => {\n let dlm = config?.defaultLoginMethod\n let propsMethods = config?.loginMethods\n if (!propsMethods?.includes(dlm)) {\n dlm = propsMethods?.[0]\n }\n let renderInputWay = intersection(propsMethods, inputWays).length > 0\n let renderQrcodeWay = intersection(propsMethods, qrcodeWays).length > 0\n return [dlm, renderInputWay, renderQrcodeWay]\n}\n\nconst useDisables = (data: any) => {\n let { disableResetPwd, disableRegister } = data.config\n let { loginWay, autoRegister } = data\n\n if (loginWay === LoginMethods.PhoneCode) {\n disableResetPwd = true\n }\n if (loginWay === LoginMethods.LDAP) {\n disableResetPwd = true\n disableRegister = true\n }\n if (loginWay === LoginMethods.AD) {\n // TODO P0 需求暂时先取消掉\n // disableResetPwd = true\n disableRegister = true\n }\n if (autoRegister === true) {\n disableRegister = true\n }\n return { disableResetPwd, disableRegister }\n}\n\nconst useSwitchStates = (loginWay: LoginMethods) => {\n let switchText = i18n.t('login.scanLogin')\n if (qrcodeWays.includes(loginWay)) {\n switchText = i18n.t('login.moreWays')\n }\n let inputNone = !inputWays.includes(loginWay) ? 'none' : ''\n let qrcodeNone = !qrcodeWays.includes(loginWay) ? 'none' : ''\n\n return { switchText, inputNone, qrcodeNone }\n}\nexport const GuardLoginView = () => {\n // const { config } = props\n const { specifyDefaultLoginMethod } = useGuardInitData<GuardLoginInitData>()\n\n const config = useGuardFinallyConfig()\n\n const appId = useGuardAppId()\n\n const { changeModule } = useGuardModule()\n\n const events = useGuardEvents()\n\n const publicConfig = useGuardPublicConfig()\n\n let [defaultMethod, renderInputWay, renderQrcodeWay] = useMethods(config)\n\n const agreementEnabled = config?.agreementEnabled\n\n const { t } = useTranslation()\n\n const [loginWay, setLoginWay] = useState(\n specifyDefaultLoginMethod || defaultMethod\n )\n\n const [canLoop, setCanLoop] = useState(false) // 允许轮询\n\n const client = useGuardAuthClient()\n\n const qrcodeTabsSettings = publicConfig?.qrcodeTabsSettings\n\n const [errorNumber, setErrorNumber] = useState(0)\n\n const [accountLock, setAccountLock] = useState(false)\n\n const identifyRef = useRef<Record<string, string>>({} as any)\n\n let publicKey = config?.publicKey!\n\n // let autoRegister = props.config?.autoRegister\n let ms = config?.loginMethods\n\n const firstInputWay = inputWays.filter((way) => ms?.includes(way))[0]\n\n const firstQRcodeWay = qrcodeWays.filter((way) => ms?.includes(way))[0]\n\n let { disableResetPwd, disableRegister } = useDisables({\n config: config,\n loginWay,\n autoRegister: config?.autoRegister,\n })\n\n const verifyCodeLogin = useMemo(() => {\n const methods = publicConfig?.verifyCodeTabConfig?.enabledLoginMethods ?? [\n 'phone-code',\n ]\n\n if (methods.length === 1 && methods[0] === 'phone-code') {\n return t('common.phoneVerifyCode')\n } else if (methods.length === 1 && methods[0] === 'email-code') {\n return t('common.emailVerifyCode')\n }\n\n return t('common.verifyCodeLogin')\n }, [publicConfig, t])\n\n const hiddenTab = useMemo(() => {\n const scanLogins = ms\n ? ms.filter((method) => qrcodeWays.includes(method))\n : [] //取到扫码登录类型\n if (scanLogins.length > 1) {\n // 如果有两个以上的code 类型\n return false\n } else if (\n !scanLogins.includes(LoginMethods.AppQr) ||\n !scanLogins.includes(LoginMethods.Landray)\n ) {\n // 如果只有一个且那一个还不是 app 类型 或者 landray\n if (\n qrcodeTabsSettings &&\n (qrcodeTabsSettings?.[LoginMethods.WechatMpQrcode].length > 1 ||\n qrcodeTabsSettings?.[LoginMethods.WxMinQr].length > 1)\n ) {\n return false\n } else {\n return true\n }\n } else {\n return true\n }\n }, [ms, qrcodeTabsSettings])\n\n const defaultQrCodeWay = useMemo(() => {\n if (\n [LoginMethods.WechatMpQrcode, LoginMethods.WxMinQr].includes(\n defaultMethod\n )\n ) {\n const id = qrcodeTabsSettings?.[defaultMethod as LoginMethods]?.find(\n (i: { id: string; title: string; isDefault?: boolean | undefined }) =>\n i.isDefault\n )?.id\n return defaultMethod + id\n } else {\n return defaultMethod\n }\n }, [defaultMethod, qrcodeTabsSettings])\n\n const onLoginSuccess = (data: any, message?: string) => {\n // data._message = message\n events?.onLogin?.(data, client)\n }\n\n // 保存用户输入的手机号、邮箱,在点击 问题反馈时带上\n const saveIdentify = (type: LoginMethods, identity: string) => {\n identifyRef.current = {\n ...identifyRef.current,\n [type]: getPasswordIdentify(identity),\n }\n }\n\n const onLoginFailed = (code: number, data: any, message?: string) => {\n // TODO 与拦截器中 render-message 同步\n const action = codeMap[code]\n if (action?.action === 'message') {\n setErrorNumber(errorNumber + 1)\n }\n\n if (action?.action === 'accountLock') {\n setAccountLock(true)\n }\n\n events?.onLoginError?.({\n code,\n data,\n message,\n })\n }\n\n const onBeforeLogin = (loginInfo: any) => {\n if (events?.onBeforeLogin) {\n return events?.onBeforeLogin?.(loginInfo, client)\n }\n return () => console.log('Guard not onBeforeLogin hooks')\n }\n\n useEffect(() => {\n if (qrcodeWays.includes(loginWay)) {\n setCanLoop(true)\n } else {\n setCanLoop(false)\n }\n // 可以设定 = fasle 的时候关闭 qrcode 的几个定时器\n // 不关的话,第二次进入会更快,也没什么代价(只有轮询)\n }, [loginWay])\n\n let { switchText, inputNone, qrcodeNone } = useSwitchStates(loginWay)\n //availableAt 0或者null-注册时,1-登录时,2-注册和登录时 注册登录合并时应该登录注册协议全部显示\n const agreements = useMemo(\n () =>\n agreementEnabled\n ? config?.agreements?.filter(\n (agree) =>\n agree.lang === i18n.language &&\n (config?.autoRegister || !!agree?.availableAt)\n ) ?? []\n : [],\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [agreementEnabled, config?.autoRegister, config?.agreements, i18n.language]\n )\n\n const verifyLoginMethods = useMemo<VerifyLoginMethods[]>(\n () =>\n publicConfig?.verifyCodeTabConfig?.enabledLoginMethods ?? ['phone-code'],\n\n [publicConfig?.verifyCodeTabConfig?.enabledLoginMethods]\n )\n\n const [\n socialConnectionObjs,\n enterpriseConnectionObjs,\n isNoMethod,\n ] = useMethod({ config, publicConfig })\n\n const noLoginMethods = !config?.loginMethods?.length\n\n const { isPhoneMedia } = useMediaSize()\n\n // 渲染前执行\n useLayoutEffect(() => {\n if (noLoginMethods && !isPhoneMedia) {\n // 无表单登录方式,且不是手机端\n const document = getGuardDocument()\n // pc 下\n const containerDOM = document.getElementsByClassName(\n 'g2-view-container'\n )?.[0]\n\n if (containerDOM) {\n // @ts-ignore\n containerDOM.style['min-height'] = isNoMethod ? '456px' : '280px'\n containerDOM.classList.add('no-login-methods-view')\n return () => {\n // @ts-ignore\n containerDOM.style['min-height'] = '610px'\n containerDOM.classList.remove('no-login-methods-view')\n }\n }\n }\n }, [isNoMethod, isPhoneMedia, noLoginMethods])\n\n useEffect(() => {\n const document = getGuardDocument()\n\n const containerDOM = document.getElementsByClassName('g2-view-header')?.[0]\n const innerContainer = document.querySelector(\n '.g2-view-login>.g2-view-container-inner'\n )\n if (isPhoneMedia && noLoginMethods) {\n if (containerDOM) {\n containerDOM.classList.add('g2-view-header-mobile')\n }\n if (innerContainer) {\n innerContainer.classList.add('g2-view-login-mobile-inner')\n }\n } else {\n containerDOM?.classList.remove('g2-view-header-mobile')\n innerContainer?.classList.remove('g2-view-login-mobile-inner')\n }\n return () => {\n containerDOM?.classList.remove('g2-view-header-mobile')\n innerContainer?.classList.remove('g2-view-login-mobile-inner')\n }\n }, [isPhoneMedia, noLoginMethods])\n\n return (\n <div className=\"g2-view-container g2-view-login\">\n <div className=\"g2-view-container-inner\">\n {isNoMethod ? (\n <>\n <div className=\"g2-view-header\">\n <img src={config?.logo} alt=\"\" className=\"icon\" />\n <div className=\"title\">{config?.title}</div>\n {!!publicConfig?.welcomeMessage && (\n <div className=\"title-description\">\n {publicConfig?.welcomeMessage[i18n.language]}\n </div>\n )}\n </div>\n <div className=\"no-login-methods-view\">\n <IconFont\n type=\"authing-bianzu\"\n style={{ width: 178, height: 120 }}\n />\n <span className=\"no-login-methods-desc\">\n {t('login.noLoginMethodsDesc')}\n </span>\n </div>\n </>\n ) : (\n <>\n {/* 两种方式都需要渲染的时候,才出现切换按钮 */}\n {renderInputWay && renderQrcodeWay && (\n <div className=\"g2-qrcode-switch\">\n {/* <div className=\"switch-text\">{switchText}</div> */}\n <Popover\n placement=\"leftTop\"\n visible={true}\n content={switchText}\n overlayClassName=\"switch-text\"\n getPopupContainer={(node: any) => {\n if (node) {\n return node.parentElement\n }\n return document.body\n }}\n >\n <div\n className=\"switch-img\"\n onClick={() => {\n message.destroy()\n if (inputWays.includes(loginWay)) {\n setLoginWay(firstQRcodeWay)\n } else if (qrcodeWays.includes(loginWay)) {\n setLoginWay(firstInputWay)\n }\n }}\n >\n <div className=\"imgae-mask\" />\n <IconFont\n type=\"authing-a-erweima22\"\n className={`qrcode-switch-image ${inputNone}`}\n />\n <IconFont\n type=\"authing-diannao\"\n className={`qrcode-switch-image ${qrcodeNone}`}\n />\n </div>\n </Popover>\n </div>\n )}\n\n <div className=\"g2-view-header\">\n <img src={config?.logo} alt=\"\" className=\"icon\" />\n <div className=\"title\">{config?.title}</div>\n {!!publicConfig?.welcomeMessage && (\n <div className=\"title-description\">\n {publicConfig?.welcomeMessage[i18n.language]}\n </div>\n )}\n </div>\n\n {renderInputWay && (\n <div className={inputNone}>\n <div className={`g2-view-tabs`}>\n <Tabs\n destroyInactiveTabPane={true}\n onChange={(k: any) => {\n setLoginWay(k)\n message.destroy()\n events?.onLoginTabChange?.(k)\n }}\n activeKey={loginWay}\n >\n {ms?.includes(LoginMethods.Password) && (\n <Tabs.TabPane\n key={LoginMethods.Password}\n tab={t('login.pwdLogin')}\n >\n <LoginWithPassword\n loginWay={loginWay}\n publicKey={publicKey}\n autoRegister={config?.autoRegister}\n host={config?.host}\n // onLogin={onLogin}\n onLoginSuccess={onLoginSuccess}\n onLoginFailed={onLoginFailed}\n onBeforeLogin={onBeforeLogin}\n saveIdentify={saveIdentify}\n passwordLoginMethods={\n config?.passwordLoginMethods ?? []\n }\n agreements={agreements}\n />\n </Tabs.TabPane>\n )}\n {ms?.includes(LoginMethods.PhoneCode) && (\n <Tabs.TabPane\n key={LoginMethods.PhoneCode}\n tab={verifyCodeLogin}\n >\n <LoginWithVerifyCode\n verifyCodeLength={publicConfig?.verifyCodeLength}\n autoRegister={config?.autoRegister}\n onBeforeLogin={onBeforeLogin}\n // onLogin={onLogin}\n onLoginSuccess={onLoginSuccess}\n onLoginFailed={onLoginFailed}\n saveIdentify={saveIdentify}\n agreements={agreements}\n methods={verifyLoginMethods}\n />\n </Tabs.TabPane>\n )}\n {ms?.includes(LoginMethods.LDAP) && (\n <Tabs.TabPane\n key={LoginMethods.LDAP}\n tab={t('login.ldapLogin')}\n >\n <LoginWithLDAP\n publicKey={publicKey}\n autoRegister={config?.autoRegister}\n host={config?.host}\n // onLogin={onLogin}\n onLoginSuccess={onLoginSuccess}\n onLoginFailed={onLoginFailed}\n onBeforeLogin={onBeforeLogin}\n agreements={agreements}\n />\n </Tabs.TabPane>\n )}\n {ms?.includes(LoginMethods.AD) && (\n <Tabs.TabPane\n key={LoginMethods.AD}\n tab={t('login.adLogin')}\n >\n <LoginWithAD\n publicKey={publicKey}\n autoRegister={config?.autoRegister}\n // onLogin={onLogin}\n onLoginSuccess={onLoginSuccess}\n onLoginFailed={onLoginFailed}\n onBeforeLogin={onBeforeLogin}\n agreements={agreements}\n />\n </Tabs.TabPane>\n )}\n </Tabs>\n </div>\n <div className={`g2-tips-line`}>\n {!disableResetPwd && (\n <div>\n <GuardButton\n type=\"link\"\n className=\"link-like forget-password-link\"\n onClick={() =>\n changeModule?.(GuardModuleType.FORGET_PWD, {})\n }\n >\n {t('login.forgetPwd')}\n </GuardButton>\n {(errorNumber >= 2 || accountLock) && (\n <span style={{ margin: '0 4px', color: '#EAEBEE' }}>\n 丨\n </span>\n )}\n </div>\n )}\n {(errorNumber >= 2 || accountLock) && (\n <Tooltip title={t('common.feedback')}>\n <div\n className=\"touch-tip question-feedback\"\n onClick={() =>\n changeModule?.(GuardModuleType.ANY_QUESTIONS, {\n identify: identifyRef.current[loginWay],\n })\n }\n >\n <IconFont\n type={'authing-a-question-line1'}\n style={{ fontSize: 16 }}\n />\n </div>\n </Tooltip>\n )}\n\n {!disableRegister && (\n <span className=\"go-to-register\">\n {/* <span className=\"gray\">{t('common.noAccYet')}</span> */}\n <GuardButton\n type=\"link\"\n className=\"link-like register-link\"\n onClick={() =>\n changeModule?.(GuardModuleType.REGISTER, {})\n }\n >\n {t('common.registerImmediate')}\n </GuardButton>\n </span>\n )}\n </div>\n </div>\n )}\n {renderQrcodeWay && (\n <div\n className={`g2-view-tabs ${qrcodeNone} ${\n hiddenTab && 'hidden'\n }`}\n >\n <Tabs\n destroyInactiveTabPane={true}\n onChange={(k: any) => {\n message.destroy()\n events?.onLoginTabChange?.(k)\n }}\n defaultActiveKey={defaultQrCodeWay}\n >\n {ms?.includes(LoginMethods.WxMinQr) &&\n qrcodeTabsSettings?.[LoginMethods.WxMinQr].map(\n (item: any) => (\n <Tabs.TabPane\n key={LoginMethods.WxMinQr + item.id}\n tab={item.title ?? t('login.scanLogin')}\n >\n <LoginWithWechatMiniQrcode\n // onLogin={onLogin}\n onLoginSuccess={onLoginSuccess}\n canLoop={canLoop}\n qrCodeScanOptions={{\n ...config?.qrCodeScanOptions,\n extIdpConnId: item.id,\n tips: {\n title:\n i18n.language === 'zh-CN'\n ? '使用 微信 扫码登录'\n : `Use WeChat to scan and login`,\n expired: t('login.qrcodeExpired'),\n },\n }}\n />\n </Tabs.TabPane>\n )\n )}\n {ms?.includes(LoginMethods.AppQr) && (\n <Tabs.TabPane\n key={LoginMethods.AppQr}\n tab={t('login.appScanLogin')}\n >\n <LoginWithAppQrcode\n // onLogin={onLogin}\n onLoginSuccess={onLoginSuccess}\n canLoop={canLoop}\n qrCodeScanOptions={{\n ...config?.qrCodeScanOptions,\n tips: {\n title:\n i18n.language === 'zh-CN'\n ? '使用 移动端 APP 扫码登录'\n : `Use Mobile APP to scan and login`,\n expired: t('login.qrcodeExpired'),\n },\n }}\n />\n </Tabs.TabPane>\n )}\n {ms?.includes(LoginMethods.WechatMpQrcode) &&\n qrcodeTabsSettings?.[LoginMethods.WechatMpQrcode].map(\n (item) => (\n <Tabs.TabPane\n key={LoginMethods.WechatMpQrcode + item.id}\n tab={item.title ?? t('login.wechatmpQrcode')}\n >\n <LoginWithWechatmpQrcode\n // onLogin={onLogin}\n onLoginSuccess={onLoginSuccess}\n canLoop={canLoop}\n qrCodeScanOptions={{\n ...config?.qrCodeScanOptions,\n extIdpConnId: item.id,\n tips: {\n title:\n i18n.language === 'zh-CN'\n ? `${\n isWeChatBrowser()\n ? '长按二维码登录'\n : '使用 微信 扫码登录'\n }`\n : `${\n isWeChatBrowser()\n ? 'Long press the QR code to log in'\n : 'Use WeChat to scan and login'\n } `,\n expired: t('login.qrcodeExpired'),\n },\n }}\n />\n </Tabs.TabPane>\n )\n )}\n {ms?.includes(LoginMethods.Landray) &&\n qrcodeTabsSettings?.[LoginMethods.Landray].map((item) => (\n <Tabs.TabPane\n key={LoginMethods.Landray}\n tab={item.title ?? t('login.landrayKKScan')}\n >\n <LoginWithLandrayQrcode\n // onLogin={onLogin}\n onLoginSuccess={onLoginSuccess}\n canLoop={canLoop}\n qrCodeScanOptions={{\n ...config?.qrCodeScanOptions,\n extIdpConnId: item.id,\n tips: {\n title:\n i18n.language === 'zh-CN'\n ? `${'使用 蓝凌KK 扫码登录'}`\n : `${'Use LandrayKK to scan and login'} `,\n expired: t('login.qrcodeExpired'),\n },\n }}\n />\n </Tabs.TabPane>\n ))}\n </Tabs>\n </div>\n )}\n <div className=\"g2-social-login\">\n <SocialLogin\n appId={appId}\n config={config!}\n // onLogin={onLogin}\n onLoginSuccess={onLoginSuccess}\n onLoginFailed={onLoginFailed}\n socialConnectionObjs={socialConnectionObjs}\n enterpriseConnectionObjs={enterpriseConnectionObjs}\n />\n </div>\n </>\n )}\n </div>\n <ChangeLanguage\n langRange={config?.langRange}\n onLangChange={events?.onLangChange}\n />\n </div>\n )\n}\n","import { GuardModuleType } from '../../Guard/module'\nimport { useGuardModule } from '../context'\nimport { FacePlugin } from './interface'\n\nlet facePluginInstance: FacePlugin\n\nexport const getFacePlugin = () => {\n if (!facePluginInstance) {\n return undefined\n }\n\n return facePluginInstance\n}\n\nexport const useFacePlugin = () => {\n const { changeModule } = useGuardModule()\n\n if (!facePluginInstance) {\n changeModule?.(GuardModuleType.ERROR, {\n error: new Error('为使用 face 模块,请先安装 face-api-guard 插件'),\n })\n\n return undefined\n }\n\n return facePluginInstance\n}\n\nexport const initFacePlugin = (facePlugin: FacePlugin) => {\n facePluginInstance = facePlugin\n\n return facePluginInstance\n}\n","enum FaceErrorName {\n NotAllowedError = 'NotAllowedError',\n AbortError = 'AbortError',\n NotReadableError = 'NotReadableError',\n OverconstrainedError = 'OverconstrainedError',\n SecurityError = 'SecurityError',\n}\nexport interface FaceErrorMessage extends DOMException {\n name: FaceErrorName\n}\nexport const faceErrorMessage = (error: FaceErrorMessage) => {\n let message: string = ''\n switch (error.name) {\n case FaceErrorName.NotAllowedError:\n message = 'login.AuthorizationCamera'\n break\n case FaceErrorName.SecurityError:\n message = 'login.checkPreferences'\n break\n case FaceErrorName.OverconstrainedError:\n message = 'login.requireError'\n break\n default:\n message = 'login.hardwareSupport'\n }\n return message\n}\n","import { Input, message, message as Message } from 'antd'\nimport { Form } from 'antd'\nimport React, { useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { VerifyCodeInput } from '../VerifyCodeInput'\nimport { SendCodeBtn } from '../../SendCode/SendCodeBtn'\nimport SubmitButton from '../../SubmitButton'\nimport CustomFormItem from '../../ValidatorRules'\nimport { MFAConfig } from '../interface'\nimport { VerifyCodeFormItem } from '../VerifyCodeInput/VerifyCodeFormItem'\nimport { IconFont } from '../../IconFont'\nimport { mailDesensitization } from '../../_utils'\nimport { useGuardPublicConfig } from '../../_utils/context'\nimport { MfaBusinessAction, useMfaBusinessRequest } from '../businessRequest'\nimport { EmailScene } from '../../Type'\nimport { getGuardHttp } from '../../_utils/guardHttp'\n\ninterface BindMFAEmailProps {\n mfaToken: string\n onBind: (email: string) => void\n config: any\n}\nexport const BindMFAEmail: React.FC<BindMFAEmailProps> = ({\n mfaToken,\n onBind,\n config,\n}) => {\n const submitButtonRef = useRef<any>(null)\n\n const { t } = useTranslation()\n\n const [form] = Form.useForm()\n\n const onFinish = async ({ email }: any) => {\n await form.validateFields()\n submitButtonRef.current?.onSpin(false)\n try {\n onBind(email)\n } catch (e: any) {\n const error = JSON.parse(e?.message)\n submitButtonRef.current.onError()\n Message.error(error.message)\n }\n }\n return (\n <>\n <p className=\"authing-g2-mfa-title\">{t('common.bindEmail')}</p>\n <p className=\"authing-g2-mfa-tips\">{t('common.bindEmailDoc')}</p>\n <Form\n form={form}\n onSubmitCapture={() => submitButtonRef.current.onSpin(true)}\n onFinish={onFinish}\n onFinishFailed={() => submitButtonRef.current.onError()}\n >\n <CustomFormItem.Email\n className=\"authing-g2-input-form\"\n name=\"email\"\n form={form}\n checkRepeat={true}\n required={true}\n >\n <Input\n className=\"authing-g2-input\"\n autoComplete=\"off\"\n size=\"large\"\n placeholder={t('login.inputEmail')}\n prefix={\n <IconFont\n type=\"authing-a-mail-line3\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </CustomFormItem.Email>\n\n <SubmitButton text={t('common.sure')} ref={submitButtonRef} />\n </Form>\n </>\n )\n}\n\ninterface VerifyMFAEmailProps {\n email: string\n mfaToken: string\n onVerify: (code: number, data: any) => void\n sendCodeRef: React.RefObject<HTMLButtonElement>\n codeLength: number\n}\n\nexport const VerifyMFAEmail: React.FC<VerifyMFAEmailProps> = ({\n email,\n mfaToken,\n onVerify,\n sendCodeRef,\n codeLength,\n}) => {\n const { post } = getGuardHttp()\n const businessRequest = useMfaBusinessRequest()[MfaBusinessAction.VerifyEmail]\n\n const submitButtonRef = useRef<any>(null)\n\n const { t } = useTranslation()\n\n const [form] = Form.useForm()\n\n const [sent, setSent] = useState(false)\n\n const sendVerifyCode = async () => {\n try {\n const { code } = await post('/api/v2/email/send', {\n email,\n scene: EmailScene.MFA_VERIFY_CODE,\n })\n if (code === 200) {\n setSent(true)\n return true\n } else {\n message.error(t('login.sendCodeTimeout'))\n return false\n }\n // await authClient.sendEmail(email!, EmailScene.MFA_VERIFY_CODE)\n // setSent(true)\n // return true\n } catch (e: any) {\n if (e.code === 'ECONNABORTED') {\n message.error(t('login.sendCodeTimeout'))\n return false\n }\n const errorMessage = JSON.parse(e.message)\n message.error(errorMessage.message)\n return false\n }\n }\n\n const onFinish = async (values: any) => {\n submitButtonRef.current?.onSpin(true)\n const mfaCode = form.getFieldValue('mfaCode')\n\n const requestData = {\n mfaToken,\n email: email!,\n code: mfaCode.join(''),\n }\n\n const { isFlowEnd, data, onGuardHandling } = await businessRequest(\n requestData\n )\n\n submitButtonRef.current?.onSpin(false)\n\n if (isFlowEnd) {\n onVerify(200, data)\n } else {\n submitButtonRef.current?.onError()\n onGuardHandling?.()\n }\n }\n\n return (\n <>\n <p className=\"authing-g2-mfa-title\">{t('login.inputEmailCode')}</p>\n <p className=\"authing-g2-mfa-tips\">\n {sent\n ? `${t('login.verifyCodeSended')} ${mailDesensitization(email)}`\n : ''}\n </p>\n <Form\n form={form}\n onFinish={onFinish}\n onFinishFailed={() => submitButtonRef.current?.onError()}\n >\n <VerifyCodeFormItem\n codeLength={codeLength}\n ruleKeyword={t('common.captchaCode')}\n >\n <VerifyCodeInput length={codeLength} onFinish={onFinish} />\n </VerifyCodeFormItem>\n\n <SendCodeBtn\n btnRef={sendCodeRef}\n setSent={setSent}\n beforeSend={() => sendVerifyCode()}\n type=\"link\"\n />\n\n <SubmitButton\n text={t('common.sure')}\n ref={submitButtonRef}\n className=\"g2-mfa-submit-button\"\n />\n </Form>\n </>\n )\n}\n\nexport const MFAEmail: React.FC<{\n mfaToken: string\n email?: string\n mfaLogin: any\n config: MFAConfig\n}> = ({ email: userEmail, mfaToken, mfaLogin, config }) => {\n const [email, setEmail] = useState(userEmail)\n const sendCodeRef = useRef<HTMLButtonElement>(null)\n\n const publicConfig = useGuardPublicConfig()\n\n const codeLength = publicConfig?.verifyCodeLength\n\n return (\n <>\n {email ? (\n <VerifyMFAEmail\n mfaToken={mfaToken}\n email={email}\n onVerify={(code, data) => {\n mfaLogin(code, data)\n }}\n sendCodeRef={sendCodeRef}\n codeLength={codeLength ?? 4}\n />\n ) : (\n <BindMFAEmail\n config={config}\n mfaToken={mfaToken}\n onBind={(email: string) => {\n setEmail(email)\n sendCodeRef.current?.click()\n }}\n />\n )}\n </>\n )\n}\n","import { message } from 'antd'\nimport { Form } from 'antd'\nimport { SceneType } from 'authing-js-sdk'\nimport React, { useCallback, useMemo, useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { VerifyCodeInput } from '../VerifyCodeInput'\nimport { useGuardAuthClient } from '../../Guard/authClient'\nimport { SendCodeBtn } from '../../SendCode/SendCodeBtn'\nimport SubmitButton from '../../SubmitButton'\nimport CustomFormItem from '../../ValidatorRules'\nimport { VerifyCodeFormItem } from '../VerifyCodeInput/VerifyCodeFormItem'\nimport { GuardMFAInitData, MFAConfig } from '../interface'\nimport { InputNumber } from '../../InputNumber'\nimport { IconFont } from '../../IconFont'\nimport { phoneDesensitization } from '../../_utils'\nimport { useGuardPublicConfig } from '../../_utils/context'\nimport { useMfaBusinessRequest, MfaBusinessAction } from '../businessRequest'\nimport { InputInternationPhone } from '../../Login/core/withVerifyCode/InputInternationPhone'\nimport { parsePhone } from '../../_utils/hooks'\nexport interface BindMFASmsProps {\n mfaToken: string\n onBind: (phone: string) => void\n config: any\n areaCode: string\n setAreaCode: (areaCode: string) => void\n isInternationSms: boolean\n}\n\nexport const BindMFASms: React.FC<BindMFASmsProps> = ({\n mfaToken,\n onBind,\n config,\n areaCode,\n setAreaCode,\n isInternationSms,\n}) => {\n const submitButtonRef = useRef<any>(null)\n const { t } = useTranslation()\n const [form] = Form.useForm()\n\n const onFinish = async ({ phone }: any) => {\n await form.validateFields()\n submitButtonRef.current?.onSpin(false)\n try {\n onBind(phone)\n } catch (e) {\n // do nothing\n submitButtonRef.current?.onError()\n }\n }\n\n const PhoneAccount = useCallback(\n (props) => {\n if (isInternationSms) {\n return (\n <InputInternationPhone\n {...props}\n className=\"authing-g2-input\"\n size=\"large\"\n areaCode={areaCode}\n onAreaCodeChange={(value: string) => {\n setAreaCode(value)\n form.getFieldValue(['phone']) && form.validateFields(['phone'])\n }}\n />\n )\n } else {\n return (\n <InputNumber\n {...props}\n className=\"authing-g2-input\"\n autoComplete=\"off\"\n size=\"large\"\n placeholder={t('login.inputPhone')}\n prefix={\n <IconFont\n type=\"authing-a-smartphone-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n )\n }\n },\n [areaCode, form, isInternationSms, setAreaCode, t]\n )\n return (\n <>\n <h3 className=\"authing-g2-mfa-title\">{t('common.bindPhone')}</h3>\n <p className=\"authing-g2-mfa-tips\">{t('login.bindPhoneInfo')}</p>\n <Form\n form={form}\n onSubmitCapture={() => submitButtonRef.current.onSpin(true)}\n onFinish={onFinish}\n onFinishFailed={() => submitButtonRef.current.onError()}\n >\n <CustomFormItem.Phone\n className={\n isInternationSms\n ? 'authing-g2-input-form remove-padding'\n : 'authing-g2-input-form'\n }\n name=\"phone\"\n form={form}\n checkRepeat={true}\n required={true}\n areaCode={areaCode}\n >\n <PhoneAccount />\n </CustomFormItem.Phone>\n <SubmitButton text={t('common.sure')} ref={submitButtonRef} />\n </Form>\n </>\n )\n}\n\nexport interface VerifyMFASmsProps {\n mfaToken: string\n phone: string\n onVerify: (code: number, data: any) => void\n sendCodeRef: React.RefObject<HTMLButtonElement>\n codeLength: number\n areaCode: string //绑定选择的\n phoneCountryCode?: string //后端返回的国家区号\n isInternationSms: boolean\n userPhone?: string\n}\n\nexport const VerifyMFASms: React.FC<VerifyMFASmsProps> = ({\n mfaToken,\n phone,\n userPhone,\n onVerify,\n sendCodeRef,\n codeLength = 4,\n areaCode,\n phoneCountryCode,\n isInternationSms,\n}) => {\n const authClient = useGuardAuthClient()\n\n const submitButtonRef = useRef<any>(null)\n\n const { t } = useTranslation()\n\n const [form] = Form.useForm()\n\n const [sent, setSent] = useState<boolean>(false)\n\n const { phoneNumber, countryCode } = parsePhone(\n isInternationSms,\n phone,\n areaCode\n )\n\n const businessRequest = useMfaBusinessRequest()[MfaBusinessAction.VerifySms]\n\n const onFinish = async (values: any) => {\n submitButtonRef.current?.onSpin(true)\n const mfaCode = form.getFieldValue('mfaCode')\n\n const requestData: any = {\n mfaToken,\n phone: phone!,\n code: mfaCode.join(''),\n phoneCountryCode: phoneCountryCode ? phoneCountryCode : countryCode,\n }\n\n const { isFlowEnd, data, onGuardHandling } = await businessRequest(\n requestData\n )\n\n submitButtonRef.current?.onSpin(false)\n\n if (isFlowEnd) {\n onVerify(200, data)\n } else {\n submitButtonRef.current.onError()\n onGuardHandling?.()\n }\n }\n\n const tips = useMemo(\n () =>\n sent\n ? `${t('login.verifyCodeSended')} ${\n isInternationSms\n ? phoneCountryCode\n ? phoneCountryCode\n : countryCode\n : ''\n } ${phoneDesensitization(phone)}`\n : '',\n [countryCode, isInternationSms, phone, phoneCountryCode, sent, t]\n )\n\n const sendVerifyCode = async () => {\n try {\n await authClient.sendSmsCode(\n userPhone ? userPhone : phoneNumber,\n phoneCountryCode ? phoneCountryCode : countryCode,\n SceneType.SCENE_TYPE_MFA_VERIFY\n )\n return true\n } catch (e: any) {\n if (e.code === 'ECONNABORTED') {\n message.error(t('login.sendCodeTimeout'))\n return false\n }\n const errorMessage = JSON.parse(e.message)\n message.error(errorMessage.message)\n return false\n }\n }\n\n return (\n <>\n <h3 className=\"authing-g2-mfa-title\">{t('login.inputPhoneCode')}</h3>\n <p className=\"authing-g2-mfa-tips\">{tips}</p>\n <Form\n form={form}\n onFinish={onFinish}\n onFinishFailed={() => submitButtonRef.current.onError()}\n >\n <VerifyCodeFormItem\n codeLength={codeLength}\n ruleKeyword={t('common.captchaCode')}\n >\n <VerifyCodeInput length={codeLength} onFinish={onFinish} />\n </VerifyCodeFormItem>\n\n <SendCodeBtn\n btnRef={sendCodeRef}\n beforeSend={() => sendVerifyCode()}\n type=\"link\"\n setSent={setSent}\n />\n\n <SubmitButton\n text={t('common.sure')}\n ref={submitButtonRef}\n className=\"g2-mfa-submit-button\"\n />\n </Form>\n </>\n )\n}\n\nexport const MFASms: React.FC<{\n // mfaToken: string\n // phone?: string\n mfaLogin: any\n config: MFAConfig\n initData: GuardMFAInitData\n}> = ({\n mfaLogin,\n config,\n initData: { phone: userPhone, mfaToken, phoneCountryCode },\n}) => {\n const [phone, setPhone] = useState(userPhone)\n\n const sendCodeRef = useRef<HTMLButtonElement>(null)\n\n const publicConfig = useGuardPublicConfig()\n\n const codeLength = publicConfig?.verifyCodeLength\n const [areaCode, setAreaCode] = useState(\n publicConfig?.internationalSmsConfig?.defaultISOType || 'CN'\n )\n\n const isInternationSms = Boolean(\n publicConfig?.internationalSmsConfig?.enabled\n )\n // todo 后续改 不用 phone 作为判断模式\n return (\n <>\n {phone ? (\n <VerifyMFASms\n mfaToken={mfaToken}\n phone={phone}\n userPhone={userPhone}\n phoneCountryCode={phoneCountryCode}\n isInternationSms={isInternationSms}\n onVerify={(code, data) => {\n mfaLogin(code, data)\n }}\n codeLength={codeLength ?? 4}\n sendCodeRef={sendCodeRef}\n areaCode={areaCode}\n />\n ) : (\n <BindMFASms\n config={config}\n mfaToken={mfaToken}\n areaCode={areaCode}\n setAreaCode={setAreaCode}\n isInternationSms={isInternationSms}\n onBind={(phone: string) => {\n setPhone(phone)\n sendCodeRef.current?.click()\n }}\n />\n )}\n </>\n )\n}\n","import { getFacePlugin } from '../../_utils/facePlugin'\n\nlet inputSize = 512\nlet scoreThreshold = 0.5\n\nexport const devicesConstraints = {\n video: {\n width: 210,\n height: 210,\n },\n}\nexport const FACE_SCORE = 0.65\n\nexport function getFaceDetectorOptions() {\n const facePlugin = getFacePlugin()\n\n if (facePlugin) {\n const { TinyFaceDetectorOptions } = facePlugin\n return new TinyFaceDetectorOptions({ inputSize, scoreThreshold })\n }\n}\n\nexport function getCurrentFaceDetectionNet() {\n const facePlugin = getFacePlugin()\n\n if (facePlugin) {\n const { nets } = facePlugin\n\n return nets.tinyFaceDetector\n }\n}\n\nexport function isFaceDetectionModelLoaded() {\n return !!getCurrentFaceDetectionNet().params\n}\n\nexport function dataURItoBlob(base64Data: any) {\n var byteString\n if (base64Data.split(',')[0].indexOf('base64') >= 0)\n byteString = atob(base64Data.split(',')[1])\n else byteString = unescape(base64Data.split(',')[1])\n var mimeString = base64Data.split(',')[0].split(':')[1].split(';')[0]\n var ia = new Uint8Array(byteString.length)\n for (var i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i)\n }\n return new Blob([ia], { type: mimeString })\n}\n","import { getGuardHttp } from '../_utils/guardHttp'\n\nexport enum TotpRecoveryCodeBusinessAction {\n RecoveryTotp = 'recovery-totp',\n ConfirmTotpRecoveryCode = 'confirm-totp-recovery-code',\n}\n\nexport async function authFlow<T>(\n action: TotpRecoveryCodeBusinessAction,\n content: any\n) {\n const { authFlow } = getGuardHttp()\n\n const res = await authFlow<T>(action, { ...content })\n\n return res\n}\n","import React, {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useGuardHttp } from '../../_utils/guardHttp'\nimport {\n FACE_SCORE,\n devicesConstraints,\n dataURItoBlob,\n getCurrentFaceDetectionNet,\n getFaceDetectorOptions,\n isFaceDetectionModelLoaded,\n} from './face_deps'\nimport { ImagePro } from '../../ImagePro'\nimport SubmitButton from '../../SubmitButton'\nimport { message } from 'antd'\nimport { faceErrorMessage } from '../../_utils/errorFace'\nimport { MFABackStateContext } from '..'\nimport { useGuardButtonState, useGuardPublicConfig } from '../../_utils/context'\nimport { MfaBusinessAction, useMfaBusinessRequest } from '../businessRequest'\nimport { getFacePlugin } from '../../_utils/facePlugin'\n\nconst useDashoffset = (percent: number) => {\n // 接受 0 - 1,返回 0-700 之间的偏移量\n let offset = percent * 7\n\n // 在识别成功的时候,返回绿色\n let dashStyle = {}\n return { offset, dashStyle }\n}\n\nexport const MFAFace = (props: any) => {\n const mfaBackContext = useContext(MFABackStateContext)\n\n let { postForm } = useGuardHttp()\n\n let { t } = useTranslation()\n\n const [faceState, setFaceState] = useState('ready') // ready, identifying, retry\n\n const [percent, setPercent] = useState(0) // 识别进度(相似性)\n\n const mfaBusinessRequest = useMfaBusinessRequest()\n\n const { spinChange } = useGuardButtonState()\n\n const verifyRequest = mfaBusinessRequest[MfaBusinessAction.VerifyFace]\n\n const bindRequest = mfaBusinessRequest[MfaBusinessAction.AssociateFace]\n\n const videoRef = useRef<HTMLVideoElement>(null)\n const canvasRef = useRef<HTMLCanvasElement>(null)\n const interval = useRef<NodeJS.Timeout | undefined>()\n const p1 = useRef<string>() // p1 key\n const p2 = useRef<string>() // p2 key\n const cooldown = useRef<number>(0) // p2 cooldown, * 500ms\n const publicConfig = useGuardPublicConfig()\n\n const cdnBase = publicConfig?.cdnBase\n\n let { offset, dashStyle } = useDashoffset(percent)\n\n // 预加载数据\n useEffect(() => {\n // 载入 cdn\n getCurrentFaceDetectionNet().loadFromUri(\n `${cdnBase}/face-api/v1/tiny_face_detector_model-weights_manifest.json`\n )\n\n if (faceState !== 'identifying') {\n return // 不存在 video dom,不要去尝试了\n }\n let devicesContext = navigator.mediaDevices.getUserMedia(devicesConstraints)\n devicesContext\n .then((stream) => {\n videoRef.current!.srcObject = stream\n })\n .catch((e) => {\n const msg = faceErrorMessage(e)\n message.error(t(msg))\n\n // 没有设备,或没有授权\n // console.error(e)\n // setVideoType(VideoAction.ERROR)\n // setProgressStatus('exception')\n // setPercent(100)\n // setVideoError(e.message)\n })\n\n return () => {\n interval.current && clearInterval(interval.current)\n }\n }, [faceState, interval, props.config, cdnBase, t])\n\n // 监听 faceState\n useEffect(() => {\n // if (faceState === 'identifying' || faceState === 'retry') {\n // props.setShowMethods(false)\n // } else {\n // props.setShowMethods(true)\n // }\n if (mfaBackContext?.mfaBackState === 'check') {\n props.setShowMethods(false)\n } else {\n props.setShowMethods(true)\n }\n }, [mfaBackContext?.mfaBackState, props])\n\n // 上传文件\n const uploadImage = async (blob: Blob) => {\n spinChange(true)\n const formData = new FormData()\n formData.append('folder', 'photos')\n formData.append('file', blob, 'personal.jpeg')\n\n let url = '/api/v2/upload?folder=photos&private=true'\n let result = await postForm<any>(url, formData)\n let key = result.data?.key\n\n spinChange(false)\n\n return key\n }\n\n // get base 64\n const getBase64 = (videoDom: any) => {\n const canvas = canvasRef.current!\n const ctx = canvas!.getContext('2d')!\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n ctx.drawImage(videoDom, 0, 0, canvas.width, canvas.height)\n const base64Data = canvas.toDataURL('image/jpeg', 1.0)\n return base64Data\n }\n\n const faceBind = async () => {\n const requestData = {\n photoA: p1.current!,\n photoB: p2.current!,\n mfaToken: props.initData.mfaToken,\n }\n const result = await bindRequest(requestData)\n\n const { isFlowEnd, onGuardHandling, code, data } = result\n\n if (isFlowEnd) {\n props.mfaLogin(200, data)\n } else {\n if (code === 1700 || code === 1701 || code === 1702) {\n p1.current = undefined\n\n p2.current = undefined\n\n interval.current = undefined\n\n cooldown.current = 0\n\n setFaceState('retry')\n } else {\n onGuardHandling?.()\n }\n }\n }\n\n const faceCheck = async () => {\n const requestData = {\n photo: p1.current!,\n mfaToken: props.initData.mfaToken,\n }\n\n spinChange(true)\n\n const result = await verifyRequest(requestData)\n\n spinChange(false)\n\n const { isFlowEnd, onGuardHandling, data, code } = result\n\n if (isFlowEnd) {\n props.mfaLogin(200, data)\n } else {\n if (code === 1700 || code === 1701 || code === 1702) {\n p1.current = undefined\n\n p2.current = undefined\n\n interval.current = undefined\n\n cooldown.current = 0\n\n setFaceState('retry')\n } else {\n onGuardHandling?.()\n }\n }\n }\n\n // bind 的情况\n const goToBindScene = (key: string) => {\n if (!p1.current) {\n p1.current = key\n } else {\n if (cooldown.current > 0) {\n cooldown.current -= 1\n }\n if (cooldown.current <= 0) {\n p2.current = key\n // 彻底上传完了,应该走验证了\n interval.current && clearInterval(interval.current)\n faceBind()\n }\n }\n }\n\n // goToCheck 的情况\n const goToCheckScene = (key: string) => {\n p1.current = key\n interval.current && clearInterval(interval.current)\n faceCheck()\n }\n\n // 识别成功,自动前进到下一个步骤\n const quitIdentifying = (blob: Blob) => {\n setPercent(100)\n uploadImage(blob).then((key) => {\n if (props.initData?.faceMfaEnabled === true) {\n goToCheckScene(key)\n } else {\n goToBindScene(key)\n }\n })\n }\n\n const autoShoot = useCallback(async () => {\n if (!interval.current) {\n interval.current = setInterval(() => autoShoot(), 500)\n }\n const videoDom = videoRef.current!\n if (videoDom?.paused || videoDom?.ended || !isFaceDetectionModelLoaded()) {\n return\n }\n const options = getFaceDetectorOptions()\n\n const facePlugin = getFacePlugin()\n\n if (!facePlugin) return\n\n const { detectSingleFace } = facePlugin\n\n const result = await detectSingleFace(videoDom, options)\n\n if (result) {\n if (result.score > FACE_SCORE) {\n const base64Data = getBase64(videoDom)\n const blob = dataURItoBlob(base64Data)\n quitIdentifying(blob) // 识别成功,退出识别\n } else {\n // 识别失败,但是有结果,设置相似性\n setPercent(() => {\n return (result.score / FACE_SCORE) * 100\n })\n // ('识别失败,但是有结果,设置相似性', percent)\n }\n } else {\n setPercent(10)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n return (\n <div>\n <h3 className=\"authing-g2-mfa-title\">{t('common.faceText1')}</h3>\n <p className=\"authing-g2-mfa-tips\">{t('common.faceText2')}</p>\n {(faceState === 'ready' || mfaBackContext?.mfaBackState === 'login') && (\n <>\n <ImagePro\n className=\"g2-mfa-face-image\"\n width={247}\n height={131}\n src={`${cdnBase}/face.png`}\n alt=\"\"\n />\n\n <SubmitButton\n onClick={() => {\n // 设置状态之前 校验是否支持面容 (api 和 设备)\n // TODO 之后添加人脸识别插件支持 减小包体积\n if (navigator.mediaDevices) {\n setFaceState('identifying')\n mfaBackContext?.setMfaBackState &&\n mfaBackContext.setMfaBackState('check')\n autoShoot()\n } else {\n message.error(t('login.mediaDevicesSupport'))\n }\n }}\n text={t('common.faceText3')}\n className=\"mfa-face\"\n />\n </>\n )}\n <div\n className=\"g2-mfa-face-identifying\"\n style={{\n display:\n faceState !== 'ready' && mfaBackContext?.mfaBackState !== 'login'\n ? 'flex'\n : 'none',\n }}\n >\n <video\n className=\"video-round\"\n ref={videoRef}\n style={{ transform: 'rotateY(180deg)' }}\n // onLoadedMetadata={() => onIdentify()}\n id=\"inputVideo\"\n autoPlay\n muted\n playsInline\n />\n <div\n className=\"video-round mesh\"\n style={{\n display: faceState === 'retry' ? 'flex' : 'none',\n }}\n onClick={() => {\n setFaceState('identifying')\n setPercent(0)\n autoShoot()\n }}\n >\n {t('common.faceText4')}\n </div>\n\n <div className=\"video-round ring\">\n <svg width={240} height={240} fill=\"none\">\n <circle\n className=\"svg-circle-running\"\n style={dashStyle}\n strokeDasharray={700} // 根据周长做 0-700 之间的数值表示准确率\n strokeDashoffset={700 - offset} // 处理这个 offset, 0-700之间的数\n cx={120}\n cy={120}\n r={110}\n />\n </svg>\n </div>\n </div>\n\n <canvas\n style={{\n width: 210,\n height: 210,\n opacity: 0,\n position: 'absolute',\n display: 'none',\n }}\n ref={canvasRef}\n />\n </div>\n )\n}\n","import { Form } from 'antd'\nimport React, { useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useAsyncFn } from 'react-use'\nimport { GuardModuleType } from '../../Guard/module'\nimport { GuardMFAInitData, MFAConfig } from '../interface'\nimport SubmitButton from '../../SubmitButton'\nimport { VerifyCodeFormItem } from '../VerifyCodeInput/VerifyCodeFormItem'\nimport { VerifyCodeInput } from '../VerifyCodeInput'\nimport { IconFont } from '../../IconFont'\nimport { MfaBusinessAction, useMfaBusinessRequest } from '../businessRequest'\nimport { useGuardInitData } from '../../_utils/context'\nimport { GuardButton } from '../../GuardButton'\n\nexport interface BindMFATotpProps {\n initData: GuardMFAInitData\n changeModule: any\n}\n\nexport const BindMFATotp: React.FC<BindMFATotpProps> = ({\n changeModule,\n initData,\n}) => {\n const { t } = useTranslation()\n\n const next = () => changeModule(GuardModuleType.BIND_TOTP, initData)\n return (\n <>\n <p className=\"authing-g2-mfa-title\">{t('common.bindTotp')}</p>\n <p className=\"authing-g2-mfa-tips\">{t('common.otpText1')}</p>\n\n <div style={{ display: 'flex', justifyContent: 'center' }}>\n <IconFont type=\"authing-otp\" style={{ width: 247, height: 131 }} />\n </div>\n <SubmitButton\n text={t('common.sure')}\n onClick={next}\n className=\"g2-mfa-submit-button bind-totp\"\n />\n </>\n )\n}\n\nexport interface VerifyMFATotpProps {\n mfaToken: string\n mfaLogin: any\n changeModule: any\n}\n\nexport const VerifyMFATotp: React.FC<VerifyMFATotpProps> = ({\n mfaToken,\n mfaLogin,\n changeModule,\n}) => {\n const { t } = useTranslation()\n\n const [form] = Form.useForm()\n\n const submitButtonRef = useRef<any>(null)\n\n const initData = useGuardInitData<GuardMFAInitData>()\n\n const businessRequest = useMfaBusinessRequest()[MfaBusinessAction.VerifyTotp]\n\n const [, onFinish] = useAsyncFn(async () => {\n submitButtonRef.current?.onSpin(true)\n\n const mfaCode = form.getFieldValue('mfaCode')\n\n const requestData = {\n totp: mfaCode.join(''),\n mfaToken,\n }\n\n const { isFlowEnd, data, onGuardHandling } = await businessRequest(\n requestData\n )\n\n submitButtonRef.current?.onSpin(false)\n\n if (isFlowEnd) {\n mfaLogin(200, data)\n } else {\n submitButtonRef.current.onError()\n\n onGuardHandling?.()\n }\n }, [mfaToken])\n\n return (\n <>\n <p className=\"authing-g2-mfa-title\">{t('login.accPwdLoginVerify')}</p>\n <p className=\"authing-g2-mfa-tips\">{t('login.inputSixCode')}</p>\n <Form\n form={form}\n onSubmitCapture={() => {}}\n onFinish={onFinish}\n onFinishFailed={() => submitButtonRef.current.onError()}\n >\n <VerifyCodeFormItem codeLength={6}>\n <VerifyCodeInput\n length={6}\n showDivider={false}\n gutter={'10px'}\n onFinish={onFinish}\n />\n </VerifyCodeFormItem>\n\n <SubmitButton text={t('common.sure')} ref={submitButtonRef} />\n <p className=\"authing-g2-mfa-totp-recoveryCode\">\n {t('common.hasLooseSaftyCode')}\n <GuardButton\n type=\"link\"\n onClick={() => {\n changeModule(GuardModuleType.RECOVERY_CODE, {\n ...initData,\n })\n }}\n >\n {t('common.useRecoverCode')}\n </GuardButton>\n </p>\n </Form>\n </>\n )\n}\n\nexport interface MFATotpProps {\n changeModule: any\n config: MFAConfig\n initData: GuardMFAInitData\n mfaLogin: any\n}\n\nexport const MFATotp: React.FC<MFATotpProps> = ({\n changeModule,\n initData,\n mfaLogin,\n}) => {\n return (\n <>\n {initData.totpMfaEnabled ? (\n <VerifyMFATotp\n mfaToken={initData.mfaToken}\n mfaLogin={mfaLogin}\n changeModule={changeModule}\n />\n ) : (\n <BindMFATotp initData={initData} changeModule={changeModule} />\n )}\n </>\n )\n}\n","import React, { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { IconFont } from '../../IconFont'\nimport { GuardMFAInitData, MFAType } from '../interface'\nimport { i18n } from '../../_utils/locales'\nimport './style.less'\nimport { useGuardInitData } from '../../_utils/context'\nimport { GuardButton } from '../../GuardButton'\nimport { getFacePlugin } from '../../_utils/facePlugin'\n\nexport interface MFAMethodsProps {\n method: MFAType\n onChangeMethod: (type: MFAType) => void\n}\n\nconst methodTitleMapping: Record<\n MFAType,\n {\n title: () => string\n icon: string\n }\n> = {\n [MFAType.EMAIL]: {\n title: () => i18n.t('common.EmailVerification'),\n icon: 'authing-mail',\n },\n [MFAType.SMS]: {\n title: () => i18n.t('common.SMS'),\n icon: 'authing-phone',\n },\n [MFAType.TOTP]: {\n title: () => i18n.t('common.OTPVerification'),\n icon: 'authing-totp',\n },\n [MFAType.FACE]: {\n title: () => i18n.t('common.faceVerification'),\n icon: 'authing-face',\n },\n}\n\nexport const MFAMethods: React.FC<MFAMethodsProps> = ({\n method,\n onChangeMethod,\n}) => {\n const [currentMethod, setCurrentMethod] = useState(method)\n const { t } = useTranslation()\n\n const { applicationMfa } = useGuardInitData<GuardMFAInitData>()\n\n const otherMethods = useMemo(\n () =>\n applicationMfa\n .filter((item) =>\n Object.keys(methodTitleMapping).includes(item.mfaPolicy)\n )\n .filter((item) => item.mfaPolicy !== currentMethod)\n .filter((item) => {\n if (item.mfaPolicy === MFAType.FACE) {\n const facePlugin = getFacePlugin()\n\n return Boolean(facePlugin)\n }\n\n return true\n })\n .sort((a, b) => a.sort - b.sort)\n .map((item) => (\n <GuardButton\n className=\"g2-guard-mfa-methods-btn\"\n onClick={(e) => {\n onChangeMethod(item.mfaPolicy)\n setCurrentMethod(item.mfaPolicy)\n }}\n key={item.mfaPolicy}\n >\n <IconFont type={methodTitleMapping[item.mfaPolicy].icon} />\n {`${methodTitleMapping[item.mfaPolicy].title()}`}\n </GuardButton>\n )),\n [applicationMfa, currentMethod, onChangeMethod]\n )\n\n return (\n <>\n {otherMethods.length !== 0 && (\n <>\n <div\n style={{\n minHeight: 32,\n }}\n />\n <div className=\"g2-mfa-method\">\n <div className=\"g2-mfa-method-title\">\n {t('login.otherVerifyWay')}\n </div>\n {otherMethods}\n </div>\n </>\n )}\n </>\n )\n}\n","import { GuardModuleAction, GuardModuleType } from '../Guard/module'\n\nexport const codeMap: Record<number, GuardModuleAction> = {\n // 待添加\n 2021: {\n action: 'changeModule',\n module: GuardModuleType.LOGIN,\n },\n 1700: {\n action: 'insideFix',\n message: 'verification failed, let components inside fix is fine.',\n },\n 1701: {\n action: 'insideFix',\n message: 'verification failed, let components inside fix is fine.',\n },\n 1702: {\n action: 'insideFix',\n message: 'verification failed, let components inside fix is fine.',\n },\n 500: {\n action: 'message',\n },\n 6001: {\n action: 'message',\n },\n 602: {\n action: 'message',\n },\n}\n","import React, { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { GuardModuleType } from '../Guard/module'\nimport { MFAEmail } from './core/email'\nimport { MFASms } from './core/sms'\nimport { MFAFace } from './core/face'\nimport { MFATotp } from './core/totp'\nimport { MFAMethods } from './mfaMethods'\nimport { GuardMFAInitData, MFAType } from './interface'\nimport { useGuardAuthClient } from '../Guard/authClient'\nimport { codeMap } from './codemap'\nimport './styles.less'\nimport { message } from 'antd'\nimport {\n useGuardEvents,\n useGuardFinallyConfig,\n useGuardInitData,\n useGuardModule,\n} from '../_utils/context'\nimport { BackCustom, BackLogin } from '../Back'\ninterface MFABackStateContextType {\n setMfaBackState: React.Dispatch<React.SetStateAction<string>>\n mfaBackState: string\n}\nexport const MFABackStateContext = React.createContext<\n MFABackStateContextType | undefined\n>(undefined)\n\nconst ComponentsMapping: Record<MFAType, (props: any) => React.ReactNode> = {\n [MFAType.EMAIL]: ({ config, initData, mfaLogin }) => (\n <MFAEmail\n config={config}\n mfaToken={initData.mfaToken}\n email={initData.email}\n mfaLogin={mfaLogin}\n />\n ),\n [MFAType.SMS]: ({ config, initData, mfaLogin }) => (\n <MFASms config={config} initData={initData} mfaLogin={mfaLogin} />\n ),\n [MFAType.TOTP]: ({ initData, config, changeModule, mfaLogin }) => (\n <MFATotp\n changeModule={changeModule}\n config={config}\n initData={initData}\n mfaLogin={mfaLogin}\n />\n ),\n [MFAType.FACE]: ({ config, initData, mfaLogin, setShowMethods }) => (\n <MFAFace\n config={config}\n initData={initData}\n mfaLogin={mfaLogin}\n setShowMethods={setShowMethods}\n />\n ),\n}\n\nexport const GuardMFAView: React.FC = () => {\n const initData = useGuardInitData<GuardMFAInitData>()\n\n const config = useGuardFinallyConfig()\n\n const { changeModule } = useGuardModule()\n\n const events = useGuardEvents()\n\n const [currentMethod, setCurrentMethod] = useState(\n initData.current ??\n initData.applicationMfa?.sort((a, b) => a.sort - b.sort)[0].mfaPolicy\n )\n\n const [mfaBackState, setMfaBackState] = useState<string>('login')\n const [showMethods, setShowMethods] = useState(true)\n const client = useGuardAuthClient()\n const { t } = useTranslation()\n\n const __codePaser = (code: number, msg?: string) => {\n const action = codeMap[code]\n\n if (code === 200) {\n return (data: any) => {\n events?.onLogin?.(data, client!) // 登录成功\n }\n }\n\n if (!action) {\n return (data: any) => {\n console.error('not catch code', code)\n // message.error(data.message)\n }\n }\n\n // 解析成功\n if (action?.action === 'changeModule') {\n let m = action.module ? action.module : GuardModuleType.ERROR\n let init = action.initData ? action.initData : {}\n return (initData?: any) => changeModule?.(m, { ...initData, init })\n }\n if (action?.action === 'insideFix') {\n return () => {}\n }\n\n if (action?.action === 'message') {\n return (data: any) => {\n data.message ? message.error(data.message) : message.error(msg)\n }\n }\n\n // 最终结果\n return () => {\n console.error('last action at mfaview')\n }\n }\n\n const mfaLogin = (code: any, data: any, message?: string) => {\n const callback = __codePaser?.(code, message)\n\n if (!data) {\n data = {}\n }\n\n data.__message = message\n\n callback?.(data)\n }\n\n const renderBack = useMemo(() => {\n if (currentMethod === MFAType.FACE && mfaBackState === 'check') {\n return (\n <BackCustom\n onBack={() => {\n setCurrentMethod(\n initData.applicationMfa.find(\n (item) => item.mfaPolicy === MFAType.FACE\n )\n ? MFAType.FACE\n : initData.applicationMfa?.sort((a, b) => a.sort - b.sort)[0]\n .mfaPolicy\n )\n setShowMethods(true)\n setMfaBackState('login')\n }}\n >\n {t('common.backToVerify')}\n </BackCustom>\n )\n }\n\n return <BackLogin />\n }, [currentMethod, initData.applicationMfa, mfaBackState, t])\n\n return (\n // 返回验证页和返回登录页 需要获取内部 face 模式下的状态\n <MFABackStateContext.Provider\n value={{ setMfaBackState: setMfaBackState, mfaBackState: mfaBackState }}\n >\n <div className=\"g2-view-container g2-view-mfa\">\n {renderBack}\n <div className=\"g2-mfa-content\">\n {ComponentsMapping[currentMethod]({\n config: config,\n initData: initData,\n changeModule: changeModule,\n mfaLogin: mfaLogin,\n setShowMethods: setShowMethods,\n })}\n </div>\n {showMethods && (\n <MFAMethods\n method={currentMethod}\n onChangeMethod={(type) => {\n setCurrentMethod(type)\n }}\n />\n )}\n </div>\n </MFABackStateContext.Provider>\n )\n}\n","import React, { useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Form, Input, Modal, Progress, Select, Upload } from 'antd'\nimport SubmitButton from '../../SubmitButton'\nimport { PlusOutlined } from '@ant-design/icons'\nimport { UploadFile } from 'antd/lib/upload/interface'\nimport { useGuardHttp } from '../../_utils/guardHttp'\nimport { fieldRequiredRule, validate } from '../../_utils'\nimport { IconFont } from '../../IconFont'\nimport { useGuardInitData } from '../../_utils/context'\ninterface describeQuestionsProps {\n appId: string\n host: string\n onSuccess: any\n}\n\nexport const DescribeQuestions = (props: describeQuestionsProps) => {\n const { t } = useTranslation()\n const initData = useGuardInitData<{ identify: string }>()\n // 不清楚为什么放出去之后,i18n 的结果全是 undefeated\n const typeProblemMap: any = {\n 0: [\n t('common.problem.noVerifyTip.tip'),\n t('common.problem.noVerifyTip.type1'),\n t('common.problem.noVerifyTip.type2'),\n t('common.problem.noVerifyTip.type3'),\n ],\n 1: [\n t('common.problem.noLoginTips'),\n t('common.problem.noLoginTip.type1'),\n t('common.problem.noLoginTip.type2'),\n ],\n 2: [\n t('common.problem.noRegisterTip.tip'),\n t('common.problem.noRegisterTip.type1'),\n t('common.problem.noRegisterTip.type2'),\n t('common.problem.noRegisterTip.type3'),\n ],\n 3: [\n t('common.problem.noAccountTip.tip'),\n t('common.problem.noAccountTip.type1'),\n t('common.problem.noAccountTip.type2'),\n ],\n 4: [\n t('common.problem.noResetPassTip.tip'),\n t('common.problem.noResetPassTip.type1'),\n t('common.problem.noResetPassTip.type2'),\n ],\n 5: [t('common.problem.lockedTips')],\n 6: [],\n }\n\n const typeOperations = [\n {\n label: t('common.problem.noVerify'),\n value: 0,\n },\n {\n label: t('common.problem.noLogin'),\n value: 1,\n },\n {\n label: t('common.problem.noRegister'),\n value: 2,\n },\n {\n label: t('common.problem.noAccount'),\n value: 3,\n },\n {\n label: t('common.problem.noResetPass'),\n value: 4,\n },\n {\n label: t('common.problem.locked'),\n value: 5,\n },\n {\n label: t('common.problem.other'),\n value: 6,\n },\n ]\n\n const [form] = Form.useForm()\n const { post } = useGuardHttp()\n const [uploadUrl, setUploadUrl] = useState([])\n const [previewVisible, setPreviewVisible] = useState(false)\n const [previewImage, setPreviewImage] = useState()\n const [fileList, setFileList] = useState<UploadFile<any>[]>([])\n const [typeProblem, setTypeProblem] = useState(0)\n const submitButtonRef = useRef<any>(null)\n const textMap = typeProblemMap[typeProblem]\n\n const onFinish = (values: any) => {\n submitButtonRef?.current?.onSpin(true)\n const params = {\n type: typeProblem,\n description: values.description,\n phone: values.identify,\n images: uploadUrl,\n appId: props.appId,\n }\n // TODO 暂不支持国际化短信参数\n let context = post('/api/v2/feedback', params)\n context.then((res) => {\n if (res.code === 200) {\n submitButtonRef?.current?.onSpin(false)\n props.onSuccess()\n }\n })\n }\n\n const handlePreview = async (file: any) => {\n let url\n if (file.status === 'error' || file.response) {\n url = await new Promise((resolve) => {\n const reader = new FileReader()\n reader.readAsDataURL(file.originFileObj)\n reader.onload = () => resolve(reader.result)\n })\n } else {\n url = file.response.data.url\n }\n // setPreviewImage(file.url);\n // file 没有 url 属性,需要改成下面的用法\n // let url = file.response.data.url\n setPreviewImage(url)\n setPreviewVisible(true)\n }\n\n return (\n <div className=\"authing-g2-describe-questions authing-g2-form-required-item-icon-after\">\n <Form\n name=\"resetPassword\"\n layout=\"vertical\"\n form={form}\n onFinish={onFinish}\n onFinishFailed={() => {\n submitButtonRef?.current?.onError()\n }}\n autoComplete=\"off\"\n >\n <Form.Item\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form\"\n name=\"identify\"\n label={t('common.problem.form.phone')}\n validateFirst={true}\n initialValue={initData?.identify}\n rules={[\n ...fieldRequiredRule(t('common.problem.form.phone')),\n {\n validator: async (_, value) => {\n if (!value) {\n return\n }\n if (validate('email', value) || validate('phone', value)) {\n return\n } else {\n throw new Error(t('login.inputCorrectPhoneOrEmail'))\n }\n },\n },\n ]}\n >\n <Input\n className=\"authing-g2-input\"\n autoComplete=\"off\"\n size=\"large\"\n placeholder={t('login.inputPhoneOrEmail')}\n prefix={\n <IconFont\n type=\"authing-a-user-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </Form.Item>\n <Form.Item\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form \"\n label={t('common.problem.form.question')}\n name=\"questionPicker\"\n initialValue={typeProblem}\n >\n <Select\n className=\"authing-g2-select\"\n onChange={(value: number) => {\n setTypeProblem(value)\n }}\n >\n {typeOperations?.map(({ value, label }) => (\n <Select.Option\n key={value}\n value={value}\n className={`authing-g2-question-option ${\n typeProblem === value\n ? 'authing-g2-question-option-active'\n : ''\n }`}\n >\n {label}\n </Select.Option>\n ))}\n </Select>\n </Form.Item>\n <div className=\"authing-g2-input-form\">\n {textMap?.map((item: any, index: any) => (\n <div key={index}>{item}</div>\n ))}\n </div>\n\n <Form.Item\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form\"\n name=\"description\"\n label={t('common.problem.form.questionDescript')}\n >\n <Input.TextArea\n className=\"authing-g2-questions-textarea\"\n maxLength={200}\n showCount\n rows={4}\n style={{\n marginBottom: 10,\n }}\n />\n </Form.Item>\n\n <div className=\"authing-g2-input-form\">\n <div className=\"label-title\">\n {t('common.problem.form.questionClip')}\n </div>\n <div className=\"g2-questions\">\n <Upload\n action={`${props.host}/api/v2/upload?folder=photos`}\n listType=\"picture-card\"\n accept=\"image/png, image/jpeg, image/jpg\"\n className=\"authing-g2-questions-upload-self\"\n fileList={fileList}\n onPreview={handlePreview}\n onChange={(e) => {\n setFileList(e.fileList)\n const imgUrl: any = e.fileList.map((item: any) => {\n const response = item.response\n return response?.data.url\n })\n setUploadUrl(imgUrl)\n }}\n beforeUpload={(file) => {\n if (\n ['image/png', 'image/jpeg', 'image/jpg'].includes(file.type)\n ) {\n return true\n }\n return Promise.reject(file)\n }}\n itemRender={(n, file) => {\n return (\n <>\n {file.status === 'uploading' ? (\n <div\n style={{\n padding: 6,\n borderRadius: 2,\n border: '1px solid #d9d9d9',\n }}\n >\n <Progress\n showInfo={false}\n style={{\n margin: 1,\n }}\n width={40}\n type=\"circle\"\n percent={file.percent}\n />\n </div>\n ) : (\n n\n )}\n </>\n )\n }}\n >\n {fileList.length < 4 && <PlusOutlined />}\n </Upload>\n </div>\n </div>\n\n <Form.Item className=\"authing-g2-input-form submit-form\">\n <SubmitButton\n className=\"forget-password\"\n text={t('common.problem.form.submit')}\n ref={submitButtonRef}\n />\n </Form.Item>\n </Form>\n\n <Modal\n visible={previewVisible}\n title={null}\n footer={null}\n onCancel={() => setPreviewVisible(false)}\n >\n <img alt=\"example\" style={{ width: '100%' }} src={previewImage} />\n </Modal>\n </div>\n )\n}\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { ImagePro } from '../ImagePro'\nimport { DescribeQuestions } from './core/describeQuestions'\nimport { GuardModuleType } from '../Guard/module'\nimport {\n useGuardAppId,\n useGuardFinallyConfig,\n useGuardModule,\n} from '../_utils/context'\n\nexport const GuardNeedHelpView = (props: any) => {\n const { t } = useTranslation()\n\n const appId = useGuardAppId()\n\n const { changeModule } = useGuardModule()\n\n const config = useGuardFinallyConfig()\n\n const onSuccess = () => {\n changeModule?.(GuardModuleType.SUBMIT_SUCCESS)\n }\n\n return (\n <div className=\"g2-view-container g2-need-help\">\n <div className=\"g2-view-header\">\n <ImagePro\n src={config.logo!}\n size={48}\n borderRadius={4}\n alt=\"\"\n className=\"icon\"\n />\n\n <div className=\"title\">{t('common.problem.title')}</div>\n </div>\n <div className=\"g2-view-tabs\">\n <DescribeQuestions\n appId={appId}\n host={config.host}\n onSuccess={onSuccess}\n />\n </div>\n <div className=\"g2-tips-line \">\n <div className=\"back-to-login\">\n <span className=\"gray\">{t('common.noQuestions')}</span>\n <span\n className=\"link-like\"\n onClick={() => changeModule?.(GuardModuleType.LOGIN)}\n >\n {t('common.goToLogin')}\n </span>\n </div>\n </div>\n </div>\n )\n}\n","import { Checkbox, Form, Typography } from 'antd'\nimport React, { useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport SubmitButton from '../../SubmitButton'\nimport { useGuardIsAuthFlow } from '../../_utils/context'\nimport { authFlow, TotpRecoveryCodeBusinessAction } from '../businessRequest'\n\nconst { Paragraph } = Typography\n\nexport const SaveCode: React.FC<{\n secret: string\n onBind: any\n}> = (props) => {\n const { secret, onBind } = props\n\n const { t } = useTranslation()\n\n const [form] = Form.useForm()\n\n const isAuthFlow = useGuardIsAuthFlow()\n\n const submitButtonRef = useRef<any>(null)\n\n const bindSuccess = async () => {\n submitButtonRef.current?.onSpin(true)\n\n if (isAuthFlow) {\n const { isFlowEnd, data, onGuardHandling } = await authFlow(\n TotpRecoveryCodeBusinessAction.ConfirmTotpRecoveryCode,\n {}\n )\n\n submitButtonRef.current?.onSpin(false)\n if (isFlowEnd) {\n onBind(data)\n } else {\n submitButtonRef.current?.onError()\n onGuardHandling?.()\n }\n } else {\n try {\n await form.validateFields()\n onBind()\n } catch (e: any) {\n submitButtonRef.current?.onError()\n } finally {\n submitButtonRef.current?.onSpin(false)\n }\n }\n }\n\n return (\n <>\n <p className=\"authing-g2-mfa-title\">{t('common.useRecoverCode')}</p>\n <p className=\"authing-g2-mfa-tips\">{t('common.totpGenerateCode')}</p>\n\n <div className=\"g2-mfa-bindTotp-copySecret\">\n <Paragraph copyable>{secret}</Paragraph>\n </div>\n\n <Form\n form={form}\n onFinish={bindSuccess}\n style={{ width: '100%' }}\n onFinishFailed={() => submitButtonRef.current?.onError()}\n >\n <Form.Item\n className=\"authing-g2-input-form g2-mfa-totp-recoveryCode-input\"\n name=\"remember\"\n rules={[\n {\n validator: (_, value) => {\n if (!value) {\n return Promise.reject(t('common.pleaseRecordKey'))\n }\n return Promise.resolve()\n },\n },\n ]}\n valuePropName=\"checked\"\n >\n <Checkbox className=\"g2-mfa-bindTotp-secretSave\">\n {t('login.rememberedSecret')}\n </Checkbox>\n </Form.Item>\n\n <SubmitButton text={t('common.confirm')} ref={submitButtonRef} />\n </Form>\n </>\n )\n}\n","import { getGuardHttp, useGuardHttp } from '../_utils/guardHttp'\nexport enum IdentityBindingBusinessAction {\n PhoneCode = 'phone-code',\n EmailCode = 'emial-code',\n Password = 'password',\n}\nexport interface PhoneCodeParams {\n phone: string\n code: string\n phoneCountryCode?: string\n}\nexport interface EmailCodeParams {\n email: string\n code: string\n}\nexport interface PasswordParams {\n account: string\n password: string\n captchaCode: string\n}\n\nexport enum IdentityBindingAction {\n CreateUser = 'create-federation-account',\n BindByPassword = 'bind-identity-by-password',\n BindByPhoneCode = 'bind-identity-by-phone-code',\n BindByEmailCode = 'bind-identity-by-email-code',\n}\n\nexport const PhoneCode = async (params: PhoneCodeParams) => {\n // const { phone, code, phoneCountryCode } = params\n\n const { post } = getGuardHttp()\n\n return await post('/interaction/federation/binding/byPhoneCode', params)\n}\n\nexport const EmailCode = async (params: EmailCodeParams) => {\n const { email, code } = params\n\n const { post } = getGuardHttp()\n\n return await post('/interaction/federation/binding/byEmailCode', {\n email,\n code,\n })\n}\n\nexport const Password = async (params: PasswordParams) => {\n const { account, password } = params\n\n const { post } = getGuardHttp()\n\n return await post('/interaction/federation/binding/byAccount', {\n account,\n password,\n })\n}\n\nexport const useIdentityBindingBusinessRequest = () => {\n const { authFlow } = useGuardHttp()\n\n const request = {\n [IdentityBindingBusinessAction.PhoneCode]: (params: PhoneCodeParams) => {\n return authFlow(IdentityBindingAction.BindByPhoneCode, params)\n },\n [IdentityBindingBusinessAction.EmailCode]: (params: EmailCodeParams) => {\n return authFlow(IdentityBindingAction.BindByEmailCode, params)\n },\n [IdentityBindingBusinessAction.Password]: (params: PasswordParams) => {\n return authFlow(IdentityBindingAction.BindByPassword, params)\n },\n }\n\n return request\n}\n","import { Form, Input } from 'antd'\nimport React, { useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { User } from '../..'\nimport { IconFont } from '../../IconFont'\nimport SubmitButton from '../../SubmitButton'\nimport { useGuardIsAuthFlow } from '../../_utils/context'\nimport { useGuardHttp } from '../../_utils/guardHttp'\nimport { authFlow, TotpRecoveryCodeBusinessAction } from '../businessRequest'\n\nexport interface UseCodeProps {\n mfaToken: string\n onSubmit: (recoveryCode: string, user?: User) => void\n}\n\nexport const UseCode: React.FC<UseCodeProps> = ({ mfaToken, onSubmit }) => {\n const { t } = useTranslation()\n\n const isAuthFlow = useGuardIsAuthFlow()\n\n const [form] = Form.useForm()\n\n const { post } = useGuardHttp()\n\n let submitButtonRef = useRef<any>(null)\n\n const onFinish = async (values: any) => {\n submitButtonRef.current?.onSpin(true)\n\n if (isAuthFlow) {\n const { data, onGuardHandling, statusCode } = await authFlow<{\n recoveryCode: string\n }>(TotpRecoveryCodeBusinessAction.RecoveryTotp, {\n recoveryCode: values.recoveryCode,\n })\n\n submitButtonRef.current?.onSpin(false)\n\n if (statusCode === 200) {\n onSubmit(data!.recoveryCode)\n } else {\n submitButtonRef.current?.onError()\n\n onGuardHandling?.()\n }\n } else {\n try {\n const res = await post(\n '/api/v2/mfa/totp/recovery',\n {\n recoveryCode: form.getFieldValue('recoveryCode'),\n },\n {\n headers: {\n authorization: mfaToken,\n },\n }\n )\n if (res.code === 200) {\n // @ts-ignore\n onSubmit(res.recoveryCode, res.data)\n } else {\n // message.error(res.message)\n submitButtonRef.current?.onError()\n res.onGuardHandling?.()\n }\n } catch (error) {\n // TODO: handle error\n submitButtonRef.current?.onError()\n } finally {\n submitButtonRef.current?.onSpin(false)\n }\n }\n }\n\n return (\n <>\n <p className=\"authing-g2-mfa-title\">{t('common.useRecoverCode')}</p>\n <p className=\"authing-g2-mfa-tips\">{t('login.mfaAfterReset')}</p>\n <Form\n form={form}\n onFinish={onFinish}\n onFinishFailed={() => submitButtonRef.current.onError()}\n >\n <Form.Item\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form\"\n name=\"recoveryCode\"\n rules={[\n {\n required: true,\n message: t('login.inputRecoverCode'),\n },\n ]}\n >\n <Input\n className=\"authing-g2-input\"\n autoComplete=\"off\"\n size=\"large\"\n placeholder={t('login.inputRecoverCode')}\n prefix={\n <IconFont\n type=\"authing-a-lock-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </Form.Item>\n\n <Form.Item className=\"authing-g2-input-form submit-form\">\n <SubmitButton text={t('common.sure')} ref={submitButtonRef} />\n </Form.Item>\n </Form>\n </>\n )\n}\n","import React, { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { GuardModuleType, User } from '..'\nimport { BackCustom } from '../Back'\nimport { useGuardAuthClient } from '../Guard/authClient'\nimport { GuardMFAInitData, MFAType } from '../MFA/interface'\nimport {\n useGuardEvents,\n useGuardInitData,\n useGuardIsAuthFlow,\n useGuardModule,\n} from '../_utils/context'\nimport { SaveCode } from './core/saveCode'\nimport { UseCode } from './core/useCode'\nimport './style.less'\n\nexport const RecoveryCode: React.FC = () => {\n const { changeModule } = useGuardModule()\n\n const initData = useGuardInitData<GuardMFAInitData>()\n\n const events = useGuardEvents()\n\n const { t } = useTranslation()\n\n const [user, setUser] = useState<User>()\n\n const [code, setCode] = useState<string>()\n\n const authClient = useGuardAuthClient()\n\n const onBind = () => {\n if (user) events?.onLogin?.(user, authClient)\n }\n\n const renderBack = useMemo(() => {\n return (\n <BackCustom\n onBack={() =>\n changeModule?.(GuardModuleType.MFA, {\n ...initData,\n current: MFAType.TOTP,\n })\n }\n >\n {t('common.backToVerify')}\n </BackCustom>\n )\n }, [changeModule, initData, t])\n\n return (\n <div className=\"g2-view-container g2-mfa-recovery-code\">\n {renderBack}\n <div className=\"g2-mfa-content\">\n {user && code ? (\n <SaveCode secret={code} onBind={onBind} />\n ) : (\n <UseCode\n mfaToken={initData.mfaToken}\n onSubmit={(code, user) => {\n setUser(user)\n setCode(code)\n }}\n />\n )}\n </div>\n </div>\n )\n}\n\nexport const RecoveryCodeAuthFlow: React.FC = () => {\n const { changeModule } = useGuardModule()\n\n const initData = useGuardInitData<GuardMFAInitData>()\n\n const [recoveryCode, setRecoveryCode] = useState<string>()\n\n const events = useGuardEvents()\n\n const authClient = useGuardAuthClient()\n\n const onBind = (user: User) => {\n if (user) events?.onLogin?.(user, authClient)\n }\n\n const { t } = useTranslation()\n\n const renderBack = useMemo(() => {\n return (\n <BackCustom\n onBack={() =>\n changeModule?.(GuardModuleType.MFA, {\n ...initData,\n current: MFAType.TOTP,\n })\n }\n >\n {t('common.backToVerify')}\n </BackCustom>\n )\n }, [changeModule, initData, t])\n\n return (\n <div className=\"g2-view-container g2-mfa-recovery-code\">\n {renderBack}\n <div className=\"g2-mfa-content\">\n {recoveryCode ? (\n <SaveCode secret={recoveryCode} onBind={onBind} />\n ) : (\n <UseCode\n mfaToken={initData.mfaToken}\n onSubmit={(code) => {\n setRecoveryCode(code)\n }}\n />\n )}\n </div>\n </div>\n )\n}\n\nexport const GuardRecoveryCodeView: React.FC = () => {\n const isAuthFlow = useGuardIsAuthFlow()\n\n return <>{isAuthFlow ? <RecoveryCodeAuthFlow /> : <RecoveryCode />}</>\n}\n","import { useGuardPublicConfig } from '../_utils/context'\nimport omit from 'lodash/omit'\n// 是否进行注册信息补全\nexport const useIsChangeComplete = (currentMode: 'phone' | 'email') => {\n const { extendsFields } = useGuardPublicConfig()\n\n const { complateFiledsPlace } = useGuardPublicConfig()\n\n // 开关控制 如果没有 register 就不开启了\n if (!complateFiledsPlace.includes('register')) {\n return false\n }\n // 排除掉已有的字段\n if (\n !Boolean(omit(extendsFields, currentMode)) ||\n extendsFields.length === 0\n ) {\n // 为空就不补了~\n return false\n }\n\n // 字段唯一 切 与注册的方式相同 就不补了\n if (extendsFields.length === 1 && extendsFields[0].name === currentMode) {\n return false\n }\n\n // 其他的补\n return true\n}\n","import { Form, Input, message } from 'antd'\nimport { RegisterMethods } from 'authing-js-sdk'\nimport React, { useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useAsyncFn } from 'react-use'\nimport { Agreement, ApplicationConfig } from '../../AuthingGuard/api'\nimport { useGuardAuthClient } from '../../Guard/authClient'\nimport { getDeviceName } from '../../_utils'\nimport { Agreements } from '../components/Agreements'\nimport SubmitButton from '../../SubmitButton'\nimport CustomFormItem from '../../ValidatorRules'\nimport { IconFont } from '../../IconFont'\nimport { InputPassword } from '../../InputPassword'\nimport { useIsChangeComplete } from '../utils'\nimport { useGuardModule } from '../../_utils/context'\nimport { GuardModuleType } from '../../Guard'\nimport { useMediaSize } from '../../_utils/hooks'\nimport { ApiCode } from '../../_utils/responseManagement/interface'\nimport { usePasswordErrorText } from '../../_utils/useErrorText'\n\nexport interface RegisterWithEmailProps {\n // onRegister: Function\n onRegisterSuccess: Function\n onRegisterFailed: Function\n onBeforeRegister?: Function\n publicConfig?: ApplicationConfig\n agreements: Agreement[]\n registeContext?: any\n}\n\nexport const RegisterWithEmail: React.FC<RegisterWithEmailProps> = ({\n onRegisterSuccess,\n onRegisterFailed,\n onBeforeRegister,\n agreements,\n registeContext,\n}) => {\n const { t } = useTranslation()\n const submitButtonRef = useRef<any>(null)\n const { isPhoneMedia } = useMediaSize()\n const authClient = useGuardAuthClient()\n const [form] = Form.useForm()\n\n const isChangeComplete = useIsChangeComplete('email')\n\n const { changeModule } = useGuardModule()\n\n const [acceptedAgreements, setAcceptedAgreements] = useState(false)\n const [validated, setValidated] = useState(false)\n const {\n getPassWordUnsafeText,\n setPasswordErrorTextShow,\n } = usePasswordErrorText()\n const [, onFinish] = useAsyncFn(\n async (values: any) => {\n submitButtonRef.current?.onSpin(true)\n\n if (onBeforeRegister) {\n try {\n const canRegister = await onBeforeRegister(\n {\n type: RegisterMethods.Phone,\n data: {\n phone: values.phone,\n password: values.password,\n code: values.code,\n },\n },\n authClient\n )\n if (!canRegister) {\n submitButtonRef.current?.onSpin(false)\n return\n }\n } catch (e: any) {\n if (typeof e === 'string') {\n message.error(e)\n } else {\n message.error(e?.message)\n }\n submitButtonRef.current?.onSpin(false)\n return\n }\n }\n\n try {\n await form.validateFields()\n setValidated(true)\n\n if (agreements?.length && !acceptedAgreements) {\n submitButtonRef.current.onError()\n return\n }\n const { email, password } = values\n\n const context = registeContext ?? {}\n\n // 注册使用的详情信息\n const registerContent = {\n email,\n password,\n profile: {\n browser:\n typeof navigator !== 'undefined' ? navigator.userAgent : null,\n device: getDeviceName(),\n },\n options: {\n context,\n generateToken: true,\n // params: getUserRegisterParams(),\n },\n }\n\n // onRegisterSuccess 注册成功后需要回到对应的登录页面\n const onRegisterSuccessIntercept = (user: any) => {\n onRegisterSuccess(user, {\n registerFrom: RegisterMethods.Email,\n account: email,\n })\n }\n // 看看是否要跳转到 信息补全\n if (isChangeComplete) {\n changeModule?.(GuardModuleType.REGISTER_COMPLETE_INFO, {\n businessRequestName: 'registerByEmail',\n content: registerContent,\n onRegisterSuccess: onRegisterSuccessIntercept,\n onRegisterFailed,\n })\n\n return\n }\n\n // 注册\n const user = await authClient.registerByEmail(\n registerContent.email,\n registerContent.password,\n registerContent.profile,\n registerContent.options\n )\n\n submitButtonRef.current?.onSpin(false)\n onRegisterSuccessIntercept(user)\n } catch (error: any) {\n const { message: errorMessage, code, data } = error\n if (code === ApiCode.UNSAFE_PASSWORD_TIP) {\n setPasswordErrorTextShow(true)\n }\n submitButtonRef.current.onError()\n message.error(errorMessage)\n onRegisterFailed(code, data, errorMessage)\n } finally {\n submitButtonRef.current?.onSpin(false)\n }\n },\n [form, acceptedAgreements],\n { loading: false }\n )\n\n return (\n <div className=\"authing-g2-register-email\">\n <Form\n form={form}\n name=\"emailRegister\"\n autoComplete=\"off\"\n onSubmitCapture={() => submitButtonRef.current.onSpin(true)}\n onFinish={(values: any) => {\n onFinish(values)\n }}\n onFinishFailed={() => submitButtonRef.current.onError()}\n onValuesChange={(_, values) => {\n if (values['password'] && values['new-password']) {\n // password changed verify new password\n form.validateFields(['new-password'])\n }\n }}\n >\n <CustomFormItem.Email\n key=\"email\"\n name=\"email\"\n className=\"authing-g2-input-form\"\n validateFirst={true}\n form={form}\n checkRepeat={true}\n required={true}\n >\n <Input\n autoFocus={!isPhoneMedia}\n className=\"authing-g2-input\"\n autoComplete=\"off\"\n size=\"large\"\n placeholder={t('login.inputEmail')}\n // prefix={<UserOutlined style={{ color: '#878A95' }} />}\n prefix={\n <IconFont\n type=\"authing-a-user-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </CustomFormItem.Email>\n <CustomFormItem.Password\n key=\"password\"\n name=\"password\"\n className=\"authing-g2-input-form\"\n validateFirst={true}\n >\n <InputPassword\n className=\"authing-g2-input\"\n size=\"large\"\n placeholder={t('login.inputPwd')}\n prefix={\n <IconFont\n type=\"authing-a-lock-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </CustomFormItem.Password>\n <CustomFormItem.Password\n key=\"new-password\"\n name=\"new-password\"\n fieldRequiredRuleMessage={t('common.repeatPasswordDoc')}\n rules={[\n {\n validateTrigger: 'onBlur',\n validator: (_, value) => {\n if (value !== form.getFieldValue('password') && value) {\n return Promise.reject(t('common.repeatPasswordDoc'))\n } else {\n return Promise.resolve()\n }\n },\n },\n ]}\n className=\"authing-g2-input-form\"\n validateFirst={true}\n >\n <InputPassword\n className=\"authing-g2-input\"\n size=\"large\"\n placeholder={t('common.passwordAgain')}\n // prefix={<LockOutlined style={{ color: '#878A95' }} />}\n prefix={\n <IconFont\n type=\"authing-a-lock-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </CustomFormItem.Password>\n {Boolean(agreements?.length) && (\n <Agreements\n onChange={setAcceptedAgreements}\n agreements={agreements}\n showError={validated}\n />\n )}\n {getPassWordUnsafeText()}\n <Form.Item>\n <SubmitButton\n // disabled={\n // !!agreements.find((item) => item.required && !acceptedAgreements)\n // }\n text={t('common.register')}\n ref={submitButtonRef}\n />\n </Form.Item>\n </Form>\n </div>\n )\n}\n","import { Form, message } from 'antd'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Agreement, ApplicationConfig } from '../../AuthingGuard/api'\nimport { fieldRequiredRule, getDeviceName, validate } from '../../_utils'\nimport { Agreements } from '../components/Agreements'\nimport SubmitButton from '../../SubmitButton'\n\nimport { IconFont } from '../../IconFont'\nimport { SceneType } from 'authing-js-sdk'\nimport { SendCodeByPhone } from '../../SendCode/SendCodeByPhone'\nimport { InputInternationPhone } from '../../Login/core/withVerifyCode/InputInternationPhone'\nimport { parsePhone, useMediaSize } from '../../_utils/hooks'\nimport { useIsChangeComplete } from '../utils'\nimport { useGuardFinallyConfig, useGuardModule } from '../../_utils/context'\nimport { GuardModuleType } from '../../Guard'\nimport { useGuardHttp } from '../../_utils/guardHttp'\nimport { useGuardAuthClient } from '../../Guard/authClient'\nimport { FormItemIdentify } from '../../Login/core/withVerifyCode/FormItemIdentify'\nimport { InputIdentify } from '../../Login/core/withVerifyCode/inputIdentify'\nimport { EmailScene, InputMethod, RegisterMethods } from '../..'\nimport { SendCodeByEmail } from '../../SendCode/SendCodeByEmail'\n\nexport interface RegisterWithCodeProps {\n // onRegister: Function\n onRegisterSuccess: Function\n onRegisterFailed: Function\n onBeforeRegister?: Function\n agreements: Agreement[]\n publicConfig?: ApplicationConfig\n registeContext?: any\n methods: any[]\n}\n\nexport const RegisterWithCode: React.FC<RegisterWithCodeProps> = ({\n onRegisterSuccess,\n onRegisterFailed,\n onBeforeRegister,\n agreements,\n publicConfig,\n registeContext,\n methods = [],\n}) => {\n const { t } = useTranslation()\n\n const isPhoneChangeComplete = useIsChangeComplete('phone')\n\n const isEmailChangeComplete = useIsChangeComplete('email')\n\n const config = useGuardFinallyConfig()\n\n const { isPhoneMedia } = useMediaSize()\n\n const authClient = useGuardAuthClient()\n\n const { changeModule } = useGuardModule()\n\n const { post } = useGuardHttp()\n\n const submitButtonRef = useRef<any>(null)\n\n const [form] = Form.useForm()\n\n const [acceptedAgreements, setAcceptedAgreements] = useState(false)\n\n const [validated, setValidated] = useState(false)\n\n // 区号 默认\n const [areaCode, setAreaCode] = useState(\n publicConfig?.internationalSmsConfig?.defaultISOType || 'CN'\n )\n\n const verifyCodeLength = publicConfig?.verifyCodeLength ?? 4\n\n const [currentMethod, setCurrentMethod] = useState(methods[0])\n\n const [identify, setIdentify] = useState('')\n // 是否仅开启国际化短信\n const [isOnlyInternationSms, setInternationSms] = useState(false)\n // 是否开启了国际化短信功能\n const isInternationSms =\n publicConfig?.internationalSmsConfig?.enabled || false\n\n useEffect(() => {\n // 开启国际化配置且登录方式为手机号码时\n if (\n methods.length === 1 &&\n methods[0] === 'phone-code' &&\n publicConfig &&\n publicConfig.internationalSmsConfig?.enabled\n ) {\n setInternationSms(true)\n }\n }, [methods, publicConfig])\n\n const registerByPhoneCode = useCallback(\n async (values: any) => {\n const needPassword = config.passwordLoginMethods?.includes(\n 'phone-password'\n )\n\n submitButtonRef.current?.onSpin(true)\n\n values.phone = values.identify\n if (onBeforeRegister) {\n try {\n const canRegister = await onBeforeRegister(\n {\n type: RegisterMethods.Phone,\n data: {\n phone: values.phone,\n password: values.password,\n code: values.code,\n },\n },\n authClient\n )\n if (!canRegister) {\n submitButtonRef.current.onSpin(false)\n return\n }\n } catch (e: any) {\n if (typeof e === 'string') {\n message.error(e)\n } else {\n message.error(e?.message)\n }\n submitButtonRef.current.onSpin(false)\n return\n }\n }\n try {\n await form.validateFields()\n\n setValidated(true)\n\n if (agreements?.length && !acceptedAgreements) {\n // message.error(t('common.registerProtocolTips'))\n submitButtonRef.current.onError()\n // submitButtonRef.current.onSpin(false)\n return\n }\n\n const { phone, password = '', code } = values\n\n const context = registeContext ?? {}\n\n const { phoneNumber, countryCode: phoneCountryCode } = parsePhone(\n isInternationSms,\n phone,\n areaCode\n )\n\n // 注册\n const options: any = {\n context,\n generateToken: true,\n }\n\n if (isInternationSms) {\n options.phoneCountryCode = phoneCountryCode\n }\n\n const registerContent = {\n phone: phoneNumber,\n code,\n password,\n profile: {\n browser:\n typeof navigator !== 'undefined' ? navigator.userAgent : null,\n device: getDeviceName(),\n },\n options,\n }\n // onRegisterSuccess 注册成功后需要回到对应的登录页面\n const onRegisterSuccessIntercept = (user: any) => {\n onRegisterSuccess(user, {\n registerFrom: RegisterMethods.Phone,\n account: isInternationSms ? '' : phoneNumber,\n })\n }\n\n if (needPassword) {\n // 判断验证码是否正确\n const {\n statusCode: checkCode,\n data: { valid, message: checkMessage },\n } = await post('/api/v2/sms/preCheckCode', {\n phone: phoneNumber,\n phoneCode: code,\n phoneCountryCode,\n })\n // 验证码校验通过 进入密码补全流程\n if (checkCode === 200 && valid) {\n changeModule?.(GuardModuleType.REGISTER_PASSWORD, {\n businessRequestName: 'registerByPhoneCode',\n content: registerContent,\n isChangeComplete: isPhoneChangeComplete,\n onRegisterSuccess: onRegisterSuccessIntercept,\n onRegisterFailed,\n })\n return\n } else {\n submitButtonRef.current.onError()\n message.error(checkMessage)\n return\n }\n } else {\n // 看看是否要跳转到 信息补全\n if (isPhoneChangeComplete) {\n // 判断验证码是否正确\n const {\n statusCode: checkCode,\n data: { valid, message: checkMessage },\n } = await post('/api/v2/sms/preCheckCode', {\n phone: phoneNumber,\n phoneCode: code,\n phoneCountryCode,\n })\n\n if (checkCode === 200 && valid) {\n changeModule?.(GuardModuleType.REGISTER_COMPLETE_INFO, {\n businessRequestName: 'registerByPhoneCode',\n content: registerContent,\n onRegisterSuccess: onRegisterSuccessIntercept,\n onRegisterFailed,\n })\n return\n } else {\n submitButtonRef.current.onError()\n message.error(checkMessage)\n return\n }\n }\n\n const user = await authClient.registerByPhoneCode(\n phoneNumber,\n code,\n password,\n {\n browser:\n typeof navigator !== 'undefined' ? navigator.userAgent : null,\n device: getDeviceName(),\n },\n options\n )\n\n submitButtonRef.current?.onSpin(false)\n onRegisterSuccessIntercept(user)\n }\n } catch (error: any) {\n const { message: errorMessage, code, data } = error\n submitButtonRef.current.onError()\n message.error(errorMessage)\n !needPassword && onRegisterFailed(code, data, errorMessage)\n } finally {\n submitButtonRef.current?.onSpin(false)\n }\n },\n [\n config.passwordLoginMethods,\n onBeforeRegister,\n authClient,\n form,\n agreements?.length,\n acceptedAgreements,\n registeContext,\n isInternationSms,\n areaCode,\n post,\n changeModule,\n isPhoneChangeComplete,\n onRegisterSuccess,\n onRegisterFailed,\n ]\n )\n\n const registerByEmailCode = useCallback(\n async (values: any) => {\n const needPassword = config.passwordLoginMethods?.includes(\n 'email-password'\n )\n submitButtonRef.current.onSpin(true)\n values.email = values.identify\n if (onBeforeRegister) {\n try {\n const canRegister = await onBeforeRegister(\n {\n type: RegisterMethods.Phone,\n data: {\n phone: values.phone,\n password: values.password,\n code: values.code,\n },\n },\n authClient\n )\n if (!canRegister) {\n submitButtonRef.current.onSpin(false)\n return\n }\n } catch (e: any) {\n if (typeof e === 'string') {\n message.error(e)\n } else {\n message.error(e?.message)\n }\n submitButtonRef.current.onSpin(false)\n return\n }\n }\n\n try {\n await form.validateFields()\n setValidated(true)\n\n if (agreements?.length && !acceptedAgreements) {\n submitButtonRef.current.onError()\n return\n }\n const { email, code } = values\n\n const context = registeContext ?? {}\n // 注册使用的详情信息\n const registerContent = {\n email,\n code,\n profile: {\n browser:\n typeof navigator !== 'undefined' ? navigator.userAgent : null,\n device: getDeviceName(),\n },\n options: {\n context: JSON.stringify(context),\n generateToken: true,\n // params: getUserRegisterParams(),\n },\n }\n\n // onRegisterSuccess 注册成功后需要回到对应的登录页面\n const onRegisterSuccessIntercept = (user: any) => {\n onRegisterSuccess(user, {\n registerFrom: RegisterMethods.EmailCode,\n account: email,\n })\n }\n\n if (needPassword) {\n // 判断验证码是否正确\n const {\n statusCode: checkCode,\n data: { valid, message: checkMessage },\n } = await post('/api/v2/email/preCheckCode', {\n email: email,\n emailCode: code,\n })\n // 验证码校验通过 进入密码补全流程\n if (checkCode === 200 && valid) {\n changeModule?.(GuardModuleType.REGISTER_PASSWORD, {\n businessRequestName: 'registerByEmailCode', //用于判断后续使用哪个注册api\n content: registerContent,\n isChangeComplete: isEmailChangeComplete,\n onRegisterSuccess: onRegisterSuccessIntercept,\n onRegisterFailed,\n })\n return\n } else {\n submitButtonRef.current.onError()\n message.error(checkMessage)\n return\n }\n } else {\n // 看看是否要跳转到 信息补全\n if (isEmailChangeComplete) {\n // 判断验证码是否正确\n const {\n statusCode: checkCode,\n data: { valid, message: checkMessage },\n } = await post('/api/v2/email/preCheckCode', {\n email: email,\n emailCode: code,\n })\n if (checkCode === 200 && valid) {\n changeModule?.(GuardModuleType.REGISTER_COMPLETE_INFO, {\n businessRequestName: 'registerByEmailCode', //用于判断后续使用哪个注册api\n content: registerContent,\n onRegisterSuccess: onRegisterSuccessIntercept,\n onRegisterFailed,\n })\n return\n } else {\n submitButtonRef.current.onError()\n message.error(checkMessage)\n return\n }\n }\n // 注册\n const {\n code: resCode,\n data,\n onGuardHandling,\n message: registerMessage,\n } = await post('/api/v2/register/email-code', {\n email: registerContent.email,\n code: registerContent.code,\n profile: registerContent.profile,\n ...registerContent.options,\n })\n submitButtonRef.current.onSpin(false)\n if (resCode === 200) {\n onRegisterSuccessIntercept(data)\n } else {\n onGuardHandling?.()\n onRegisterFailed(code, data, registerMessage)\n }\n }\n } catch (error: any) {\n const { message: errorMessage, code, data } = error\n submitButtonRef.current.onError()\n message.error(errorMessage)\n !needPassword && onRegisterFailed(code, data, message)\n } finally {\n submitButtonRef.current?.onSpin(false)\n }\n },\n [\n config.passwordLoginMethods,\n onBeforeRegister,\n authClient,\n form,\n agreements?.length,\n acceptedAgreements,\n registeContext,\n post,\n changeModule,\n isEmailChangeComplete,\n onRegisterSuccess,\n onRegisterFailed,\n ]\n )\n\n const onFinish = useCallback(\n async (values) => {\n if (currentMethod === InputMethod.EmailCode) {\n await registerByEmailCode(values)\n } else if (currentMethod === InputMethod.PhoneCode) {\n await registerByPhoneCode(values)\n }\n },\n [currentMethod, registerByEmailCode, registerByPhoneCode]\n )\n\n const SendCode = useCallback(\n (props: any) => {\n if (isOnlyInternationSms) {\n return (\n <SendCodeByPhone\n {...props}\n form={form}\n fieldName=\"identify\"\n className=\"authing-g2-input g2-send-code-input\"\n autoComplete=\"off\"\n size=\"large\"\n placeholder={t('common.inputFourVerifyCode', {\n length: verifyCodeLength,\n })}\n areaCode={areaCode}\n prefix={\n <IconFont\n type=\"authing-a-shield-check-line1\"\n style={{ color: '#878A95' }}\n />\n }\n isInternationSms={isInternationSms}\n scene={SceneType.SCENE_TYPE_REGISTER}\n maxLength={verifyCodeLength}\n onSendCodeBefore={async () => {\n await form.validateFields(['identify'])\n }}\n />\n )\n }\n\n return (\n <>\n {currentMethod === InputMethod.PhoneCode && (\n <SendCodeByPhone\n {...props}\n isInternationSms={isInternationSms}\n className=\"authing-g2-input g2-send-code-input\"\n autoComplete=\"off\"\n size=\"large\"\n placeholder={t('common.inputFourVerifyCode', {\n length: verifyCodeLength,\n })}\n areaCode={areaCode}\n prefix={\n <IconFont\n type=\"authing-a-shield-check-line1\"\n style={{ color: '#878A95' }}\n />\n }\n scene={SceneType.SCENE_TYPE_REGISTER}\n maxLength={verifyCodeLength}\n data={identify}\n onSendCodeBefore={async () => {\n await form.validateFields(['identify'])\n }}\n />\n )}\n {currentMethod === InputMethod.EmailCode && (\n <SendCodeByEmail\n {...props}\n className=\"authing-g2-input g2-send-code-input\"\n autoComplete=\"off\"\n size=\"large\"\n placeholder={t('common.inputFourVerifyCode', {\n length: verifyCodeLength,\n })}\n prefix={\n <IconFont\n type=\"authing-a-shield-check-line1\"\n style={{ color: '#878A95' }}\n />\n }\n scene={EmailScene.REGISTER_VERIFY_CODE}\n maxLength={verifyCodeLength}\n data={identify}\n onSendCodeBefore={async () => {\n await form.validateFields(['identify'])\n }}\n />\n )}\n </>\n )\n },\n [\n areaCode,\n currentMethod,\n form,\n identify,\n isInternationSms,\n isOnlyInternationSms,\n t,\n verifyCodeLength,\n ]\n )\n\n // 为了 refresh input\n const AreaCodePhoneAccount = useCallback(\n (props) => {\n return (\n <InputInternationPhone\n {...props}\n className=\"authing-g2-input\"\n size=\"large\"\n areaCode={areaCode}\n onAreaCodeChange={(value: string) => {\n setAreaCode(value)\n form.getFieldValue(['identify']) &&\n form.validateFields(['identify'])\n }}\n />\n )\n },\n [areaCode, form]\n )\n\n return (\n <div className=\"authing-g2-register-email\">\n <Form\n form={form}\n name=\"emailRegister\"\n autoComplete=\"off\"\n onSubmitCapture={() => submitButtonRef.current.onSpin(true)}\n onFinish={onFinish}\n onFinishFailed={() => submitButtonRef.current.onError()}\n >\n <FormItemIdentify\n name=\"identify\"\n className={\n isOnlyInternationSms\n ? 'authing-g2-input-form remove-padding'\n : 'authing-g2-input-form'\n }\n methods={methods}\n currentMethod={currentMethod}\n areaCode={areaCode}\n checkRepeat={true}\n required={true}\n >\n {isOnlyInternationSms ? (\n <AreaCodePhoneAccount autoFocus={!isPhoneMedia} />\n ) : (\n <InputIdentify\n className=\"authing-g2-input\"\n size=\"large\"\n autoFocus={!isPhoneMedia}\n value={identify}\n methods={methods}\n onChange={(e) => {\n let v = e.target.value\n setIdentify(v)\n if (methods.length === 1) return\n if (validate('email', v)) {\n setCurrentMethod(InputMethod.EmailCode)\n } else {\n // 放开手机号校验 方便同时开启邮箱和短信国际化手机号通过\n setCurrentMethod(InputMethod.PhoneCode)\n }\n }}\n prefix={\n <IconFont\n type=\"authing-a-user-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n )}\n </FormItemIdentify>\n\n <Form.Item\n key=\"code\"\n name=\"code\"\n validateTrigger={['onBlur', 'onChange']}\n rules={fieldRequiredRule(t('common.captchaCode'))}\n className=\"authing-g2-input-form\"\n validateFirst={true}\n >\n <SendCode />\n </Form.Item>\n {Boolean(agreements?.length) && (\n <Agreements\n onChange={setAcceptedAgreements}\n agreements={agreements}\n showError={validated}\n />\n )}\n <Form.Item>\n <SubmitButton\n // disabled={\n // !!agreements.find((item) => item.required && !acceptedAgreements)\n // }\n text={t('common.register')}\n ref={submitButtonRef}\n />\n </Form.Item>\n </Form>\n </div>\n )\n}\n","import React, { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Tabs } from 'antd'\nimport { ChangeLanguage } from '../ChangeLanguage'\nimport { useGuardAuthClient } from '../Guard/authClient'\nimport { GuardModuleType } from '../Guard/module'\nimport { RegisterWithEmail } from './core/WithEmail'\nimport { RegisterWithCode } from './core/WithCode'\nimport { getLoginTypePipe, tabSort } from '../_utils'\nimport { i18n } from '../_utils/locales'\nimport {\n useGuardEvents,\n useGuardFinallyConfig,\n useGuardModule,\n useGuardPublicConfig,\n} from '../_utils/context'\nimport { GuardLoginInitData } from '../Login/interface'\nimport { RegisterMethods } from '../AuthingGuard/types'\n\nexport const GuardRegisterView: React.FC = () => {\n const events = useGuardEvents()\n\n const config = useGuardFinallyConfig()\n\n const { changeModule } = useGuardModule()\n\n const { t } = useTranslation()\n const agreementEnabled = config?.agreementEnabled\n const { langRange } = config\n const authClient = useGuardAuthClient()\n\n const publicConfig = useGuardPublicConfig()\n\n const verifyRegisterMethods = useMemo<string[]>(() => {\n const verifyLoginMethods = []\n const { registerMethods } = config\n if (registerMethods?.includes(RegisterMethods.EmailCode)) {\n verifyLoginMethods.push('email-code')\n }\n if (registerMethods?.includes(RegisterMethods.Phone)) {\n verifyLoginMethods.push('phone-code')\n }\n\n return verifyLoginMethods\n }, [config])\n\n const registerContextProps = useMemo(\n () => ({\n onRegisterSuccess: (\n data: any = {},\n registerInfo: {\n registerFrom: RegisterMethods\n account: string\n }, //以何种方式注册成功\n message?: string\n ) => {\n const initData = getLoginTypePipe(\n publicConfig,\n registerInfo.registerFrom\n )\n const loginInitData: GuardLoginInitData = {}\n if (initData) {\n loginInitData.specifyDefaultLoginMethod =\n initData.specifyDefaultLoginMethod\n\n initData?.lockMethod &&\n (loginInitData._lockMethod = initData.lockMethod)\n\n loginInitData._firstItemInitialValue = registerInfo.account\n }\n events?.onRegister?.(data, authClient)\n changeModule?.(GuardModuleType.LOGIN, loginInitData)\n },\n onRegisterFailed: (code: number, data: any = {}, message?: string) => {\n // if (message) Message.error(message)\n\n events?.onRegisterError?.({\n code,\n data,\n message,\n })\n },\n registeContext: config.registerContext,\n onBeforeRegister: events?.onBeforeRegister,\n //availableAt 0或者null-注册时,1-登录时,2-注册和登录时\n agreements: agreementEnabled\n ? config?.agreements?.filter(\n (agree) => agree.lang === i18n.language && agree?.availableAt !== 1\n ) ?? []\n : [],\n publicConfig: publicConfig,\n methods: verifyRegisterMethods,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n agreementEnabled,\n config?.agreements,\n events?.onBeforeRegister,\n i18n.language,\n verifyRegisterMethods,\n ]\n )\n\n const tabMapping: Record<\n string,\n { component: React.ReactNode; name: string }\n > = useMemo(() => {\n let verifyCodeLogin: string = ''\n if (verifyRegisterMethods.length > 1) {\n verifyCodeLogin = t('common.verifyCodeRegister')\n } else {\n if (verifyRegisterMethods.includes('phone-code')) {\n verifyCodeLogin = t('common.phoneVerifyCode')\n } else if (verifyRegisterMethods.includes('email-code')) {\n verifyCodeLogin = t('common.emailVerifyCode')\n } else {\n verifyCodeLogin = t('common.verifyCodeRegister')\n }\n }\n return {\n [RegisterMethods.Email]: {\n component: <RegisterWithEmail {...registerContextProps} />,\n name: t('common.PasswordRegister'),\n },\n [RegisterMethods.Phone]: {\n component: <RegisterWithCode {...registerContextProps} />,\n name: verifyCodeLogin,\n },\n }\n }, [registerContextProps, t, verifyRegisterMethods])\n\n const renderTab = useMemo(() => {\n const { registerMethods, defaultRegisterMethod } = config\n\n // TODO 过滤支持的方式\n const supportRegisterMethods = registerMethods?.filter((method) =>\n [\n RegisterMethods.Email,\n RegisterMethods.EmailCode,\n RegisterMethods.Phone,\n ].includes(method)\n )\n const showRegisterMethods = [\n ...new Set(\n supportRegisterMethods?.map((method) => {\n switch (method) {\n case RegisterMethods.EmailCode:\n case RegisterMethods.Phone:\n return RegisterMethods.Phone\n case RegisterMethods.Email:\n return RegisterMethods.Email\n default:\n return method\n }\n })\n ),\n ]\n\n return tabSort(defaultRegisterMethod!, showRegisterMethods!)?.map(\n (method) => (\n <Tabs.TabPane tab={tabMapping[method].name} key={method}>\n {tabMapping[method].component}\n </Tabs.TabPane>\n )\n )\n }, [config, tabMapping])\n\n return (\n <div className=\"g2-view-container g2-view-register\">\n <div className=\"g2-view-container-inner\">\n <div className=\"g2-view-header\">\n <img src={config?.logo} alt=\"\" className=\"icon\" />\n\n <div className=\"title\">{config?.title}</div>\n </div>\n <div className=\"g2-view-tabs\">\n <Tabs\n destroyInactiveTabPane={true}\n defaultActiveKey={config?.defaultRegisterMethod}\n onChange={(activeKey) => {\n events?.onRegisterTabChange?.(activeKey as RegisterMethods)\n }}\n >\n {renderTab}\n </Tabs>\n </div>\n <div className=\"g2-tips-line\">\n <span className=\"back-to-login\">\n {/* <span className=\"gray\">{t('common.alreadyHasAcc')}</span> */}\n <span\n className=\"link-like\"\n onClick={() => changeModule?.(GuardModuleType.LOGIN, {})}\n >\n {t('common.backLoginPage')}\n </span>\n </span>\n </div>\n </div>\n <ChangeLanguage\n langRange={langRange}\n onLangChange={events?.onLangChange}\n />\n </div>\n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { GuardModuleType } from '..'\nimport { ImagePro } from '../ImagePro'\nimport SubmitButton from '../SubmitButton'\nimport {\n useGuardInitData,\n useGuardModule,\n useGuardPublicConfig,\n} from '../_utils/context'\nimport { SubmitSuccessInitData } from './interface'\n\nexport const GuardSubmitSuccessView: React.FC = () => {\n const { t } = useTranslation()\n\n const initData = useGuardInitData<SubmitSuccessInitData>()\n\n const { changeModule: __changeModule } = useGuardModule()\n\n const [countDown, setCountDown] = useState(5)\n\n const timerRef = useRef<any>(0)\n\n const publicConfig = useGuardPublicConfig()\n\n const {\n title = t('common.problem.successTip'),\n message = t('common.problem.successTipMsg'),\n text = t('common.backLoginPage'),\n countDesc = t('common.pToLogin'),\n changeModule = GuardModuleType.LOGIN,\n } = initData ?? {}\n const cdnBase = publicConfig?.cdnBase\n\n useEffect(() => {\n timerRef.current = setInterval(() => {\n setCountDown((prev) => {\n return prev - 1\n })\n }, 1000)\n\n return () => clearInterval(timerRef.current)\n }, [])\n\n useEffect(() => {\n if (countDown <= 0) {\n clearInterval(timerRef.current)\n __changeModule?.(changeModule)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [countDown])\n\n return (\n <div className=\"g2-view-container g2-submit-success\">\n <div className=\"g2-view-tabs g2-questions-send-success-page\">\n <ImagePro\n className=\"plate\"\n src={`${cdnBase}/questions-send-ok.png`}\n alt=\"\"\n width={191}\n height={146}\n />\n <div className=\"title\">{title}</div>\n <div className=\"message\">{message}</div>\n <SubmitButton\n onClick={() => {\n __changeModule?.(changeModule)\n }}\n text={text as string}\n />\n <div className=\"timer-tip\">\n {countDown} {countDesc}\n </div>\n </div>\n </div>\n )\n}\n","import React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Form } from 'antd'\nimport { fieldRequiredRule, validate, getPasswordIdentify } from '../../_utils'\nimport SubmitButton from '../../SubmitButton'\nimport { IconFont } from '../../IconFont'\nimport { InputPassword } from '../../InputPassword'\nimport { SceneType } from 'authing-js-sdk'\nimport { SendCodeByEmail } from '../../SendCode/SendCodeByEmail'\nimport { SendCodeByPhone } from '../../SendCode/SendCodeByPhone'\nimport { FormItemIdentify } from '../../Login/core/withVerifyCode/FormItemIdentify'\nimport { InputIdentify } from '../../Login/core/withVerifyCode/inputIdentify'\nimport { parsePhone, useMediaSize } from '../../_utils/hooks'\nimport { EmailScene } from '../../Type'\nimport { useGuardHttp } from '../../_utils/guardHttp'\nimport { useGuardAuthClient } from '../../Guard/authClient'\nimport {\n useGuardEvents,\n useGuardInitData,\n useGuardPublicConfig,\n} from '../../_utils/context'\n\nexport enum InputMethodMap {\n email = 'email-code',\n phone = 'phone-code',\n}\nexport const SelfUnlock = ({\n identifyRef,\n}: {\n identifyRef?: React.MutableRefObject<string>\n}) => {\n const { t } = useTranslation()\n let [form] = Form.useForm()\n let [identify, setIdentify] = useState('')\n let [codeMethod, setCodeMethod] = useState<'phone' | 'email'>('phone')\n let submitButtonRef = useRef<any>(null)\n const { isPhoneMedia } = useMediaSize()\n let authClient = useGuardAuthClient()\n const events = useGuardEvents()\n\n const initData = useGuardInitData<{\n defaultEmail: 'string'\n defaultPhone: 'string'\n }>()\n\n useEffect(() => {\n if (initData.defaultEmail) {\n setIdentify(initData.defaultEmail)\n form.setFieldsValue({\n identify: initData.defaultEmail,\n })\n setCodeMethod('email')\n }\n if (initData.defaultPhone) {\n setIdentify(initData.defaultPhone)\n form.setFieldsValue({\n identify: initData.defaultPhone,\n })\n setCodeMethod('phone')\n }\n }, [initData, form])\n\n useEffect(() => {\n if (identifyRef) {\n identifyRef.current = getPasswordIdentify(identify)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [identify])\n\n const { authFlow } = useGuardHttp()\n\n const {\n publicKey,\n verifyCodeLength,\n internationalSmsConfig,\n } = useGuardPublicConfig()\n\n // 是否开启了国际化短信功能\n const isInternationSms = internationalSmsConfig?.enabled || false\n\n const onFinish = async (values: any) => {\n let identify = values.identify\n\n let code = values.code\n\n let password = values.password\n\n const encryptPassWord = await authClient.options?.encryptFunction?.(\n password,\n publicKey\n )\n\n if (codeMethod === 'email') {\n const { isFlowEnd, data, onGuardHandling } = await authFlow(\n 'unlock-account-by-email',\n {\n email: identify, // 用户输入的邮箱\n code, // 验证码\n password: encryptPassWord, // 密码,经过加密后的\n }\n )\n submitButtonRef.current?.onSpin(false)\n if (isFlowEnd) {\n events?.onLogin?.(data, authClient!) // 登录成功\n } else {\n onGuardHandling?.()\n }\n }\n if (codeMethod === 'phone') {\n const { phoneNumber } = parsePhone(isInternationSms, identify)\n const { isFlowEnd, data, onGuardHandling } = await authFlow(\n 'unlock-account-by-phone',\n {\n phone: phoneNumber, // 用户输入的邮箱\n code, // 验证码\n password: encryptPassWord, // 密码,经过加密后的\n }\n )\n submitButtonRef.current?.onSpin(false)\n if (isFlowEnd) {\n events?.onLogin?.(data, authClient!) // 登录成功\n } else {\n onGuardHandling?.()\n }\n }\n }\n\n const SendCode = useCallback(\n (props: any) => {\n return (\n <>\n {codeMethod === 'phone' && (\n <SendCodeByPhone\n {...props}\n isInternationSms={isInternationSms}\n className=\"authing-g2-input g2-send-code-input\"\n autoComplete=\"off\"\n size=\"large\"\n placeholder={t('common.inputFourVerifyCode', {\n length: verifyCodeLength,\n })}\n prefix={\n <IconFont\n type=\"authing-a-shield-check-line1\"\n style={{ color: '#878A95' }}\n />\n }\n scene={SceneType.SCENE_TYPE_RESET}\n maxLength={verifyCodeLength}\n data={identify}\n onSendCodeBefore={async () => {\n await form.validateFields(['identify'])\n }}\n />\n )}\n {codeMethod === 'email' && (\n <SendCodeByEmail\n {...props}\n className=\"authing-g2-input g2-send-code-input\"\n autoComplete=\"off\"\n size=\"large\"\n placeholder={t('common.inputFourVerifyCode', {\n length: verifyCodeLength,\n })}\n prefix={\n <IconFont\n type=\"authing-a-shield-check-line1\"\n style={{ color: '#878A95' }}\n />\n }\n scene={EmailScene.SELF_UNLOCKING_VERIFY_CODE}\n maxLength={verifyCodeLength}\n data={identify}\n onSendCodeBefore={async () => {\n await form.validateFields(['identify'])\n }}\n value={identify}\n />\n )}\n </>\n )\n },\n [codeMethod, form, identify, isInternationSms, t, verifyCodeLength]\n )\n\n return (\n <div className=\"authing-g2-login-phone-code\">\n <Form\n name=\"resetPassword\"\n form={form}\n onFinish={onFinish}\n onFinishFailed={() => {\n submitButtonRef?.current?.onError()\n }}\n autoComplete=\"off\"\n >\n <FormItemIdentify\n name=\"identify\"\n className=\"authing-g2-input-form\"\n methods={['email-code', 'phone-code']}\n currentMethod={InputMethodMap[codeMethod]}\n >\n <InputIdentify\n methods={['email-code', 'phone-code']}\n className=\"authing-g2-input\"\n autoComplete=\"off\"\n autoFocus={!isPhoneMedia}\n size=\"large\"\n value={identify}\n onChange={(e) => {\n let v = e.target.value\n setIdentify(v)\n if (validate('email', v)) {\n setCodeMethod('email')\n } else {\n setCodeMethod('phone')\n }\n }}\n prefix={\n <IconFont\n type=\"authing-a-user-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </FormItemIdentify>\n\n <Form.Item\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form\"\n name=\"code\"\n rules={[...fieldRequiredRule(t('common.captchaCode'))]}\n >\n <SendCode />\n </Form.Item>\n <Form.Item\n validateTrigger={['onBlur', 'onChange']}\n className=\"authing-g2-input-form\"\n name=\"password\"\n rules={[...fieldRequiredRule(t('common.password'))]}\n >\n <InputPassword\n className=\"authing-g2-input\"\n size=\"large\"\n placeholder={t('user.inputOldPwd')}\n prefix={\n <IconFont\n type=\"authing-a-lock-line1\"\n style={{ color: '#878A95' }}\n />\n }\n />\n </Form.Item>\n <Form.Item className=\"authing-g2-input-form submit-form\">\n <SubmitButton\n className=\"forget-password\"\n text={t('common.unlock')}\n ref={submitButtonRef}\n />\n </Form.Item>\n </Form>\n </div>\n )\n}\n","import { Tabs } from 'antd'\nimport React, { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { GuardModuleType } from '..'\nimport { PasswordLoginMethods } from '../AuthingGuard/api'\nimport { BackCustom, BackLogin } from '../Back'\nimport { useGuardAuthClient } from '../Guard/authClient'\nimport { LoginWithPassword } from '../Login/core/withPassword'\nimport { LoginWithVerifyCode } from '../Login/core/withVerifyCode'\nimport {\n useGuardButtonState,\n useGuardEvents,\n useGuardFinallyConfig,\n useGuardInitData,\n useGuardModule,\n useGuardPublicConfig,\n} from '../_utils/context'\nimport { i18n } from '../_utils/locales'\nimport {\n IdentityBindingBusinessAction,\n useIdentityBindingBusinessRequest,\n} from './businessRequest'\nimport { GuardIdentityBindingInitData } from './interface'\nimport './styles.less'\n\nexport const GuardIdentityBindingView: React.FC = () => {\n const initData = useGuardInitData<GuardIdentityBindingInitData>()\n\n const config = useGuardFinallyConfig()\n\n const { backModule } = useGuardModule()\n\n const { t } = useTranslation()\n\n const events = useGuardEvents()\n\n const { publicKey, agreementEnabled } = config\n\n const publicConfig = useGuardPublicConfig()\n\n const { spinChange } = useGuardButtonState()\n\n const isInternationSms =\n publicConfig?.internationalSmsConfig?.enabled || false\n\n const authClient = useGuardAuthClient()\n const phoneCodeRequest = useIdentityBindingBusinessRequest()[\n IdentityBindingBusinessAction.PhoneCode\n ]\n const emailCodeRequest = useIdentityBindingBusinessRequest()[\n IdentityBindingBusinessAction.EmailCode\n ]\n const PasswordRequest = useIdentityBindingBusinessRequest()[\n IdentityBindingBusinessAction.Password\n ]\n\n const bindMethodsMap = {\n 'phone-code': async (data: any) => {\n const { identity, code, phoneCountryCode } = data\n\n const options: any = {\n phone: identity,\n code,\n }\n\n if (isInternationSms) {\n options.phoneCountryCode = phoneCountryCode\n }\n return await phoneCodeRequest(options)\n },\n 'email-code': async (data: any) => {\n const { identity: email, code } = data\n return await emailCodeRequest({ email, code })\n },\n password: async (data: any) => {\n const { identity: account, password } = data\n\n const encrypt = authClient.options.encryptFunction\n\n const captchaCode = data.captchaCode && data.captchaCode.trim()\n\n const encryptPassword = await encrypt!(password, publicKey!)\n\n return await PasswordRequest({\n account,\n password: encryptPassword,\n captchaCode,\n })\n },\n }\n\n const onLoginSuccess = (data: any) => {\n events?.onBinding?.(data, authClient!) // 绑定成功\n\n events?.onLogin?.(data, authClient!) // 登录成功\n }\n\n const onLoginFailed = (code: number, data: any, message?: string) => {\n events?.onBindingError?.({\n code,\n data,\n message,\n })\n events?.onLoginError?.({\n code,\n data,\n message,\n })\n }\n\n const onBind = async (loginInfo: any) => {\n const { type, data } = loginInfo\n\n spinChange(true)\n\n const res = await bindMethodsMap[\n type as 'phone-code' | 'email-code' | 'password'\n ]?.(data)\n\n const { isFlowEnd } = res\n\n spinChange(false)\n\n if (isFlowEnd) {\n // 🤮 TODO 日后必要优化\n return {\n ...res,\n apiCode: 200,\n code: 200,\n }\n }\n\n return res\n }\n\n const agreements = useMemo(\n () =>\n agreementEnabled\n ? config?.agreements?.filter(\n (agree) => agree.lang === i18n.language && !!agree?.availableAt\n ) ?? []\n : [],\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [agreementEnabled, config?.agreements, i18n.language]\n )\n\n const passwordLoginMethods = useMemo<PasswordLoginMethods[]>(() => {\n const loginMethodsBase = [\n 'username-password',\n 'email-password',\n 'phone-password',\n ]\n\n // @ts-ignore\n return initData.methods.filter((method) =>\n loginMethodsBase.includes(method)\n ) as PasswordLoginMethods[]\n }, [initData.methods])\n\n const codeLoginMethods = useMemo(() => {\n const loginMethodsBase = ['email-code', 'phone-code']\n\n return initData.methods.filter((method) =>\n loginMethodsBase.includes(method)\n )\n }, [initData.methods])\n\n const methods = [\n {\n key: 'code',\n title: t('common.verifyCodeLogin'),\n component: (\n <LoginWithVerifyCode\n verifyCodeLength={publicConfig?.verifyCodeLength}\n autoRegister={false}\n onLoginRequest={onBind}\n // onLogin={onLogin}\n onLoginSuccess={onLoginSuccess}\n onLoginFailed={onLoginFailed}\n agreements={agreements}\n methods={codeLoginMethods}\n submitButText={t('common.bind')}\n />\n ),\n },\n {\n key: 'password',\n title: t('login.pwdLogin'),\n component: (\n <LoginWithPassword\n publicKey={publicKey!}\n autoRegister={false}\n host={config.host}\n onLoginRequest={onBind}\n passwordLoginMethods={passwordLoginMethods}\n // onLogin={onLogin}\n onLoginSuccess={onLoginSuccess}\n onLoginFailed={onLoginFailed}\n agreements={agreements}\n submitButText={t('common.bind')}\n />\n ),\n },\n ]\n\n const renderBack = useMemo(() => {\n if (initData.source === GuardModuleType.IDENTITY_BINDING_ASK)\n return (\n <BackCustom onBack={() => backModule?.()}>\n {t('common.back')}\n </BackCustom>\n )\n\n return <BackLogin />\n }, [backModule, initData.source, t])\n\n return (\n <div className=\"g2-view-container g2-view-identity-binding\">\n {renderBack}\n\n <div className=\"g2-view-identity-binding-content\">\n <div className=\"g2-view-identity-binding-content-logo\">\n <img src={config?.logo} alt=\"\" className=\"logo\" />\n </div>\n <div className=\"g2-view-identity-binding-content-title\">\n <span>{t('common.identityBindingTitle')}</span>\n </div>\n <div className=\"g2-view-identity-binding-content-desc\">\n <span>{t('common.identityBindingDesc')}</span>\n </div>\n <div className=\"g2-view-identity-binding-content-login\">\n <Tabs>\n {methods\n .filter((method) => {\n if (method.key === 'password')\n return passwordLoginMethods.length !== 0\n\n if (method.key === 'code') return codeLoginMethods.length !== 0\n\n return true\n })\n .map((method) => (\n <Tabs.TabPane key={method.key} tab={method.title}>\n {method.component}\n </Tabs.TabPane>\n ))}\n </Tabs>\n </div>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useAsyncFn } from 'react-use'\nimport { GuardModuleType } from '..'\nimport { BackLogin } from '../Back'\nimport { useGuardAuthClient } from '../Guard/authClient'\nimport { GuardButton } from '../GuardButton'\nimport { IconFont } from '../IconFont'\nimport { IdentityBindingAction } from '../IdentityBinding/businessRequest'\nimport {\n useGuardButtonState,\n useGuardEvents,\n useGuardInitData,\n useGuardModule,\n} from '../_utils/context'\nimport { useGuardHttp } from '../_utils/guardHttp'\nimport { GuardIdentityBindingAskInitData } from './interface'\nimport './styles.less'\n\nexport const GuardIdentityBindingAskView: React.FC = () => {\n const initData = useGuardInitData<GuardIdentityBindingAskInitData>()\n\n const { changeModule } = useGuardModule()\n\n const { t } = useTranslation()\n\n const { authFlow } = useGuardHttp()\n\n const authClient = useGuardAuthClient()\n\n const events = useGuardEvents()\n\n const { spinChange } = useGuardButtonState()\n\n const onCreate = (data: any) => {\n events?.onLogin?.(data, authClient)\n\n events?.onCreate?.(data, authClient)\n }\n\n const onCreateError = (code: any, data: any) => {\n events?.onCreateError?.({\n code,\n data,\n })\n events?.onLoginError?.({\n code,\n data,\n })\n }\n\n const [createLoading, createAccount] = useAsyncFn(async () => {\n spinChange(true)\n const { code, onGuardHandling, data, isFlowEnd } = await authFlow(\n IdentityBindingAction.CreateUser\n )\n\n spinChange(false)\n\n if (isFlowEnd) {\n onCreate(data)\n } else {\n onCreateError(code, data)\n\n onGuardHandling?.()\n }\n }, [])\n\n const bindingAccount = () => {\n changeModule?.(GuardModuleType.IDENTITY_BINDING, {\n ...initData,\n source: GuardModuleType.IDENTITY_BINDING_ASK,\n })\n }\n\n return (\n <div className=\"g2-view-container g2-view-identity-binding-ask\">\n <BackLogin />\n\n <div className=\"g2-view-identity-binding-ask-content\">\n <div className=\"g2-view-identity-binding-ask-content-title\">\n <span>{t('common.identityBindingAskTitle')}</span>\n </div>\n <div className=\"g2-view-identity-binding-ask-content-desc\">\n <span>{t('common.identityBindingAskDesc')}</span>\n </div>\n <div className=\"g2-view-identity-binding-ask-content-img\">\n <IconFont type=\"authing-bind\" />\n </div>\n <div className=\"g2-view-identity-binding-ask-content-button-group\">\n <GuardButton\n className=\"g2-view-identity-binding-ask-content-button g2-view-identity-binding-ask-content-button-create\"\n loading={createLoading.loading}\n onClick={createAccount}\n >\n {t('common.identityBindingCreate')}\n </GuardButton>\n <GuardButton\n className=\" g2-view-identity-binding-ask-content-button g2-view-identity-binding-ask-content-button-binding authing-g2-submit-button\"\n onClick={bindingAccount}\n type=\"primary\"\n >\n {t('common.identityBindingBinding')}\n </GuardButton>\n </div>\n </div>\n </div>\n )\n}\n","import { ConfigProvider, message, Modal } from 'antd'\nimport React, { useEffect, useMemo } from 'react'\nimport { GuardModuleType, GuardProps } from '..'\nimport { GuardBindTotpView } from '../../BindTotp'\nimport {\n GuardFirstLoginPasswordResetView,\n GuardForcedPasswordResetView,\n GuardNoticePasswordResetView,\n GuardPasswordNotSafeResetView,\n GuardRegisterCompletePasswordView,\n} from '../../ChangePassword'\nimport {\n GuardLoginCompleteInfoView,\n GuardRegisterCompleteInfoView,\n} from '../../CompleteInfo'\nimport { GuardDownloadATView } from '../../DownloadAuthenticator'\nimport { GuardErrorView } from '../../Error'\nimport { GuardForgetPassword } from '../../ForgetPassword'\nimport { GuardLoginView } from '../../Login'\nimport { GuardMFAView } from '../../MFA'\nimport { GuardNeedHelpView } from '../../NeedHelpView'\nimport { GuardRecoveryCodeView } from '../../RecoveryCode'\nimport { GuardRegisterView } from '../../Register'\nimport { GuardSubmitSuccessView } from '../../SubmitSuccess'\nimport {\n useGuardButtonContext,\n useGuardContextLoaded,\n useGuardCurrentModule,\n useGuardDefaultMergedConfig,\n useGuardHttpClient,\n useGuardModule,\n} from '../../_utils/context'\nimport zhCN from 'antd/lib/locale/zh_CN'\nimport enUS from 'antd/lib/locale/en_US'\nimport { i18n } from '../../_utils/locales'\nimport { GuardMode } from '../..'\nimport { IconFont } from '../../IconFont'\nimport { AuthingGuardResponse, AuthingResponse } from '../../_utils/http'\nimport {\n CodeAction,\n ChangeModuleApiCodeMapping,\n ApiCode,\n} from '../../_utils/responseManagement/interface'\nimport { GuardIdentityBindingView } from '../../IdentityBinding'\nimport { GuardIdentityBindingAskView } from '../../IdentityBindingAsk'\nimport '../styles.less'\nimport { updateFlowHandle } from '../../_utils/flowHandleStorage'\nimport { GuardUnlockView } from '../../SelfUnlock'\n\nconst PREFIX_CLS = 'authing-ant'\n\nmessage.config({\n prefixCls: `${PREFIX_CLS}-message`,\n})\n\nexport enum LangMAP {\n zhCn = 'zh-CN',\n enUs = 'en-US',\n}\n\nconst langMap = {\n [LangMAP.zhCn]: zhCN,\n [LangMAP.enUs]: enUS,\n}\n\nexport const RenderModule: React.FC<{\n guardProps: GuardProps\n}> = ({ guardProps }) => {\n const defaultMergedConfig = useGuardDefaultMergedConfig()\n\n const contextLoaded = useGuardContextLoaded()\n\n const { moduleName } = useGuardCurrentModule()\n\n const httpClient = useGuardHttpClient()\n\n const { changeModule } = useGuardModule()\n\n const { GuardButtonProvider } = useGuardButtonContext()\n\n const loadingComponent = useMemo(() => {\n return defaultMergedConfig.loadingComponent\n }, [defaultMergedConfig])\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const ComponentsMapping: Record<\n GuardModuleType,\n (key: string) => React.ReactNode\n > = {\n // Error\n [GuardModuleType.ERROR]: (key: string) => <GuardErrorView key={key} />,\n // Login\n [GuardModuleType.LOGIN]: (key: string) => <GuardLoginView key={key} />,\n // 身份源绑定\n [GuardModuleType.IDENTITY_BINDING]: (key: string) => (\n <GuardIdentityBindingView key={key} />\n ),\n // 身份源绑定 问询\n [GuardModuleType.IDENTITY_BINDING_ASK]: (key: string) => (\n <GuardIdentityBindingAskView key={key} />\n ),\n // MFA\n [GuardModuleType.MFA]: (key: string) => <GuardMFAView key={key} />,\n // 注册\n [GuardModuleType.REGISTER]: (key: string) => (\n <GuardRegisterView key={key} />\n ),\n // 下载 Authenticator\n [GuardModuleType.DOWNLOAD_AT]: (key: string) => (\n <GuardDownloadATView key={key} />\n ),\n // 忘记密码 -> 重置密码\n [GuardModuleType.FORGET_PWD]: (key: string) => (\n <GuardForgetPassword key={key} />\n ),\n // 首次登录修改密码\n [GuardModuleType.FIRST_LOGIN_PASSWORD]: (key: string) => (\n <GuardFirstLoginPasswordResetView key={key} />\n ),\n // 提示修改密码\n [GuardModuleType.NOTICE_PASSWORD_RESET]: (key: string) => (\n <GuardNoticePasswordResetView key={key} />\n ),\n // 登陆安全策略 密码轮换\n [GuardModuleType.FORCED_PASSWORD_RESET]: (key: string) => (\n <GuardForcedPasswordResetView key={key} />\n ),\n // 绑定 TOTP\n [GuardModuleType.BIND_TOTP]: (key: string) => (\n <GuardBindTotpView key={key} />\n ),\n // 问题反馈\n [GuardModuleType.ANY_QUESTIONS]: (key: string) => (\n <GuardNeedHelpView key={key} />\n ),\n // MFA 恢复码\n [GuardModuleType.RECOVERY_CODE]: (key: string) => (\n <GuardRecoveryCodeView key={key} />\n ),\n // 提交成功\n [GuardModuleType.SUBMIT_SUCCESS]: (key: string) => (\n <GuardSubmitSuccessView key={key} />\n ),\n // 注册信息补全\n [GuardModuleType.REGISTER_COMPLETE_INFO]: (key: string) => (\n <GuardRegisterCompleteInfoView key={key} />\n ),\n // 登录信息补全\n [GuardModuleType.LOGIN_COMPLETE_INFO]: (key: string) => (\n <GuardLoginCompleteInfoView key={key} />\n ),\n // 注册密码补全\n [GuardModuleType.REGISTER_PASSWORD]: (key: string) => (\n <GuardRegisterCompletePasswordView key={key} />\n ),\n // 自助解锁\n [GuardModuleType.SELF_UNLOCK]: (key: string) => (\n <GuardUnlockView key={key} />\n ),\n [GuardModuleType.UNSAFE_PASSWORD_RESET]: (key) => (\n <GuardPasswordNotSafeResetView key={key} />\n ),\n }\n\n // 初始化 请求拦截器 (Error Code)\n useEffect(() => {\n if (!httpClient || !changeModule) return\n\n // 错误码处理回调 切换 module 和 错误信息提示\n const errorCodeCb = (\n code: CodeAction,\n res: AuthingResponse\n ): AuthingGuardResponse => {\n // 判断有没有 flowHandle\n res.flowHandle && updateFlowHandle(res.flowHandle)\n\n const codeActionMapping = {\n [CodeAction.CHANGE_MODULE]: () => {\n const nextModule = ChangeModuleApiCodeMapping[res.apiCode!]\n\n const nextData = res.data\n\n changeModule(nextModule, nextData)\n return CodeAction.CHANGE_MODULE\n },\n [CodeAction.RENDER_MESSAGE]: () => {\n message.error(res.message ?? res.messages)\n return CodeAction.RENDER_MESSAGE\n },\n [CodeAction.FLOW_END]: () => {\n return CodeAction.FLOW_END\n },\n }\n\n const codeAction = codeActionMapping[code]\n\n if (!codeAction) return res\n\n if (res.apiCode === ApiCode.FLOW_END) {\n const newData = res.data.user\n\n return {\n ...res,\n onGuardHandling: codeAction,\n isFlowEnd: true,\n data: newData ? { ...newData } : res,\n }\n }\n\n return {\n ...res,\n onGuardHandling: codeAction,\n }\n }\n\n httpClient.initErrorCodeInterceptor(errorCodeCb)\n }, [httpClient, changeModule])\n\n const renderModule = useMemo(() => {\n if (contextLoaded) {\n // 传入的渲染指令不正确的情况处理\n if (!moduleName || !ComponentsMapping[moduleName]) {\n return (\n <GuardErrorView\n error={\n new Error(`未知错误!moduleName 为 <b>${moduleName}</b> 无法识别`)\n }\n />\n )\n }\n return ComponentsMapping[moduleName](new Date().toString())\n } else if (loadingComponent) {\n return loadingComponent\n }\n\n return null\n }, [ComponentsMapping, contextLoaded, loadingComponent, moduleName])\n\n const visible = useMemo(() => {\n return guardProps.visible\n }, [guardProps.visible])\n\n const renderGuardContent = useMemo(() => {\n return <GuardButtonProvider>{renderModule}</GuardButtonProvider>\n }, [GuardButtonProvider, renderModule])\n\n return (\n <ConfigProvider\n prefixCls={PREFIX_CLS}\n locale={langMap[i18n.language as LangMAP]}\n >\n {defaultMergedConfig.mode === GuardMode.Modal ? (\n <Modal\n className=\"authing-g2-render-module-modal\"\n closeIcon={\n <IconFont type=\"authing-close-line\" className=\"g2-modal-close\" />\n }\n visible={visible}\n onCancel={guardProps?.onClose}\n keyboard={defaultMergedConfig.escCloseable}\n maskClosable={false} // 点击蒙层,是否允许关闭\n getContainer={defaultMergedConfig.target ?? false}\n >\n <div className=\"authing-g2-render-module\">{renderGuardContent}</div>\n </Modal>\n ) : (\n <div className=\"authing-g2-render-module\">{renderGuardContent}</div>\n )}\n </ConfigProvider>\n )\n}\n","import React, { useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { GuardModuleType } from '../Guard'\nimport { SelfUnlock } from './core/selfUnlock'\n\nimport { ImagePro } from '../ImagePro'\nimport { useGuardFinallyConfig, useGuardModule } from '../_utils/context'\n\nexport const GuardUnlockView: React.FC = () => {\n const { t } = useTranslation()\n\n const config = useGuardFinallyConfig()\n\n const { changeModule } = useGuardModule()\n\n const identifyRef = useRef('')\n\n return (\n <div className=\"g2-view-container g2-forget-password\">\n <div className=\"g2-view-header\">\n <ImagePro\n src={config?.logo!}\n size={48}\n borderRadius={4}\n alt=\"\"\n className=\"icon\"\n />\n <div className=\"title\">{t('login.selfUnlock')}</div>\n <div className=\"title-explain\">{t('login.selfUnlockText')}</div>\n </div>\n <div className=\"g2-view-tabs\">\n <SelfUnlock identifyRef={identifyRef} />\n </div>\n <div className=\"g2-tips-line\">\n <span>{t('user.unlockTip')} &nbsp;</span>\n <span\n className=\"link-like\"\n onClick={() =>\n changeModule?.(GuardModuleType.ANY_QUESTIONS, {\n identify: identifyRef.current,\n })\n }\n >\n {t('common.feedback')}\n </span>\n <div\n className=\"link-like back-to-login\"\n onClick={() => changeModule?.(GuardModuleType.LOGIN)}\n >\n {t('common.backLoginPage')}\n </div>\n </div>\n {/* <ChangeLanguage langRange={langRange} onLangChange={props.onLangChange} /> */}\n </div>\n )\n}\n","import { GuardModuleType } from '../../Guard'\n\nexport enum CodeAction {\n // 切换 Module\n CHANGE_MODULE = 'changeModule',\n // 渲染 错误信息\n RENDER_MESSAGE = 'renderMessage',\n // 流程 结束\n FLOW_END = 'flowEnd',\n}\n\nexport enum ApiCode {\n IDENTITY_BINDING_ASK = 1641,\n\n IDENTITY_BINDING = 1640,\n\n APP_MFA = 1636,\n\n MFA = 1635,\n\n ABORT_FLOW = 1699,\n\n COMPLETE_INFO = 1642,\n\n UNLOCK = 1643,\n\n FLOW_END = 1600,\n\n FIRST_LOGIN_PASSWORD = 1639,\n\n FORCED_PASSWORD_RESET = 2058,\n\n UNSAFE_PASSWORD_TIP = 2061,\n\n UNSAFE_PASSWORD_RESET = 2071,\n}\n\nexport const ChangeModuleApiCodeMapping: Record<string, GuardModuleType> = {\n [ApiCode.IDENTITY_BINDING]: GuardModuleType.IDENTITY_BINDING,\n [ApiCode.IDENTITY_BINDING_ASK]: GuardModuleType.IDENTITY_BINDING_ASK,\n [ApiCode.APP_MFA]: GuardModuleType.MFA,\n [ApiCode.MFA]: GuardModuleType.MFA,\n [ApiCode.ABORT_FLOW]: GuardModuleType.LOGIN,\n [ApiCode.COMPLETE_INFO]: GuardModuleType.LOGIN_COMPLETE_INFO,\n [ApiCode.FIRST_LOGIN_PASSWORD]: GuardModuleType.FIRST_LOGIN_PASSWORD,\n [ApiCode.FORCED_PASSWORD_RESET]: GuardModuleType.FORCED_PASSWORD_RESET,\n [ApiCode.UNLOCK]: GuardModuleType.SELF_UNLOCK,\n [ApiCode.UNSAFE_PASSWORD_RESET]: GuardModuleType.UNSAFE_PASSWORD_RESET,\n}\n","import { initFacePlugin } from '../../_utils/facePlugin'\nimport { FacePlugin } from '../../_utils/facePlugin/interface'\nimport isEqual from 'lodash/isEqual'\n\nexport const useGuardPlugin: any = (plugin: { facePlugin?: FacePlugin }) => {\n const { facePlugin } = plugin\n\n return useGuardFacePlugin(facePlugin)\n}\n\nexport const useGuardFacePlugin = (facePlugin?: FacePlugin) => {\n if (!facePlugin) return true\n\n const guardFace = initFacePlugin(facePlugin)\n\n return isEqual(guardFace, facePlugin)\n}\n","import React from 'react'\nimport { GuardProps } from '..'\nimport { ModuleState } from '../GuardModule/stateMachine'\nimport { RenderContext } from './renderContext'\nimport { RenderModule } from './renderModule'\nimport { useGuardPlugin } from './usePlugin'\n\nexport interface GuardCoreProps {\n guardProps: GuardProps\n initState: ModuleState\n}\n\nexport const GuardCore = (props: GuardCoreProps) => {\n const { guardProps, initState } = props\n\n useGuardPlugin(guardProps)\n\n return (\n <RenderContext guardProps={guardProps} initState={initState}>\n <RenderModule guardProps={guardProps} />\n </RenderContext>\n )\n}\n","import { memo, useEffect, useRef, useState } from 'react'\n\nimport { GuardEvents } from './event'\nimport { GuardAppendConfig, IG2FCProps } from '../Type'\nimport { GuardLocalConfig } from './config'\nimport { GuardModuleType } from './module'\nimport 'moment/locale/zh-cn'\nimport { GuardCore } from './core/index'\nimport { getDocumentNode, GuardPropsFilter } from '../_utils'\nimport React from 'react'\nimport { initGuardDocument } from '../_utils/guardDocument'\n\nexport interface GuardProps extends GuardEvents, IG2FCProps {\n config?: Partial<GuardLocalConfig>\n appendConfig?: GuardAppendConfig\n}\n\ninterface ModuleState {\n moduleName: GuardModuleType\n initData: any\n}\n\nconst propsAreEqual = (pre: GuardProps, current: GuardProps) => {\n return GuardPropsFilter(pre, current)\n}\n\nexport const Guard = memo((props: GuardProps) => {\n const { config } = props\n\n const ref = useRef<HTMLDivElement>(null)\n\n const [guardWindowMount, mounted] = useState<boolean>(false)\n\n // 锁定 Guard 中 window 指向\n useEffect(() => {\n if (!ref?.current) return\n\n const guardDocument = getDocumentNode(ref.current)\n\n initGuardDocument(guardDocument)\n\n mounted(true)\n }, [])\n\n // 首页 init 数据\n const initState: ModuleState = {\n moduleName: config?.defaultScenes ?? GuardModuleType.LOGIN,\n initData: config?.defaultInitData ?? {},\n }\n\n return (\n <div ref={ref}>\n {guardWindowMount && (\n <GuardCore guardProps={props} initState={initState} />\n )}\n </div>\n )\n}, propsAreEqual)\n","export enum Steps {\n Verify,\n Reset,\n}\n","import { useState, useEffect } from 'react'\nimport { getGuardWindow } from '../../Guard/core/useAppendConfig'\n\nfunction debounce(fn: Function, delay: number, immediate = true) {\n let timer: any\n\n return function (this: any) {\n let context = this\n let args = arguments\n timer && clearTimeout(timer)\n\n if (immediate && !timer) {\n fn.apply(context, args)\n }\n\n timer = setTimeout(function () {\n fn.apply(context, args)\n }, delay)\n }\n}\n\nfunction inRange(n: number, start: number, end?: number): boolean {\n if (end || end === 0) {\n return n >= start && n <= end\n }\n return n >= start\n}\n\nexport enum ScreenSize {\n Mobile = 'mobile',\n Desktop = 'desktop',\n}\nexport const SCREEN_SIZE_RANG: {\n size: ScreenSize\n range: [number, number]\n}[] = [\n {\n size: ScreenSize.Mobile,\n range: [0, 719],\n },\n {\n size: ScreenSize.Desktop,\n range: [720, Infinity],\n },\n]\n\nexport const getScreenSize = () => {\n const viewportWidth = document.body.clientWidth\n return (\n SCREEN_SIZE_RANG.find((item) => inRange(viewportWidth, ...item.range))\n ?.size ?? ScreenSize.Desktop\n )\n}\n\nexport const useScreenSize = () => {\n const [screenSize, setScreenSize] = useState(getScreenSize)\n\n useEffect(() => {\n const onResize = debounce(() => {\n setScreenSize(getScreenSize())\n }, 200)\n\n const guardWindow = getGuardWindow()\n\n guardWindow?.addEventListener('resize', onResize)\n\n return () => guardWindow?.removeEventListener('resize', onResize)\n }, [])\n\n return [screenSize]\n}\n","import {\n Lang,\n LoginMethods,\n Protocol,\n RegisterMethods,\n} from '../../../components/AuthingGuard/types'\nimport {\n IAzureAdConnectionConfig,\n ICasConnectionConfig,\n IOAuthConnectionConfig,\n ISamlConnectionConfig,\n OIDCConnectionConfig,\n SocialConnectionItem,\n} from './userPoolConfig'\nimport { i18n } from '../../_utils/locales'\nimport { requestClient } from '../../_utils/http'\nimport { PasswordStrength } from '../../_utils'\n\nexport enum ApplicationMfaType {\n SMS = 'SMS',\n EMAIL = 'EMAIL',\n // OTP = 'OTP',\n // FACE = 'FACE',\n // FINGERPRINT = 'FINGERPRINT',\n}\n\nexport const ApplicationMfaTypeLabel: () => Record<\n ApplicationMfaType,\n string\n> = () => ({\n [ApplicationMfaType.SMS]: i18n.t('common.SMS'),\n [ApplicationMfaType.EMAIL]: i18n.t('common.EmailVerification'),\n})\n\nexport type QrcodeTabsSettings = Record<\n LoginMethods,\n Array<{\n id: string\n title: string\n isDefault?: boolean\n }>\n>\n\nexport interface OidcClientMetadata {\n grant_types: string[]\n client_id: string\n redirect_uris: string[]\n scope: string\n response_types: ResponseType[]\n}\nexport interface InternalExtendsField {\n type: 'internal'\n name: string\n label: string\n inputType: string\n required: boolean\n validateRules: any[]\n}\n\nexport interface UserExtendsField {\n type: 'user'\n id: string\n name: string\n label: string\n inputType: string\n required: boolean\n validateRules: any[]\n}\n\nexport type ExtendsField = InternalExtendsField | UserExtendsField\n\nexport interface ApplicationPasswordTabConfig {\n enabledLoginMethods?: PasswordLoginMethods[]\n}\n\nexport interface ApplicationVerifyCodeTabConfig {\n enabledLoginMethods: VerifyLoginMethods[]\n}\n\nexport interface Agreement {\n id: number\n title: string\n required: boolean\n lang: Lang\n availableAt?: number\n}\n\nexport type PasswordLoginMethods =\n | 'username-password'\n | 'email-password'\n | 'phone-password'\n\nexport type VerifyLoginMethods = 'email-code' | 'phone-code'\n\nexport type ComplateFiledsPlace = 'register' | 'login'\nexport interface ApplicationConfig {\n id: string\n allowedOrigins: string[]\n corsWhitelist: string[]\n cdnBase: string\n userPoolId: string\n rootUserPoolId: string\n publicKey: string\n internationalSmsConfig?: {\n enabled: boolean\n defaultISOType: string\n }\n // 登录框自定义 css 代码\n css: string\n customLoading?: string\n name: string\n logo: string\n description?: string\n redirectUris: string[]\n registerDisabled: boolean\n mergeAdAndAccountPasswordLogin: boolean\n registerTabs: {\n list: string[]\n default: string\n title: { [x: string]: string }\n }\n registerTabsConfig: {\n list: string[]\n default: string\n title: { [x: string]: string }\n registerTypeConfig: {\n emailRegisterType?: RegisterMethods[]\n phoneRegisterType?: RegisterMethods[]\n }\n }\n\n qrcodeTabsSettings: QrcodeTabsSettings\n\n loginTabs: {\n list: string[]\n default: string\n defaultV2?: string\n title: { [x: string]: string }\n }\n socialConnections: SocialConnectionItem[]\n\n complateFiledsPlace: ComplateFiledsPlace[]\n extendsFieldsEnabled: boolean\n extendsFields: ExtendsField[]\n\n identifier: string\n requestHostname: string\n identityProviders: {\n identifier: string\n protocol: Protocol\n displayName: string\n logo: string\n config:\n | ISamlConnectionConfig\n | OIDCConnectionConfig\n | ICasConnectionConfig\n | IAzureAdConnectionConfig\n | IOAuthConnectionConfig\n }[]\n\n ssoPageComponentDisplay: {\n autoRegisterThenLoginHintInfo: boolean\n forgetPasswordBtn: boolean\n idpBtns: boolean\n loginBtn: boolean\n loginByPhoneCodeTab: boolean\n loginByUserPasswordTab: boolean\n loginMethodNav: boolean\n phoneCodeInput: boolean\n registerBtn: boolean\n registerByEmailTab: boolean\n registerByPhoneTab: boolean\n registerMethodNav: boolean\n socialLoginBtns: boolean\n userPasswordInput: boolean\n wxMpScanTab: boolean\n }\n\n protocol: Protocol\n oidcConfig: OidcClientMetadata\n passwordTabConfig: ApplicationPasswordTabConfig\n verifyCodeTabConfig?: ApplicationVerifyCodeTabConfig\n\n agreementEnabled: boolean\n agreements: Agreement[]\n customPasswordStrength: any\n passwordStrength: PasswordStrength\n verifyCodeLength: number\n websocket: string\n welcomeMessage: any\n\n skipComplateFileds: boolean\n}\n\nexport const fetchAppConfig = (appId: string) =>\n requestClient.get<ApplicationConfig>(\n `/api/v2/applications/${appId}/public-config`,\n {\n credentials: 'include',\n }\n )\n","import { message } from 'antd'\nimport { User } from 'authing-js-sdk'\nimport { FormInstance } from 'antd/lib/form'\nimport React, { useCallback, useMemo, useRef } from 'react'\n\nimport { useGuardContext } from '../../context/global/context'\nimport {\n ADLoginForm,\n LdapLoginForm,\n QrCodeLoginForm,\n SocialAndIdpLogin,\n PasswordLoginForm,\n PhoneCodeLoginForm,\n} from '../../../components/AuthingGuard/Forms'\nimport {\n OTP_MFA_CODE,\n APP_MFA_CODE,\n LOGIN_METHODS_MAP,\n} from '../../../components/AuthingGuard/constants'\nimport { AuthingTabs } from '../../AuthingTabs'\nimport {\n BaseFormProps,\n GuardConfig,\n GuardScenes,\n LoginMethods,\n} from '../../../components/AuthingGuard/types'\n\nimport './style.less'\nimport { useTranslation } from 'react-i18next'\nimport { pick } from 'lodash'\n\nconst useFormActions = () => {\n const { t } = useTranslation()\n\n const {\n setValue,\n state: { guardEvents, authClient },\n } = useGuardContext()\n\n const onSuccess = useCallback(\n (user: User) => {\n message.success(t('common.LoginSuccess'))\n guardEvents.onLogin?.(user, authClient)\n },\n [authClient, guardEvents, t]\n )\n\n const onFail = useCallback(\n (error: any) => {\n if (OTP_MFA_CODE === error?.code) {\n setValue('mfaData', error.data)\n setValue('guardScenes', GuardScenes.MfaVerify)\n }\n if (APP_MFA_CODE === error?.code) {\n setValue('mfaData', error.data)\n setValue('guardScenes', GuardScenes.AppMfaVerify)\n }\n guardEvents.onLoginError?.(error, authClient)\n },\n [authClient, guardEvents, setValue]\n )\n\n return {\n onFail,\n onSuccess,\n }\n}\n\nconst useNormalLoginTabs = ({ onSuccess, onFail }: BaseFormProps) => {\n const formRef = useRef<Record<LoginMethods, FormInstance>>(\n {} as Record<LoginMethods, FormInstance>\n )\n\n const formProps = {\n onFail,\n onSuccess,\n }\n\n const LOGIN_FORM_MAP: Record<string, any> = {\n [LoginMethods.Password]: (props: any) => (\n <PasswordLoginForm\n {...props}\n ref={(v) => (formRef.current[LoginMethods.Password] = v!)}\n />\n ),\n [LoginMethods.PhoneCode]: (props: any) => (\n <PhoneCodeLoginForm\n {...props}\n ref={(v) => (formRef.current[LoginMethods.PhoneCode] = v!)}\n />\n ),\n [LoginMethods.AppQr]: (props: any) => (\n <QrCodeLoginForm type={LoginMethods.AppQr} {...props} />\n ),\n [LoginMethods.WxMinQr]: (props: any) => (\n <QrCodeLoginForm type={LoginMethods.WxMinQr} {...props} />\n ),\n [LoginMethods.LDAP]: (props: any) => (\n <LdapLoginForm\n {...props}\n ref={(v) => (formRef.current[LoginMethods.LDAP] = v!)}\n />\n ),\n [LoginMethods.WechatMpQrcode]: (props: any) => (\n <QrCodeLoginForm type={LoginMethods.WechatMpQrcode} {...props} />\n ),\n [LoginMethods.AD]: (props: any) => (\n <ADLoginForm\n {...props}\n ref={(v) => (formRef.current[LoginMethods.AD] = v!)}\n />\n ),\n }\n\n const {\n state: { config },\n } = useGuardContext()\n const {\n loginMethods = [],\n loginMethodTitleMapping,\n qrcodeTabsSettings,\n } = config\n\n let tabs: any[] = []\n\n // 兼容 密码登陆 donglyc\n let filterLoginMethods = loginMethods.filter(\n (d) => d.indexOf('password') === -1 || d.indexOf('landray') === -1\n )\n const hasPassword = loginMethods.some((d) => d.indexOf('password') !== -1)\n if (hasPassword) filterLoginMethods.push(LoginMethods.Password)\n\n filterLoginMethods.forEach((method: LoginMethods) => {\n if (\n [LoginMethods.WechatMpQrcode, LoginMethods.WxMinQr].includes(method) &&\n qrcodeTabsSettings[method]\n ) {\n tabs.push(\n ...qrcodeTabsSettings[method].map((idp) => {\n return {\n key: idp.id,\n label: idp.title || loginMethodTitleMapping[method],\n component: LOGIN_FORM_MAP[method]({\n ...formProps,\n idp,\n }),\n }\n })\n )\n } else {\n tabs.push({\n key: method,\n label: LOGIN_METHODS_MAP()[method],\n component: LOGIN_FORM_MAP[method](formProps),\n })\n }\n })\n return {\n tabs,\n }\n}\n\nconst SHOW_SOCIAL_LOGIN_TAB = [\n LoginMethods.LDAP,\n LoginMethods.Password,\n LoginMethods.PhoneCode,\n]\nexport const LoginLayout = () => {\n const {\n state: { activeTabs, config },\n setValue,\n } = useGuardContext()\n const qrcodeTabsSettings = pick(config.qrcodeTabsSettings, [\n 'wechat-miniprogram-qrcode',\n 'wechatmp-qrcode',\n ])\n\n const { onFail, onSuccess } = useFormActions()\n const { tabs } = useNormalLoginTabs({ onSuccess, onFail })\n\n const activeKey = useMemo(() => {\n const activeTab = activeTabs[GuardScenes.Login]\n if (\n [LoginMethods.WechatMpQrcode, LoginMethods.WxMinQr].includes(activeTab) &&\n qrcodeTabsSettings[activeTab]\n ) {\n return qrcodeTabsSettings[activeTab]?.find((item) => item.isDefault)?.id\n }\n return activeTab\n }, [activeTabs, qrcodeTabsSettings])\n\n return (\n <>\n <AuthingTabs\n tabs={tabs}\n onTabClick={(t) =>\n setValue('activeTabs', {\n ...activeTabs,\n [GuardScenes.Login]: t,\n })\n }\n activeKey={activeKey}\n />\n\n {SHOW_SOCIAL_LOGIN_TAB.includes(activeTabs[GuardScenes.Login]) && (\n <SocialAndIdpLogin onFail={onFail} onSuccess={onSuccess} />\n )}\n </>\n )\n}\n","import { Lang, Protocol } from '../types'\nimport { SocialConnectionProvider } from 'authing-js-sdk'\n\nexport interface OIDCConnectionConfig {\n issuerUrl: string\n authorizationEdpoint: string\n responseType: string\n mode: OIDCConnectionMode\n clientId: string\n clientSecret: string\n scopes: string\n redirectUri: string\n}\n\nexport interface IOAuthConnectionConfig {\n authEndPoint: string\n tokenEndPoint: string\n scope: string\n clientId: string\n clientSecret: string\n authUrlTemplate: string\n codeToTokenScript: string\n tokenToUserInfoScript: string\n tokenToUserInfoScriptFuncId: string\n codeToTokenScriptFuncId: string\n authUrl?: string // 根据模板拼接出来的授权 url\n}\n\nexport interface IAzureAdConnectionConfig {\n microsoftAzureAdDomain: string\n clientId: string\n syncUserProfileOnLogin: string\n emailVerifiedDefault: boolean\n authorizationUrl: string\n callbackUrl: string\n}\n\nexport enum OIDCConnectionMode {\n FRONT_CHANNEL = 'FRONT_CHANNEL',\n BACK_CHANNEL = 'BACK_CHANNEL',\n}\n\nexport interface ISamlConnectionConfig {\n signInEndPoint: string\n samlRequest?: string\n\n // saml assertion 验签公钥\n\n samlIdpCert: string\n\n // saml request 验签公钥\n\n samlSpCert: string\n\n // saml request 签名私钥\n\n samlSpKey: string\n\n signOutEndPoint: string\n\n signSamlRequest: boolean\n\n signatureAlgorithm: string\n\n digestAlgorithm: string\n\n protocolBinding: string\n}\n\nexport interface ICasConnectionConfig {\n casConnectionLoginUrl: string\n}\nexport interface SocialConnectionItem {\n name: string\n name_en: string\n displayName: string\n logo: string\n description: string\n identifier: string\n provider: SocialConnectionProvider\n authorizationUrl: string\n tooltip: Record<Lang, string>\n}\n\nexport interface EnterpriseConnectionItem {\n id: string\n createdAt: Date\n updatedAt: Date\n userPoolId: string\n protocol: Protocol\n identifier: string\n displayName: string\n logo: string\n enabled: boolean\n config:\n | OIDCConnectionConfig\n | ISamlConnectionConfig\n | ICasConnectionConfig\n | IAzureAdConnectionConfig\n | IOAuthConnectionConfig\n}\n\nexport interface UserPoolConfig {\n name: string\n logo: string\n socialConnections: SocialConnectionItem[]\n enterpriseConnections: EnterpriseConnectionItem[]\n}\n\n// export const fetchUserPoolConfig = (userPoolId: string) =>\n// requestClient.get<UserPoolConfig>(\n// `/api/v2/userpools/${userPoolId}/public-config`\n// )\n","import { ConfigProvider, message } from 'antd'\nimport React, { FC } from 'react'\nimport { AuthenticationClient } from 'authing-js-sdk'\n\nimport { GuardContext } from '../context/global/context'\nimport { GuardScenes } from '../../components/AuthingGuard/types'\nimport { requestClient } from '../_utils/http'\nimport {\n defaultGuardConfig,\n OTP_MFA_CODE,\n APP_MFA_CODE,\n defaultLocalesConfig,\n defaultHeaders,\n} from '../../components/AuthingGuard/constants'\nimport { GuardLayout } from '../../components/AuthingGuard/GuardLayout'\nimport {\n UserConfig,\n GuardEventsHandler,\n} from '../../components/AuthingGuard/types/GuardConfig'\n\nimport './style.less'\nimport { initI18n } from '../_utils/locales'\nconst PREFIX_CLS = 'authing-ant'\n\nmessage.config({\n prefixCls: `${PREFIX_CLS}-message`,\n})\n\ninterface AuthingGuardProps extends GuardEventsHandler {\n appId: string\n tenantId?: string\n config?: UserConfig\n visible?: boolean\n className?: string\n id?: string\n}\n\nexport const AuthingGuard: FC<AuthingGuardProps> = ({\n appId,\n tenantId,\n config = {},\n visible,\n className,\n id,\n ...guardEvents\n}) => {\n const {\n apiHost,\n appDomain,\n appHost,\n defaultLoginMethod = defaultGuardConfig.defaultLoginMethod,\n defaultScenes = defaultGuardConfig.defaultScenes,\n defaultRegisterMethod = defaultGuardConfig.defaultRegisterMethod,\n lang,\n localesConfig = defaultLocalesConfig,\n headers = defaultHeaders,\n } = config\n\n initI18n(localesConfig, lang)\n\n let realHost: string | undefined\n if (appHost) {\n realHost = appHost\n } else if (appDomain) {\n const parsedUrl = new URL(defaultGuardConfig.appHost!)\n realHost = `${parsedUrl.protocol}//${appDomain}${\n parsedUrl.port ? ':' + parsedUrl.port : ''\n }`\n } else {\n realHost = apiHost || defaultGuardConfig.appHost!\n }\n\n requestClient.setBaseUrl(realHost)\n requestClient.setLangHeader(headers?.lang)\n\n if (tenantId) {\n requestClient.setTenantHeader(headers?.['tenant-id'])\n requestClient.setTenantId(tenantId)\n }\n\n const authClient = new AuthenticationClient({\n appHost: realHost!,\n appId,\n tenantId,\n requestFrom: 'ui-components',\n lang: localesConfig.defaultLang ?? lang,\n headers,\n onError: (code, msg: any) => {\n if (code === 2020) {\n return\n }\n if ([OTP_MFA_CODE, APP_MFA_CODE].includes(code)) {\n message.info(msg)\n return\n }\n message.error(msg)\n },\n })\n\n const activeTabs = {\n [GuardScenes.Login]: defaultLoginMethod,\n [GuardScenes.Register]: defaultRegisterMethod,\n }\n\n return (\n <ConfigProvider prefixCls={PREFIX_CLS}>\n <GuardContext\n value={{\n authClient,\n config: { ...config },\n userConfig: config,\n appId,\n guardScenes: defaultScenes,\n activeTabs,\n guardTitle: config.title,\n mfaData: {\n mfaToken: '',\n },\n guardEvents,\n localesConfig: config.localesConfig,\n realHost: realHost,\n }}\n >\n <GuardLayout\n id={id}\n className={className}\n visible={visible}\n lang={lang}\n userConfig={config}\n />\n </GuardContext>\n </ConfigProvider>\n )\n}\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport reportWebVitals from './reportWebVitals'\nimport { Guard, GuardModuleType } from './components'\nimport * as _ from 'face-api.js'\nconst App = () => {\n return (\n <Guard\n appId=\"62ce374febad68aaa4f6f36d\"\n onRegisterError={(event) => {\n console.log(event)\n }}\n config={{\n host: 'https://landray-kk.authing.localhost/',\n }}\n facePlugin={_}\n />\n )\n}\n\nReactDOM.render(<App />, document.getElementById('root'))\n\nreportWebVitals()\n"],"sourceRoot":""}