@authing/react-ui-components 3.0.2-beta.7 → 3.0.3-rc.4

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.
Files changed (260) hide show
  1. package/lib/index.d.ts +4263 -0
  2. package/lib/index.min.css +2 -0
  3. package/lib/index.min.js +2 -0
  4. package/{build/static/js/2.142555a1.chunk.js.LICENSE.txt → lib/index.min.js.LICENSE.txt} +8 -31
  5. package/{build → lib}/static/media/loading.4a67a5f3.svg +0 -0
  6. package/package.json +35 -12
  7. package/.eslintignore +0 -6
  8. package/.eslintrc.js +0 -7
  9. package/.prettierrc +0 -5
  10. package/build/asset-manifest.json +0 -26
  11. package/build/favicon.ico +0 -0
  12. package/build/index.html +0 -1
  13. package/build/logo192.png +0 -0
  14. package/build/logo512.png +0 -0
  15. package/build/manifest.json +0 -25
  16. package/build/robots.txt +0 -3
  17. package/build/static/css/2.5c23c9b8.chunk.css +0 -3
  18. package/build/static/css/2.5c23c9b8.chunk.css.map +0 -1
  19. package/build/static/css/main.6a8701e8.chunk.css +0 -2
  20. package/build/static/css/main.6a8701e8.chunk.css.map +0 -1
  21. package/build/static/js/2.142555a1.chunk.js +0 -3
  22. package/build/static/js/2.142555a1.chunk.js.map +0 -1
  23. package/build/static/js/3.ed27e06b.chunk.js +0 -2
  24. package/build/static/js/3.ed27e06b.chunk.js.map +0 -1
  25. package/build/static/js/main.8d075e4d.chunk.js +0 -2
  26. package/build/static/js/main.8d075e4d.chunk.js.map +0 -1
  27. package/build/static/js/runtime-main.9a428724.js +0 -2
  28. package/build/static/js/runtime-main.9a428724.js.map +0 -1
  29. package/components/AuthingDropdown/index.tsx +0 -52
  30. package/components/AuthingDropdown/style.less +0 -43
  31. package/components/AuthingGuard/AppMFALayout/index.tsx +0 -74
  32. package/components/AuthingGuard/AppMFALayout/style.less +0 -12
  33. package/components/AuthingGuard/CompleteUserInfoLayout/index.tsx +0 -29
  34. package/components/AuthingGuard/CompleteUserInfoLayout/style.less +0 -8
  35. package/components/AuthingGuard/Forms/ADLoginForm/index.tsx +0 -117
  36. package/components/AuthingGuard/Forms/Agreements/index.tsx +0 -81
  37. package/components/AuthingGuard/Forms/Agreements/style.less +0 -44
  38. package/components/AuthingGuard/Forms/CompleteUserInfoForm/index.tsx +0 -139
  39. package/components/AuthingGuard/Forms/EmailMfaVerifyForm/CheckEmailForm.tsx +0 -84
  40. package/components/AuthingGuard/Forms/EmailMfaVerifyForm/VerifyCodeForm.tsx +0 -116
  41. package/components/AuthingGuard/Forms/EmailMfaVerifyForm/index.tsx +0 -40
  42. package/components/AuthingGuard/Forms/EmailMfaVerifyForm/style.less +0 -0
  43. package/components/AuthingGuard/Forms/EmailRegisterForm/index.tsx +0 -181
  44. package/components/AuthingGuard/Forms/EmailRegisterForm/style.less +0 -0
  45. package/components/AuthingGuard/Forms/LdapLoginForm/index.tsx +0 -166
  46. package/components/AuthingGuard/Forms/LdapLoginForm/style.less +0 -0
  47. package/components/AuthingGuard/Forms/LoginFormFooter/index.tsx +0 -76
  48. package/components/AuthingGuard/Forms/LoginFormFooter/style.less +0 -6
  49. package/components/AuthingGuard/Forms/MfaResetCodeForm/Step1.tsx +0 -86
  50. package/components/AuthingGuard/Forms/MfaResetCodeForm/Step2.tsx +0 -53
  51. package/components/AuthingGuard/Forms/MfaResetCodeForm/index.tsx +0 -65
  52. package/components/AuthingGuard/Forms/MfaResetCodeForm/style.less +0 -20
  53. package/components/AuthingGuard/Forms/MfaVerifyForm/index.tsx +0 -105
  54. package/components/AuthingGuard/Forms/MfaVerifyForm/style.less +0 -12
  55. package/components/AuthingGuard/Forms/PasswordLoginForm/index.tsx +0 -261
  56. package/components/AuthingGuard/Forms/PhoneCodeLoginForm/index.tsx +0 -133
  57. package/components/AuthingGuard/Forms/PhoneRegisterForm/index.tsx +0 -202
  58. package/components/AuthingGuard/Forms/QrCodeLoginForm/index.tsx +0 -59
  59. package/components/AuthingGuard/Forms/QrCodeLoginForm/style.less +0 -14
  60. package/components/AuthingGuard/Forms/RegisterFormFooter/index.tsx +0 -56
  61. package/components/AuthingGuard/Forms/RegisterFormFooter/style.less +0 -0
  62. package/components/AuthingGuard/Forms/ResetPwdForm/Footer.tsx +0 -21
  63. package/components/AuthingGuard/Forms/ResetPwdForm/Step1.tsx +0 -86
  64. package/components/AuthingGuard/Forms/ResetPwdForm/Step2.tsx +0 -127
  65. package/components/AuthingGuard/Forms/ResetPwdForm/Step3.tsx +0 -141
  66. package/components/AuthingGuard/Forms/ResetPwdForm/Step4.tsx +0 -51
  67. package/components/AuthingGuard/Forms/ResetPwdForm/index.tsx +0 -96
  68. package/components/AuthingGuard/Forms/ResetPwdForm/style.less +0 -3
  69. package/components/AuthingGuard/Forms/SendPhoneCode/SendCodeBtn.tsx +0 -88
  70. package/components/AuthingGuard/Forms/SendPhoneCode/index.tsx +0 -50
  71. package/components/AuthingGuard/Forms/SendPhoneCode/style.less +0 -26
  72. package/components/AuthingGuard/Forms/SmsMfaVerifyForm/CheckPhoneForm.tsx +0 -86
  73. package/components/AuthingGuard/Forms/SmsMfaVerifyForm/VerifyCodeForm.tsx +0 -113
  74. package/components/AuthingGuard/Forms/SmsMfaVerifyForm/index.tsx +0 -40
  75. package/components/AuthingGuard/Forms/SmsMfaVerifyForm/style.less +0 -3
  76. package/components/AuthingGuard/Forms/SocialAndIdpLogin/index.tsx +0 -325
  77. package/components/AuthingGuard/Forms/SocialAndIdpLogin/style.less +0 -75
  78. package/components/AuthingGuard/Forms/UploadImage/index.tsx +0 -70
  79. package/components/AuthingGuard/Forms/index.ts +0 -13
  80. package/components/AuthingGuard/GuardLayout/index.tsx +0 -474
  81. package/components/AuthingGuard/GuardLayout/style.less +0 -111
  82. package/components/AuthingGuard/Header/index.tsx +0 -25
  83. package/components/AuthingGuard/Header/style.less +0 -52
  84. package/components/AuthingGuard/IconFont/iconfont.js +0 -74
  85. package/components/AuthingGuard/IconFont/index.tsx +0 -19
  86. package/components/AuthingGuard/IconFont/style.less +0 -6
  87. package/components/AuthingGuard/IconFont/svg.js +0 -2
  88. package/components/AuthingGuard/LoginLayout/index.tsx +0 -161
  89. package/components/AuthingGuard/LoginLayout/style.less +0 -0
  90. package/components/AuthingGuard/MfaLayout/Steps.ts +0 -4
  91. package/components/AuthingGuard/MfaLayout/index.tsx +0 -49
  92. package/components/AuthingGuard/MfaLayout/style.less +0 -3
  93. package/components/AuthingGuard/RegisterLayout/index.tsx +0 -89
  94. package/components/AuthingGuard/RegisterLayout/style.less +0 -0
  95. package/components/AuthingGuard/ResetPwdLayout/index.tsx +0 -20
  96. package/components/AuthingGuard/ToggleLang/index.tsx +0 -51
  97. package/components/AuthingGuard/api/appConfig.ts +0 -146
  98. package/components/AuthingGuard/api/index.ts +0 -3
  99. package/components/AuthingGuard/api/sso.ts +0 -29
  100. package/components/AuthingGuard/api/userPoolConfig.ts +0 -111
  101. package/components/AuthingGuard/constants.ts +0 -107
  102. package/components/AuthingGuard/hooks/index.tsx +0 -70
  103. package/components/AuthingGuard/hooks/useScreenSize.tsx +0 -68
  104. package/components/AuthingGuard/index.tsx +0 -126
  105. package/components/AuthingGuard/style.less +0 -103
  106. package/components/AuthingGuard/types/Forms.ts +0 -94
  107. package/components/AuthingGuard/types/GuardConfig.ts +0 -420
  108. package/components/AuthingGuard/types/GuardState.ts +0 -7
  109. package/components/AuthingGuard/types/Locales.ts +0 -12
  110. package/components/AuthingGuard/types/index.ts +0 -4
  111. package/components/AuthingTabs/index.tsx +0 -98
  112. package/components/AuthingTabs/style.less +0 -135
  113. package/components/BindTotp/core/bindSuccess.tsx +0 -72
  114. package/components/BindTotp/core/securityCode.tsx +0 -108
  115. package/components/BindTotp/index.tsx +0 -134
  116. package/components/BindTotp/interface.ts +0 -30
  117. package/components/BindTotp/styles.less +0 -57
  118. package/components/ChangeLanguage/index.tsx +0 -35
  119. package/components/ChangePassword/core/firstLoginReset.tsx +0 -111
  120. package/components/ChangePassword/core/rotateReset.tsx +0 -125
  121. package/components/ChangePassword/index.tsx +0 -72
  122. package/components/CompleteInfo/core/completeInfo.tsx +0 -155
  123. package/components/CompleteInfo/index.tsx +0 -45
  124. package/components/CompleteInfo/interface.ts +0 -40
  125. package/components/CompleteInfo/styles.less +0 -7
  126. package/components/CopyAbleText/index.tsx +0 -54
  127. package/components/CopyAbleText/style.less +0 -13
  128. package/components/DownloadAuthenticator/index.tsx +0 -97
  129. package/components/DownloadAuthenticator/interface.ts +0 -22
  130. package/components/DownloadAuthenticator/styles.less +0 -52
  131. package/components/Error/index.tsx +0 -21
  132. package/components/Error/interface.ts +0 -9
  133. package/components/Error/styles.less +0 -12
  134. package/components/ForgetPassword/core/resetPassword.tsx +0 -162
  135. package/components/ForgetPassword/index.tsx +0 -78
  136. package/components/ForgetPassword/interface.ts +0 -32
  137. package/components/Guard/Guard.tsx +0 -295
  138. package/components/Guard/authClient.ts +0 -44
  139. package/components/Guard/config.ts +0 -19
  140. package/components/Guard/event.ts +0 -52
  141. package/components/Guard/index.tsx +0 -4
  142. package/components/Guard/module.ts +0 -20
  143. package/components/Guard/stateMachine.ts +0 -152
  144. package/components/Guard/styles.less +0 -461
  145. package/components/IconFont/iconfont.js +0 -74
  146. package/components/IconFont/index.tsx +0 -16
  147. package/components/IconFont/style.less +0 -6
  148. package/components/IconFont/svg.js +0 -2
  149. package/components/ImagePro/index.tsx +0 -53
  150. package/components/ImagePro/styles.less +0 -40
  151. package/components/InputNumber/index.tsx +0 -33
  152. package/components/Login/codemap.ts +0 -49
  153. package/components/Login/core/withAD.tsx +0 -9
  154. package/components/Login/core/withAppQrcode.tsx +0 -49
  155. package/components/Login/core/withLDAP.tsx +0 -146
  156. package/components/Login/core/withPassword/FormItemAccount.tsx +0 -42
  157. package/components/Login/core/withPassword/GraphicVerifyCode.tsx +0 -30
  158. package/components/Login/core/withPassword/InputAccount.tsx +0 -64
  159. package/components/Login/core/withPassword/index.tsx +0 -173
  160. package/components/Login/core/withPhonecode.tsx +0 -122
  161. package/components/Login/core/withWechatMiniQrcode.tsx +0 -60
  162. package/components/Login/core/withWechatmpQrcode.tsx +0 -53
  163. package/components/Login/index.tsx +0 -374
  164. package/components/Login/interface.ts +0 -74
  165. package/components/Login/socialLogin/index.tsx +0 -407
  166. package/components/Login/socialLogin/style.less +0 -69
  167. package/components/Login/styles.less +0 -53
  168. package/components/MFA/VerifyCodeInput/VerifyCodeFormItem.tsx +0 -41
  169. package/components/MFA/VerifyCodeInput/index.tsx +0 -145
  170. package/components/MFA/VerifyCodeInput/style.less +0 -35
  171. package/components/MFA/codemap.ts +0 -24
  172. package/components/MFA/core/email.tsx +0 -203
  173. package/components/MFA/core/face.tsx +0 -297
  174. package/components/MFA/core/face_deps.tsx +0 -37
  175. package/components/MFA/core/sms.tsx +0 -203
  176. package/components/MFA/core/totp.tsx +0 -122
  177. package/components/MFA/index.tsx +0 -143
  178. package/components/MFA/interface.ts +0 -51
  179. package/components/MFA/mfaMethods/index.tsx +0 -88
  180. package/components/MFA/mfaMethods/style.less +0 -39
  181. package/components/MFA/styles.less +0 -100
  182. package/components/NeedHelpView/core/describeQuestions.tsx +0 -245
  183. package/components/NeedHelpView/index.tsx +0 -47
  184. package/components/RecoveryCode/core/useCode.tsx +0 -71
  185. package/components/RecoveryCode/index.tsx +0 -27
  186. package/components/RecoveryCode/interface.ts +0 -31
  187. package/components/RecoveryCode/style.less +0 -13
  188. package/components/Register/codemap.ts +0 -12
  189. package/components/Register/components/Agreements/index.tsx +0 -81
  190. package/components/Register/components/Agreements/style.less +0 -44
  191. package/components/Register/core/WithEmail.tsx +0 -242
  192. package/components/Register/core/WithPhone.tsx +0 -184
  193. package/components/Register/index.tsx +0 -139
  194. package/components/Register/interface.ts +0 -50
  195. package/components/SendCode/SendCodeBtn.tsx +0 -96
  196. package/components/SendCode/index.tsx +0 -94
  197. package/components/SendCode/style.less +0 -31
  198. package/components/ShieldSpin/index.tsx +0 -27
  199. package/components/ShieldSpin/loading.svg +0 -29
  200. package/components/SubmitButton/index.tsx +0 -50
  201. package/components/SubmitSuccess/index.tsx +0 -66
  202. package/components/SubmitSuccess/interface.ts +0 -17
  203. package/components/Type/index.ts +0 -52
  204. package/components/ValidatorRules/ValidatorFormItem.tsx +0 -139
  205. package/components/ValidatorRules/index.ts +0 -20
  206. package/components/VerifyCodeInput/index.tsx +0 -76
  207. package/components/VerifyCodeInput/style.less +0 -24
  208. package/components/_utils/GuardErrorCode.ts +0 -9
  209. package/components/_utils/clipboard.ts +0 -27
  210. package/components/_utils/config.ts +0 -116
  211. package/components/_utils/guradHttp.ts +0 -101
  212. package/components/_utils/hooks/index.ts +0 -64
  213. package/components/_utils/http.ts +0 -85
  214. package/components/_utils/index.ts +0 -326
  215. package/components/_utils/locales/en/common.json +0 -229
  216. package/components/_utils/locales/en/index.ts +0 -6
  217. package/components/_utils/locales/en/login.json +0 -96
  218. package/components/_utils/locales/en/map.json +0 -4
  219. package/components/_utils/locales/en/user.json +0 -82
  220. package/components/_utils/locales/index.ts +0 -45
  221. package/components/_utils/locales/zh/common.json +0 -229
  222. package/components/_utils/locales/zh/index.ts +0 -6
  223. package/components/_utils/locales/zh/login.json +0 -96
  224. package/components/_utils/locales/zh/map.json +0 -4
  225. package/components/_utils/locales/zh/user.json +0 -83
  226. package/components/_utils/popupCenter.ts +0 -48
  227. package/components/assets/images/error.png +0 -0
  228. package/components/context/base.tsx +0 -28
  229. package/components/context/global/context.tsx +0 -39
  230. package/components/context/global/reducer.tsx +0 -56
  231. package/components/context/module/context.tsx +0 -23
  232. package/components/index.ts +0 -9
  233. package/config/antdReplacer.js +0 -51
  234. package/config/env.js +0 -104
  235. package/config/getHttpsConfig.js +0 -66
  236. package/config/jest/cssTransform.js +0 -14
  237. package/config/jest/fileTransform.js +0 -40
  238. package/config/modules.js +0 -134
  239. package/config/paths.js +0 -71
  240. package/config/pnpTs.js +0 -35
  241. package/config/webpack.config.js +0 -835
  242. package/config/webpackDevServer.config.js +0 -130
  243. package/examples.tsx +0 -87
  244. package/index.js +0 -1
  245. package/logo.svg +0 -7
  246. package/public/favicon.ico +0 -0
  247. package/public/index.html +0 -43
  248. package/public/logo192.png +0 -0
  249. package/public/logo512.png +0 -0
  250. package/public/manifest.json +0 -25
  251. package/public/robots.txt +0 -3
  252. package/react-app-env.d.ts +0 -71
  253. package/reportWebVitals.ts +0 -15
  254. package/scripts/build.js +0 -208
  255. package/scripts/lib.js +0 -200
  256. package/scripts/publish.js +0 -57
  257. package/scripts/start.js +0 -162
  258. package/scripts/test.js +0 -49
  259. package/setupTests.ts +0 -5
  260. package/tsconfig.json +0 -30
