@authing/react-ui-components 3.1.38 → 3.1.39-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/asset-manifest.json +26 -0
- package/dist/index.html +1 -0
- package/dist/static/css/2.57a1f26c.chunk.css +3 -0
- package/dist/static/css/2.57a1f26c.chunk.css.map +1 -0
- package/dist/static/css/main.766cd019.chunk.css +2 -0
- package/dist/static/css/main.766cd019.chunk.css.map +1 -0
- package/dist/static/js/2.63f335a3.chunk.js +3 -0
- package/dist/static/js/2.63f335a3.chunk.js.LICENSE.txt +103 -0
- package/dist/static/js/2.63f335a3.chunk.js.map +1 -0
- package/dist/static/js/3.260dce9f.chunk.js +2 -0
- package/dist/static/js/3.260dce9f.chunk.js.map +1 -0
- package/dist/static/js/main.fa2f9a3d.chunk.js +2 -0
- package/dist/static/js/main.fa2f9a3d.chunk.js.map +1 -0
- package/dist/static/js/runtime-main.44af0a43.js +2 -0
- package/dist/static/js/runtime-main.44af0a43.js.map +1 -0
- package/dist/static/media/loading.3cf0104f.svg +32 -0
- package/lib/index.d.ts +234 -637
- package/lib/index.min.css +1 -1
- package/lib/index.min.js +1 -1
- package/lib/index.min.js.LICENSE.txt +5 -8
- package/lib/static/media/checkbox-circle-fill.9f67ded4.svg +3 -0
- package/lib/static/media/refer-qr-code.a678aa6f.svg +3 -0
- package/package.json +3 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["components/_utils/guardDocument.ts","components/Type/application.ts","reportWebVitals.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/_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/ChangePassword/businessRequest.ts","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/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/UploadImage/index.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/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","examples.tsx"],"names":["guardDocument","LoginMethods","OIDCConnectionMode","Protocol","RegisterMethods","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","getGuardDocument","getGuardWindow","window","guardWindow","defaultView","useInitGuardAppendConfig","setForceUpdate","appId","appendConfig","useEffect","Date","now","initAppendConfig","publicConfig","setPublicConfig","pageConfig","setPageConfig","changeLang","lang","i18n","changeLanguage","popupCenter","url","w","h","document","dualScreenLeft","undefined","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","navigator","platform","os","indexOf","insertedRecord","appConfig","userConfig","getClassnames","classnames","filter","Boolean","join","PasswordStrength","getUserRegisterParams","params","query","qs","parse","location","search","ignoreQueryPrefix","Object","keys","map","key","value","item","includes","isWeChatBrowser","isLarkBrowser","isDingtalkBrowser","isSpecialBrowser","match","parser","UAParser","browser","LoggerType","PASSWORD_STRENGTH_TEXT_MAP","NoCheck","placeholder","validateMessage","Low","Middle","High","AUTO","SYMBOL_TYPE_PATTERNS","getSymbolTypeLength","pwd","pattern","length","getPasswordValidate","strength","customPasswordStrength","validator","_","Promise","reject","resolve","validateMap","r","v","regex","getDocumentNode","node","nodeName","parentNode","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","Error","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","split","hostUrl","URL","splitHost","hostname","shift","port","protocol","utilAssembledRequestHost","useMergePublicConfig","forceUpdate","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","i","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","init","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","getString","setString","newS","stohex","setStringHex","newHexString","DERAbstractTime","localDateToUTC","utc","getTime","getTimezoneOffset","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","styleSheet","styleTag","createElement","styleText","textNode","createTextNode","appendChild","head","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","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","GuardMode","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","_f","_g","_h","expired","_j","succeed","_k","retry","_l","middleTitle","_m","referText","getElementById","needGenerate","style","position","id","classList","getElementsByTagName","styleNode","cssText","innerHTML","loading","unloading","child","removeChild","genTip","formattedText","tip","editTipText","el","innerText","genImage","src","qrcodeImage","setAttribute","onload","genLogoInCenter","qrcodeLogo","display","onerror","genShadowMiddleStatus","successWrapper","successImage","successTextNode","genReferTextNode","referTextNode","onclick","timer","clearInterval","removeReferTextNode","dom","genShadow","aOnClick","shadowAId","shadowId","remove","shadow","shadowA","color","borderBottom","cursor","displayScannedUser","nodeWrapper","geneCode","customLogo","qrcodeElm","tipText","retryId","textAlign","marginTop","querySelector","genRetry","margin","canvas","context2D","getContext","drawImage","containerHalfWidth","containerHalfHeight","ww","hh","getOffset","save","radius","beginPath","moveTo","lineTo","quadraticCurveTo","closePath","roundedImage","clip","restore","base64","toDataURL","img","decoratedOnSuccess","userInfo","ticket","autoExchangeUserInfo","exchangeUserInfo","setUser","decoratedOnScanned","nickname","decoratedOnCancel","decoratedOnExpired","decoratedOnError","startPolling","api","autoMergeQrCode","calledOnScanned","callOnPoolingStart","setInterval","checkStatus","status_1","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","photo","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","state","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","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","React","createContext","useGlobalAuthClient","authClientContext","useContext","client","checkAuthClientProps","props","getGuardAuthClient","useGuardAuthClient","eventsMapping","onLogin","success","onRegister","guardEventsHijacking","events","openEventsMapping","newEvents","eventsKey","InputMethod","GuardPageSene","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","order","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","language","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","initLang","use","LanguageDetector","initReactI18next","detection","resources","translation","enUsTrans","zhCnTrans","zhTwTrans","fallbackLng","debug","interpolation","escapeValue","initI18n","eventsNameWhiteList","startsWith","eventName","guardEventsFilter","styles","recordKey","styleElt","createStyleSheet","styleSheets","selector","insertRule","rule","addRule","insertStyles","removeStyles","__unAuthFlow__","moduleEvents","onLoad","contextValues","renderContext","renderErrorContext","SocialConnectionEvent","HIDE_SOCIALS","HIDE_SOCIALS_SHOWIN_ENTERPRISE","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","onChange","rest","inputRef","codeInputRef","verifyCode","setVerifyCode","focusIndex","setFocusIndex","codes","handleChange","index","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","isCheckPattern","checkInternationalSms","internationalSmsConfig","enabled","methodContent","field","checkRepeatErrorMessage","formatErrorMessage","checkExistErrorMessage","checkRepeatFn","formatRules","CustomFormItem","FormItem","fromItemProos","passwordStrength","UserName","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","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","UploadImage","uploading","setUploading","uploadButton","PlusOutlined","listType","showUploadList","errMsg","spinning","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","LDAP","addonAfter","LoginWithAD","AD","encryptPassword","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","inputWays","qrcodeWays","AppQr","WxMinQr","WechatMpQrcode","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","ctx","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","onBinding","onBindingError","loginMethodsBase","codeLoginMethods","GuardIdentityBindingAskView","onCreate","onCreateError","CreateUser","createLoading","createAccount","LangMAP","SelfUnlock","defaultEmail","setFieldsValue","defaultPhone","selfUnlockStrategy","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","APP_MFA","COMPLETE_INFO","UNLOCK","App","WebkitUserSelect","background","ReactDOM","render"],"mappings":"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qD,UAAkB,GAANrD,EACK,IAAlB,KAAKqD,UAAmB,CAC1B,IAAIlG,EAAI,IAAI4C,GACZ,GACEC,EAAM+C,EAAOxL,MACb4F,EAAE+C,OAAO,IAAW,IAANF,SACD,IAANA,GACT,KAAKqD,UAAYlG,EAAEsD,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,GAAUpR,OAAS,GACjDsR,GAAc,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","file":"static/js/main.fa2f9a3d.chunk.js","sourcesContent":["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 { Lang } from '..'\nimport { PasswordStrength } from '../_utils'\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}\nexport enum OIDCConnectionMode {\n FRONT_CHANNEL = 'FRONT_CHANNEL',\n BACK_CHANNEL = 'BACK_CHANNEL',\n}\n\nexport declare enum SocialConnectionProvider {\n ALIPAY = 'alipay',\n GOOGLE = 'google',\n WECHATPC = 'wechat:pc',\n WECHATMP = 'wechat:webpage-authorization',\n WECHAT_MINIPROGRAM = 'wechat:miniprogram:default',\n WECHAT_MINIPROGRAM_QRCODE = 'wechat:miniprogram:qrconnect',\n WECHAT_MINIPROGRAM_APPLAUNCH = 'wechat:miniprogram:app-launch',\n WECHATMOBILE = 'wechat:mobile',\n GITHUB = 'github',\n QQ = 'qq',\n WECHATWORK_ADDRESS_BOOK = 'wechatwork:addressbook',\n WECHATWORK_CORP_QRCONNECT = 'wechatwork:corp:qrconnect',\n WECHATWORK_SERVICEPROVIDER_QRCONNECT = 'wechatwork:service-provider:qrconnect',\n DINGTALK = 'dingtalk',\n WEIBO = 'weibo',\n APPLE = 'apple',\n APPLE_WEB = 'apple:web',\n LARK_PUBLIC = 'lark-public',\n LARK_INTERNAL = 'lark-internal',\n BAIDU = 'baidu',\n LINKEDIN = 'linkedin',\n SLACK = 'slack',\n YIDUN = 'yidun',\n QINGCLOUD = 'qingcloud',\n FACEBOOK = 'facebook',\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\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 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}\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 enum RegisterMethods {\n Email = 'email',\n Phone = 'phone',\n EmailCode = 'emailCode',\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}\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 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'\n\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 selfUnlockStrategy: 'captcha' | 'password-captcha'\n}\n","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 { 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 setForceUpdate: any,\n appId?: string,\n appendConfig?: GuardAppendConfig\n) => {\n useEffect(() => {\n if (!appId) return\n setForceUpdate(Date.now())\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, setForceUpdate])\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'\nimport * as enUsTrans from './en-us'\nimport * as zhCnTrans from './zh-cn'\nimport * as zhTwTrans from './zh-tw'\nimport { getGuardWindow } from '../../Guard/core/useAppendConfig'\nimport { Lang } from '../../Type'\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 = {}, 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 'zh-TW': {\n translation: zhTwTrans,\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 { Rule } from 'antd/lib/form'\nimport qs from 'qs'\nimport { i18n } from './locales'\nimport { User } from 'authing-js-sdk'\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 {\n ApplicationConfig,\n ComplateFiledsPlace,\n LoginMethods,\n RegisterMethods,\n} from '../Type/application'\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 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\n/**\n * 在托管页下上传query中指定的用户自定义字段进行补全\n * @param params 指定上传的用户自定义字段\n */\nexport const getUserRegisterParams = (params?: string[]) => {\n const query = qs.parse(window.location.search, {\n ignoreQueryPrefix: true,\n })\n return Object.keys(query)\n .map((key) => ({\n key,\n value: query[key],\n }))\n .filter((item) => item.value)\n .filter((item) => (params ? params.includes(item.key) : true))\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 { LoginMethods } from 'authing-js-sdk'\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 { ApplicationConfig, RegisterMethods } from '../../Type/application'\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 forceUpdate: number,\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, forceUpdate])\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 forceUpdate: number,\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, forceUpdate])\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 { GuardModuleType } from '../Guard/module'\nimport { FacePlugin } from '../_utils/facePlugin/interface'\nimport { ApplicationConfig } from './application'\n\nexport type Lang = 'zh-CN' | 'en-US'\n\nexport enum GuardMode {\n Modal = 'modal',\n Normal = 'normal',\n}\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.38-beta.0'","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 {\n AuthenticationClient,\n SocialConnectionProvider,\n User,\n} from 'authing-js-sdk'\nimport { QrCodeAuthenticationClient } from 'authing-js-sdk/build/main/lib/authentication/QrCodeAuthenticationClient'\nimport {\n Agreement,\n LoginMethods,\n PasswordLoginMethods,\n} from '../Type/application'\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 // TODO 具体的类型定义\n loginInfo: any,\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 { AuthenticationClient, User } from 'authing-js-sdk'\nimport { IG2FCProps, IG2Config, getDefaultG2Config, IG2Events } from '../Type'\nimport { Agreement, RegisterMethods } from '../Type/application'\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 // TODO 类型定义补充\n registerInfo: any,\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 { ModuleState } from '../Guard/GuardModule/stateMachine'\nimport { ApplicationConfig } from '../Type/application'\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 'authing-js-sdk'\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 { 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'\nimport { ApplicationConfig } from '../../Type/application'\nimport { AuthenticationClient } from 'authing-js-sdk'\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 [forceUpdate, setForceUpdate] = useState(Date.now())\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(setForceUpdate, 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 forceUpdate,\n appId,\n defaultMergedConfig,\n httpClient,\n setError\n )\n\n // guardPageConfig\n const guardPageConfig = useGuardPageConfig(\n forceUpdate,\n appId,\n httpClient,\n setError\n )\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 { useRef, useCallback, useEffect } from 'react'\nimport { useMediaQuery } from 'react-responsive'\nimport phone from 'phone'\n// import { LanguageMap } from '../../Type'\nimport { SocialConnectionProvider } from 'authing-js-sdk'\nimport {\n isDingtalkBrowser,\n isLarkBrowser,\n // isQQBrowser,\n isQQBuiltInBrowser,\n isSpecialBrowser,\n isWeChatBrowser,\n isWeWorkBuiltInBrowser,\n} from '..'\nimport { GuardLocalConfig } from '../../Guard'\nimport { getGuardWindow } from '../../Guard/core/useAppendConfig'\nimport { ApplicationConfig, SocialConnectionItem } from '../../Type/application'\nexport interface PhoneValidResult {\n isValid: boolean\n phoneNumber: string\n countryIso2: string\n countryIso3: string\n countryCode: string\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]\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\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 'authing-js-sdk'\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 isCheckPattern = 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 isCheckPattern\n )\n }, [isCheckPattern, 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:\n !isCheckPattern && publicConfig.internationalSmsConfig?.enabled\n ? /^[0-9]*$/\n : VALIDATE_PATTERN.phone, //开启国际化短信,但不限制pattern eg:单手机号密码登录方式时🤢\n }\n }, [isCheckPattern, method, publicConfig.internationalSmsConfig?.enabled, 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 /**\n * 控制内部FormItem组件关于pattern的校验规则\n */\n isCheckPattern?: 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","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 { Input } from 'antd'\nimport { PasswordProps } from 'antd/lib/input'\nimport React from 'react'\nimport { IconFont } from '../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 { 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, message: tips, apiCode } = await post(\n '/api/v2/email/send',\n {\n email,\n scene,\n }\n )\n if (apiCode === 2080) {\n // 一分钟只能发一次邮箱验证码的提示信息,特殊处理\n message.error(tips)\n return false\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 { 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 { useGuardFinallyConfig } from '../_utils/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 { host } = useGuardFinallyConfig()\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={`${host}/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 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 { 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'\nimport { UploadImage } from '../../UploadImage'\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 const label = metaData.label || 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 {\n CompleteInfoBaseControls,\n CompleteInfoExtendsControls,\n CompleteInfoMetaData,\n CompleteInfoRequest,\n ExtendsField,\n} from '../CompleteInfo/interface'\nimport { ApplicationConfig } from '../Type/application'\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 { useCheckRepeat } from '../../../ValidatorRules/useCheckRepeat'\nimport { parsePhone } from '../../../_utils/hooks'\nimport { VerifyLoginMethods } from '../../../Type/application'\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 { IconFont } from '../../../IconFont'\nimport { InputNumber } from '../../../InputNumber'\nimport { VerifyLoginMethods } from '../../../Type/application'\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 {\n useGuardEvents,\n useGuardFinallyConfig,\n useGuardModule,\n useGuardPublicConfig,\n} from '../_utils/context'\nimport { CommonMessage } from 'authing-js-sdk'\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 '../../../Type/application'\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} isCheckPattern={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 { InputNumber } from '../../../InputNumber'\nimport { PasswordLoginMethods } from '../../../Type/application'\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 <InputNumber placeholder={placeholder} {...inputProps} />\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 '../../../Type/application'\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 { 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'\nimport {\n Agreement,\n LoginMethods,\n PasswordLoginMethods,\n} from '../../../Type/application'\n\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\n setAccountLock(false)\n\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 { 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 { useGuardHttpClient } from '../../_utils/context'\nimport { CodeAction } from '../../_utils/responseManagement/interface'\nimport { useMediaSize } from '../../_utils/hooks'\nimport { Agreement, LoginMethods } from '../../Type/application'\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 { useGuardAuthClient } from '../../Guard/authClient'\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 { Agreement } from '../../Type/application'\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\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 const encrypt = client.options.encryptFunction\n\n const encryptPassword = await encrypt!(password, props.publicKey)\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: encryptPassword }),\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('common.jobNumber')\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) => {\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) => {\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) => {\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 { 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'\nimport { ApplicationConfig, SocialConnectionItem } from '../../Type/application'\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 '../../../Type/application'\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, {\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 { 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 { useMediaSize, useMethod } from '../_utils/hooks'\nimport { getGuardDocument } from '../_utils/guardDocument'\nimport { useGuardAuthClient } from '../Guard/authClient'\nimport { GuardLoginInitData } from './interface'\nimport { GuardButton } from '../GuardButton'\nimport { LoginMethods, VerifyLoginMethods } from '../Type/application'\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]\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\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 (!scanLogins.includes(LoginMethods.AppQr)) {\n // 如果只有一个且那一个还不是 app 类型\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 referText: t('login.referQrcodeText'),\n succeed: t('login.qrcodeSucceed'),\n middleTitle: t('login.qrcodeMiddle'),\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 </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, message: tips, apiCode } = await post(\n '/api/v2/email/send',\n {\n email,\n scene: EmailScene.MFA_VERIFY_CODE,\n }\n )\n if (apiCode === 2080) {\n // 一分钟只能发一次邮箱验证码的提示信息,特殊处理\n message.error(tips)\n return false\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 'authing-js-sdk'\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 } from '..'\nimport { User } from 'authing-js-sdk'\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 { useGuardAuthClient } from '../../Guard/authClient'\nimport { getDeviceName, getUserRegisterParams } 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 { useGuardFinallyConfig, useGuardModule } from '../../_utils/context'\nimport { GuardModuleType } from '../../Guard'\nimport { useMediaSize } from '../../_utils/hooks'\nimport { ApiCode } from '../../_utils/responseManagement/interface'\nimport { usePasswordErrorText } from '../../_utils/useErrorText'\nimport { Agreement, ApplicationConfig } from '../../Type/application'\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 const config = useGuardFinallyConfig()\n const isChangeComplete = useIsChangeComplete('email')\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 // 托管模式下注册携带query上自定义参数login_page_context\n params: config?.isHost\n ? getUserRegisterParams(['login_page_context'])\n : undefined,\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 {\n fieldRequiredRule,\n getDeviceName,\n getUserRegisterParams,\n validate,\n} from '../../_utils'\nimport { Agreements } from '../components/Agreements'\nimport SubmitButton from '../../SubmitButton'\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 } from '../..'\nimport { SendCodeByEmail } from '../../SendCode/SendCodeByEmail'\nimport {\n Agreement,\n ApplicationConfig,\n RegisterMethods,\n} from '../../Type/application'\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 // 托管模式下注册携带query上自定义参数login_page_context\n params: config?.isHost\n ? getUserRegisterParams(['login_page_context'])\n : undefined,\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?.isHost,\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 // 托管模式下注册携带query上自定义参数login_page_context\n params: config?.isHost\n ? JSON.stringify(getUserRegisterParams(['login_page_context'])) // 特殊处理 resetful api\n : undefined,\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?.isHost,\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 '../Type/application'\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 }, [identify, identifyRef])\n\n const { authFlow } = useGuardHttp()\n\n const {\n publicKey,\n verifyCodeLength,\n internationalSmsConfig,\n selfUnlockStrategy = 'password-captcha', // 'captcha' | 'password-captcha'\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 // 密码,经过加密后的, 仅“验证码”时不传 password 字段\n password =\n selfUnlockStrategy === 'password-captcha' ? encryptPassWord : undefined\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,\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,\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 {selfUnlockStrategy === 'password-captcha' && (\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 )}\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 { BackCustom, BackLogin } from '../Back'\nimport { useGuardAuthClient } from '../Guard/authClient'\nimport { LoginWithPassword } from '../Login/core/withPassword'\nimport { LoginWithVerifyCode } from '../Login/core/withVerifyCode'\nimport { PasswordLoginMethods } from '../Type/application'\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')} </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","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport reportWebVitals from './reportWebVitals'\nimport { Guard } from './components'\nimport * as facePlugin from 'face-api.js'\n\nconst App = () => {\n return (\n <div\n style={{\n display: '',\n width: '100vw',\n justifyContent: 'center',\n WebkitUserSelect: 'none',\n minHeight: '100vh',\n background: '#F5F7FA',\n }}\n >\n <Guard\n facePlugin={facePlugin}\n appId={'62da10c8d0454738c09d60e7'} // Server 冲野本地\n // appId=\"62e119db70777b62252228ad\" // with AD\n // appId=\"6244398c8a4575cdb2cb5656\" // 移动端\n // appId=\"624700d59a2aeb0467b85307\"\n // config={{ host: 'https://app.zty.protocol.authing-inc.co' }}\n config={{\n host: 'http://192.168.0.127:3000',\n __internalRequest__: true,\n }}\n onBeforeRegister={(data, client) => {\n return Promise.resolve(true)\n }}\n onRegister={(...props) => console.log(props, '注册成功')}\n onLogin={() => console.log('login')}\n // onBeforeLogin={(...args) => {\n // console.log(...args)\n // return Promise.resolve(true)\n // }}\n // onLoginError={(...args) => console.log(...args, 'error')}\n // onLogin={(u) => console.log(u, 'success')}\n // tenantId=\"61e79255dfa556015e686ee4\"\n />\n </div>\n )\n}\n\nReactDOM.render(<App />, document.getElementById('root'))\n\nreportWebVitals()\n"],"sourceRoot":""}
|