@@ -1,94 +0,0 @@
1
- import { Col, message, Row } from 'antd'
2
- import React, { FC } from 'react'
3
- import { EmailScene } from 'authing-js-sdk'
4
-
5
- import { SendCodeBtn } from './SendCodeBtn'
6
-
7
- import './style.less'
8
- import { useTranslation } from 'react-i18next'
9
- import { useAuthClient } from '../Guard/authClient'
10
- import { validate } from '../_utils'
11
- import { InputProps } from 'antd/lib/input'
12
- import { InputNumber } from '../InputNumber'
13
-
14
- export interface SendPhoneCodeProps extends InputProps {
15
- method: 'phone' | 'email'
16
- data: string
17
- form?: any
18
- onSendCodeBefore?: any // 点击的时候先做这个
19
- }
20
-
21
- export const SendCode: FC<SendPhoneCodeProps> = ({
22
- method,
23
- data,
24
- value,
25
- onChange,
26
- form,
27
- onSendCodeBefore,
28
- maxLength,
29
- ...inputProps
30
- }) => {
31
- const { t } = useTranslation()
32
-
33
- const authClient = useAuthClient()
34
-
35
- const sendEmail = async (email: string) => {
36
- if (!email) {
37
- message.error(t('login.inputEmail'))
38
- return false
39
- }
40
- if (!validate('email', email)) {
41
- message.error(t('common.emailFormatError'))
42
- return false
43
- }
44
- try {
45
- await authClient.sendEmail(email, EmailScene.ResetPassword)
46
- // onSend?.()
47
- return true
48
- } catch (error) {
49
- // onError?.(error)
50
- return false
51
- }
52
- }
53
-
54
- const sendPhone = async (phone: string) => {
55
- try {
56
- await authClient.sendSmsCode(phone)
57
- return true
58
- } catch (error) {
59
- return false
60
- }
61
- }
62
-
63
- return (
64
- <>
65
- <Row justify="space-between" align="middle">
66
- <Col span={15} className="g2-send-code-input-col">
67
- <InputNumber
68
- value={value}
69
- onChange={onChange}
70
- {...inputProps}
71
- maxLength={maxLength}
72
- />
73
- </Col>
74
- <Col offset={1} span={8}>
75
- <SendCodeBtn
76
- beforeSend={() => {
77
- return onSendCodeBefore()
78
- .then(async (b: any) => {
79
- let phoneData = form ? form.getFieldValue(method) : data
80
- return method === 'phone'
81
- ? await sendPhone(phoneData)
82
- : await sendEmail(phoneData)
83
- })
84
- .catch((e: any) => {
85
- // console.log('e', e)
86
- return false
87
- })
88
- }}
89
- />
90
- </Col>
91
- </Row>
92
- </>
93
- )
94
- }
@@ -1,31 +0,0 @@
1
- .authing-g2-send-code-btn {
2
- height: 46px;
3
- width: 100%;
4
- border: 1px solid #d4d6dc;
5
- border-radius: 4px;
6
- }
7
-
8
- .authing-g2-send-code-btn:hover {
9
- background: rgba(57, 106, 255, 0.1);
10
- }
11
-
12
- .authing-g2-send-code-btn:focus {
13
- outline: none;
14
- }
15
-
16
- .authing-g2-send-code-btn[disabled] {
17
- cursor: not-allowed;
18
- filter: opacity(0.5);
19
- }
20
-
21
- @media only screen and (max-width: 719px) {
22
- .authing-g2-send-code-btn {
23
- font-size: 14px;
24
- }
25
- }
26
-
27
- .g2-loading-btn-center {
28
- .authing-ant-btn-loading-icon .anticon {
29
- padding-right: 0;
30
- }
31
- }
@@ -1,27 +0,0 @@
1
- import React from 'react'
2
- import { ReactComponent as LoadShielding } from './loading.svg'
3
-
4
- interface IG2SpinProps {
5
- size?: number
6
- }
7
-
8
- export const ShieldSpin = (props: IG2SpinProps) => {
9
- let size = props.size ? props.size : 50
10
-
11
- return (
12
- <div
13
- style={{
14
- width: size,
15
- height: size,
16
- }}
17
- >
18
- <LoadShielding />
19
- </div>
20
- )
21
- }
22
-
23
- export const Spin = () => (
24
- <div className="g2-init-setting-loading">
25
- <ShieldSpin size={100} />
26
- </div>
27
- )
@@ -1,29 +0,0 @@
1
- <svg width="100%" height="100%"
2
- viewBox="0 0 150 150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
- <style>
4
- #path-f {
5
- fill: none;
6
- stroke: #eaebee;
7
- stroke-width: 10;
8
- stroke-dasharray: 100 220;
9
- animation: dash 40s infinite linear forwards;
10
- }
11
- #path-b {
12
- fill: none;
13
- stroke: #0080ff;
14
- stroke-width: 8;
15
- stroke-linecap: round;
16
- stroke-linejoin: round;
17
- }
18
- @keyframes dash {
19
- to {
20
- stroke-dashoffset: 12000;
21
- }
22
- }
23
- </style>
24
- <title>Loading</title>
25
- <g id="单独" transform="translate(25.000000, 16.000000)" fill-rule="nonzero" stroke-width="2" >
26
- <path 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" id="path-b"/>
27
- <path 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" id="path-f"/>
28
- </g>
29
- </svg>
@@ -1,50 +0,0 @@
1
- import React, {
2
- forwardRef,
3
- useState,
4
- useImperativeHandle,
5
- useEffect,
6
- } from 'react'
7
- import { Button } from 'antd'
8
-
9
- interface SubmitButtonProps {
10
- text?: string
11
- className?: string
12
- onClick?: any
13
- }
14
- const SubmitButton = (props: SubmitButtonProps, ref: any) => {
15
- let [spin, setSpin] = useState(false) // spin 状态需要手动设置关闭
16
- let [shaking, setShaking] = useState(false) // 抖动状态会自动关闭
17
-
18
- useEffect(() => {
19
- if (shaking === true) {
20
- setTimeout(() => {
21
- setShaking(false)
22
- }, 1000)
23
- }
24
- }, [shaking])
25
-
26
- useImperativeHandle(ref, () => ({
27
- onError: (text?: string) => {
28
- setShaking(true)
29
- },
30
- onSpin: (sp: boolean) => {
31
- setSpin(sp)
32
- },
33
- }))
34
-
35
- let propsCls = props.className ? props.className : ''
36
- let shakingCls = shaking ? 'shaking' : ''
37
- return (
38
- <Button
39
- size="large"
40
- type="primary"
41
- htmlType="submit"
42
- loading={spin}
43
- onClick={props.onClick ? props.onClick : () => {}}
44
- className={`authing-g2-submit-button ${propsCls} ${shakingCls}`}
45
- >
46
- {props.text}
47
- </Button>
48
- )
49
- }
50
- export default forwardRef(SubmitButton)
@@ -1,66 +0,0 @@
1
- import React, { useEffect, useRef, useState } from 'react'
2
- import { useTranslation } from 'react-i18next'
3
- import { GuardModuleType } from '..'
4
- import { ImagePro } from '../ImagePro'
5
- import SubmitButton from '../SubmitButton'
6
- import { GuardSubmitSuccessViewProps } from './interface'
7
-
8
- export const GuardSubmitSuccessView: React.FC<GuardSubmitSuccessViewProps> = (
9
- props
10
- ) => {
11
- const { t } = useTranslation()
12
- const { initData, config } = props
13
- const [countDown, setCountDown] = useState(5)
14
-
15
- const timerRef = useRef<any>(0)
16
-
17
- const {
18
- title = t('common.problem.successTip'),
19
- message = t('common.problem.successTipMsg'),
20
- } = initData ?? {}
21
-
22
- const cdnBase = config?.__publicConfig__?.cdnBase
23
-
24
- useEffect(() => {
25
- timerRef.current = setInterval(() => {
26
- setCountDown((prev) => {
27
- return prev - 1
28
- })
29
- }, 1000)
30
-
31
- return () => clearInterval(timerRef.current)
32
- }, [])
33
-
34
- useEffect(() => {
35
- if (countDown <= 0) {
36
- clearInterval(timerRef.current)
37
- props.__changeModule?.(GuardModuleType.LOGIN)
38
- }
39
- // eslint-disable-next-line react-hooks/exhaustive-deps
40
- }, [countDown])
41
-
42
- return (
43
- <div className="g2-view-container">
44
- <div className="g2-view-tabs g2-questions-send-success-page">
45
- <ImagePro
46
- className="plate"
47
- src={`${cdnBase}/questions-send-ok.png`}
48
- alt=""
49
- width={191}
50
- height={146}
51
- />
52
- <div className="title">{title}</div>
53
- <div className="message">{message}</div>
54
- <SubmitButton
55
- onClick={() => {
56
- props.__changeModule?.(GuardModuleType.LOGIN)
57
- }}
58
- text={t('common.backLoginPage')}
59
- />
60
- <div className="timer-tip">
61
- {countDown} {t('common.pToLogin')}
62
- </div>
63
- </div>
64
- </div>
65
- )
66
- }
@@ -1,17 +0,0 @@
1
- import { IG2Config, IG2Events, IG2FCViewProps } from '../Type'
2
-
3
- export interface SubmitSuccessEvents extends IG2Events {}
4
-
5
- export interface SubmitSuccessConfig extends IG2Config {}
6
-
7
- export interface SubmitSuccessInitData {
8
- title?: string
9
- message?: string
10
- }
11
-
12
- export interface GuardSubmitSuccessViewProps
13
- extends IG2FCViewProps,
14
- SubmitSuccessEvents {
15
- config: SubmitSuccessConfig
16
- initData?: SubmitSuccessInitData
17
- }
@@ -1,52 +0,0 @@
1
- import { AuthenticationClient, CommonMessage } from 'authing-js-sdk'
2
- import { Lang } from 'authing-js-sdk/build/main/types'
3
- import { GuardMode } from '..'
4
- import { ApplicationConfig } from '../AuthingGuard/api'
5
- import { GuardModuleType } from '../Guard/module'
6
- export interface IG2FCProps extends IG2Events {
7
- appId: string
8
- config?: Partial<IG2Config>
9
- }
10
-
11
- export interface IG2FCViewProps extends IG2FCProps {
12
- config: IG2Config
13
- }
14
-
15
- export interface IG2Config {
16
- title: string
17
- logo: string
18
- lang: Lang
19
- langRange: Lang[]
20
- host: string
21
- mode: GuardMode
22
- clickCloseable: boolean
23
- escCloseable: boolean
24
- userpool?: string
25
- contentCss?: string
26
- target?: HTMLElement | string
27
- __appHost__?: string
28
- __publicConfig__?: ApplicationConfig
29
- }
30
-
31
- const defaultG2Config: IG2Config = {
32
- lang: 'zh-CN',
33
- langRange: ['zh-CN', 'en-US'],
34
- title: 'Authing',
35
- escCloseable: true,
36
- clickCloseable: true,
37
- mode: GuardMode.Normal,
38
- host: 'https://core.authing.cn',
39
- logo:
40
- 'https://files.authing.co/user-contents/photos/0a4c99ff-b8ce-4030-aaaf-584c807cb21c.png',
41
- }
42
-
43
- export interface IG2Events {
44
- onLoad?: (authClient: AuthenticationClient) => void
45
- onLoadError?: (error: CommonMessage) => void
46
- onClose?: () => void
47
- onLangChange?: (lang: Lang) => void
48
- // __codePaser?: (code: number) => Function
49
- __changeModule?: (moduleName: GuardModuleType, initData?: any) => void
50
- }
51
-
52
- export const getDefaultG2Config = (): IG2Config => defaultG2Config
@@ -1,139 +0,0 @@
1
- import { Form } from 'antd'
2
- import React, {
3
- forwardRef,
4
- useCallback,
5
- useImperativeHandle,
6
- useMemo,
7
- useState,
8
- } from 'react'
9
- import { fieldRequiredRule, sleep, VALIDATE_PATTERN } from '../_utils'
10
- import { useGuardHttp } from '../_utils/guradHttp'
11
- import { useTranslation } from 'react-i18next'
12
- import {
13
- ICheckProps,
14
- ValidatorFormItemMetaProps,
15
- ValidatorFormItemProps,
16
- } from '.'
17
- import { Rule } from 'antd/lib/form'
18
- import { useDebounce } from '../_utils/hooks'
19
-
20
- const checkError = (message: string) => Promise.reject(new Error(message))
21
-
22
- const checkSuccess = (message?: string) => Promise.resolve(message ?? '')
23
-
24
- const ValidatorFormItem = forwardRef<ICheckProps, ValidatorFormItemMetaProps>(
25
- (props, ref) => {
26
- const {
27
- userPoolId,
28
- form,
29
- checkRepeat = false,
30
- method,
31
- ...formItemProps
32
- } = props
33
-
34
- const { get } = useGuardHttp()
35
- const { t } = useTranslation()
36
- const [checked, setChecked] = useState(false)
37
-
38
- const [isReady, setIsReady] = useState(false)
39
-
40
- const methodContent = useMemo(() => {
41
- if (method === 'email')
42
- return {
43
- field: t('common.emailLabel'),
44
- checkErrorMessage: t('common.checkEmail'),
45
- pattern: VALIDATE_PATTERN.email,
46
- }
47
- else
48
- return {
49
- field: t('common.phone'),
50
- checkErrorMessage: t('common.phoneFormateError'),
51
- pattern: VALIDATE_PATTERN.phone,
52
- }
53
- }, [method, t])
54
-
55
- const checkField = useDebounce(async (value: string) => {
56
- if (!(value && methodContent.pattern.test(value))) {
57
- setIsReady(true)
58
- return
59
- }
60
- let { data } = await get<boolean>(`/api/v2/users/find`, {
61
- userPoolId: userPoolId,
62
- key: value,
63
- type: method,
64
- })
65
- setChecked(Boolean(data))
66
- form?.validateFields([method])
67
- setIsReady(true)
68
- }, 500)
69
-
70
- useImperativeHandle(ref, () => ({
71
- check: (values: any) => {
72
- setChecked(false)
73
- if (values[method]) {
74
- console.log('check', isReady)
75
- setIsReady(false)
76
- checkField(values[method])
77
- }
78
- },
79
- }))
80
-
81
- const checkReady = useCallback(async (): Promise<boolean> => {
82
- if (isReady) return true
83
- do {
84
- await sleep(200)
85
- } while (isReady)
86
-
87
- return true
88
- }, [isReady])
89
-
90
- const validator = useCallback(async () => {
91
- if ((await checkReady()) && checked)
92
- return checkError(methodContent.checkErrorMessage)
93
- else return checkSuccess()
94
- }, [checkReady, checked, methodContent.checkErrorMessage])
95
-
96
- const rules = useMemo<Rule[]>(() => {
97
- const rules = [
98
- ...fieldRequiredRule(methodContent.field),
99
- {
100
- validator: (_: any, value: any) => {
101
- if (!methodContent.pattern.test(value))
102
- return checkError(methodContent.checkErrorMessage)
103
-
104
- return checkSuccess()
105
- },
106
- },
107
- ]
108
- checkRepeat &&
109
- rules.push({
110
- validator,
111
- })
112
-
113
- return rules
114
- }, [
115
- checkRepeat,
116
- methodContent.checkErrorMessage,
117
- methodContent.field,
118
- methodContent.pattern,
119
- validator,
120
- ])
121
-
122
- return (
123
- <Form.Item
124
- validateFirst={true}
125
- rules={[...rules, ...(formItemProps?.rules ?? [])]}
126
- {...formItemProps}
127
- name={method}
128
- />
129
- )
130
- }
131
- )
132
-
133
- export const EmailFormItem = forwardRef<ICheckProps, ValidatorFormItemProps>(
134
- (props, ref) => <ValidatorFormItem ref={ref} {...props} method="email" />
135
- )
136
-
137
- export const PhoneFormItem = forwardRef<ICheckProps, ValidatorFormItemProps>(
138
- (props, ref) => <ValidatorFormItem ref={ref} {...props} method="phone" />
139
- )
@@ -1,20 +0,0 @@
1
- import { FormInstance, FormItemProps } from 'antd/lib/form'
2
-
3
- export interface ValidatorFormItemProps extends FormItemProps {
4
- userPoolId?: string
5
- form?: FormInstance
6
- checkRepeat?: boolean
7
- }
8
-
9
- export interface ValidatorFormItemMetaProps extends ValidatorFormItemProps {
10
- userPoolId?: string
11
- form?: FormInstance
12
- checkRepeat?: boolean
13
- method: 'email' | 'phone'
14
- }
15
-
16
- export interface ICheckProps {
17
- check: (values: any) => void
18
- }
19
-
20
- export { EmailFormItem, PhoneFormItem } from './ValidatorFormItem'
@@ -1,76 +0,0 @@
1
- import { Divider, Input } from 'antd'
2
- import React, { FC, Fragment, useRef } from 'react'
3
-
4
- import './style.less'
5
-
6
- interface VerifyCodeInputProps extends React.HTMLAttributes<HTMLDivElement> {
7
- verifyCode: string[]
8
- setVerifyCode: (code: string[]) => void
9
- length?: number
10
- onEnter?: Function
11
- }
12
-
13
- export const VerifyCodeInput: FC<VerifyCodeInputProps> = ({
14
- verifyCode,
15
- setVerifyCode,
16
- length = 6,
17
- onEnter,
18
- }) => {
19
- const inputRef = useRef<any[]>([])
20
-
21
- const handleChange = (val: string | undefined = '', index: number) => {
22
- const num = parseInt(val)
23
- if (isNaN(num)) {
24
- val = ''
25
- } else {
26
- val = String(num)
27
- }
28
- const codes = [...verifyCode]
29
- codes[index] = val.split('').slice(-1)[0] || ''
30
- setVerifyCode(codes)
31
-
32
- if (val && inputRef.current[index + 1]) {
33
- inputRef.current[index + 1].focus()
34
- }
35
- }
36
-
37
- const handleKeyDown = (evt: any, index: number) => {
38
- const currentVal = verifyCode[index]
39
-
40
- switch (evt.keyCode) {
41
- case 8:
42
- if (!currentVal && inputRef.current[index - 1]) {
43
- handleChange('', index - 1)
44
- inputRef.current[index - 1].focus()
45
- }
46
- break
47
-
48
- case 13:
49
- onEnter?.()
50
- break
51
- default:
52
- break
53
- }
54
- }
55
-
56
- return (
57
- <div className="authing-code-input">
58
- {new Array(length).fill(0).map((_, index) => (
59
- <Fragment key={index}>
60
- <Input
61
- ref={(el) => (inputRef.current[index] = el)}
62
- className="authing-code-input-item"
63
- size="large"
64
- autoFocus={index === 0}
65
- onKeyDown={(evt) => handleKeyDown(evt, index)}
66
- value={verifyCode[index]}
67
- onChange={(evt) => handleChange(evt.target.value, index)}
68
- />
69
- {index === Math.floor(length / 2 - 1) && (
70
- <Divider className="authing-code-input-divider" />
71
- )}
72
- </Fragment>
73
- ))}
74
- </div>
75
- )
76
- }
@@ -1,24 +0,0 @@
1
- .authing-code-input-item {
2
- text-align: center;
3
- width: 40px;
4
- min-width: 40px;
5
- min-height: 40px;
6
- height: 40px;
7
- line-height: 40px;
8
- &:not(:first-child) {
9
- margin-left: 18px;
10
- }
11
- input {
12
- text-align: center;
13
- }
14
- }
15
- .authing-code-input-divider {
16
- width: 14px;
17
- min-width: 14px;
18
- max-width: 14px;
19
- margin-left: 18px;
20
- }
21
- .authing-code-input {
22
- display: flex;
23
- align-items: center;
24
- }
@@ -1,9 +0,0 @@
1
- export enum ErrorCode {
2
- OTP_MFA_CODE = 1635,
3
- APP_MFA_CODE = 1636,
4
- INPUT_CAPTCHACODE = 2000,
5
- USER_EXISTENCE = 2026,
6
- LOGIN_INVALID = 2021,
7
- PASSWORD_ERROR = 2333,
8
- USER_NOT_EXIST = 2004,
9
- }
@@ -1,27 +0,0 @@
1
- import { i18n } from './locales'
2
-
3
- // https://juejin.im/post/6844903857290477582
4
- export const copyToClipboard = (str: string) => {
5
- const el = document.createElement('textarea') // 创建一个 <textarea> 元素
6
- el.value = str // 设置它的值为你想复制的字符串
7
- el.setAttribute('readonly', '') // 设置为只读以防止干扰
8
- el.style.position = 'absolute'
9
- el.style.left = '-9999px' // 移出屏幕外以使其不可见
10
- document.body.appendChild(el) // 插入 <textarea> 元素到 HTML 文档中
11
- try {
12
- const selected =
13
- document.getSelection()!.rangeCount > 0 // 检查是否之前曾选中过内容
14
- ? document.getSelection()!.getRangeAt(0) // 如果找到,则保存选中
15
- : false // 标记为 false 以表示不存在之前选中的内容
16
- el.select() // 选中 <textarea> 的内容
17
- document.execCommand('copy') // 复制 - 仅当作为用户操作的响应结果时才可以工作(比如,点击事件)
18
- document.body.removeChild(el) // 移除 <textarea> 元素
19
- if (selected) {
20
- // 如果在复制前已存在选中的内容
21
- document.getSelection()!.removeAllRanges() // 取消 HTML 文档中所有的选中部分
22
- document.getSelection()!.addRange(selected) // 恢复原来的选中
23
- }
24
- } catch (e) {
25
- console.warn(i18n.t('common.copyFailed'))
26
- }
27
- }