@authing/react-ui-components 3.0.2-Beta.0 → 3.0.2-beta.10

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 (262) hide show
  1. package/lib/index.d.ts +466 -45
  2. package/lib/index.min.css +2 -2
  3. package/lib/index.min.js +1 -1
  4. package/package.json +26 -10
  5. package/.eslintignore +0 -6
  6. package/.eslintrc.js +0 -7
  7. package/.prettierrc +0 -5
  8. package/.vscode/settings.json +0 -31
  9. package/build/asset-manifest.json +0 -26
  10. package/build/favicon.ico +0 -0
  11. package/build/index.html +0 -1
  12. package/build/logo192.png +0 -0
  13. package/build/logo512.png +0 -0
  14. package/build/manifest.json +0 -25
  15. package/build/robots.txt +0 -3
  16. package/build/static/css/2.9512539b.chunk.css +0 -3
  17. package/build/static/css/2.9512539b.chunk.css.map +0 -1
  18. package/build/static/css/main.0ff9e24a.chunk.css +0 -2
  19. package/build/static/css/main.0ff9e24a.chunk.css.map +0 -1
  20. package/build/static/js/2.1105ecfb.chunk.js +0 -3
  21. package/build/static/js/2.1105ecfb.chunk.js.LICENSE.txt +0 -102
  22. package/build/static/js/2.1105ecfb.chunk.js.map +0 -1
  23. package/build/static/js/3.fd17f196.chunk.js +0 -2
  24. package/build/static/js/3.fd17f196.chunk.js.map +0 -1
  25. package/build/static/js/main.a47645ff.chunk.js +0 -2
  26. package/build/static/js/main.a47645ff.chunk.js.map +0 -1
  27. package/build/static/js/runtime-main.ef138021.js +0 -2
  28. package/build/static/js/runtime-main.ef138021.js.map +0 -1
  29. package/build/static/media/loading.4a67a5f3.svg +0 -29
  30. package/components/AuthingDropdown/index.tsx +0 -52
  31. package/components/AuthingDropdown/style.less +0 -43
  32. package/components/AuthingGuard/AppMFALayout/index.tsx +0 -74
  33. package/components/AuthingGuard/AppMFALayout/style.less +0 -12
  34. package/components/AuthingGuard/CompleteUserInfoLayout/index.tsx +0 -29
  35. package/components/AuthingGuard/CompleteUserInfoLayout/style.less +0 -8
  36. package/components/AuthingGuard/Forms/ADLoginForm/index.tsx +0 -117
  37. package/components/AuthingGuard/Forms/Agreements/index.tsx +0 -81
  38. package/components/AuthingGuard/Forms/Agreements/style.less +0 -44
  39. package/components/AuthingGuard/Forms/CompleteUserInfoForm/index.tsx +0 -139
  40. package/components/AuthingGuard/Forms/EmailMfaVerifyForm/CheckEmailForm.tsx +0 -84
  41. package/components/AuthingGuard/Forms/EmailMfaVerifyForm/VerifyCodeForm.tsx +0 -116
  42. package/components/AuthingGuard/Forms/EmailMfaVerifyForm/index.tsx +0 -40
  43. package/components/AuthingGuard/Forms/EmailMfaVerifyForm/style.less +0 -0
  44. package/components/AuthingGuard/Forms/EmailRegisterForm/index.tsx +0 -181
  45. package/components/AuthingGuard/Forms/EmailRegisterForm/style.less +0 -0
  46. package/components/AuthingGuard/Forms/LdapLoginForm/index.tsx +0 -166
  47. package/components/AuthingGuard/Forms/LdapLoginForm/style.less +0 -0
  48. package/components/AuthingGuard/Forms/LoginFormFooter/index.tsx +0 -76
  49. package/components/AuthingGuard/Forms/LoginFormFooter/style.less +0 -6
  50. package/components/AuthingGuard/Forms/MfaResetCodeForm/Step1.tsx +0 -86
  51. package/components/AuthingGuard/Forms/MfaResetCodeForm/Step2.tsx +0 -53
  52. package/components/AuthingGuard/Forms/MfaResetCodeForm/index.tsx +0 -65
  53. package/components/AuthingGuard/Forms/MfaResetCodeForm/style.less +0 -20
  54. package/components/AuthingGuard/Forms/MfaVerifyForm/index.tsx +0 -105
  55. package/components/AuthingGuard/Forms/MfaVerifyForm/style.less +0 -12
  56. package/components/AuthingGuard/Forms/PasswordLoginForm/index.tsx +0 -261
  57. package/components/AuthingGuard/Forms/PhoneCodeLoginForm/index.tsx +0 -133
  58. package/components/AuthingGuard/Forms/PhoneRegisterForm/index.tsx +0 -202
  59. package/components/AuthingGuard/Forms/QrCodeLoginForm/index.tsx +0 -59
  60. package/components/AuthingGuard/Forms/QrCodeLoginForm/style.less +0 -14
  61. package/components/AuthingGuard/Forms/RegisterFormFooter/index.tsx +0 -56
  62. package/components/AuthingGuard/Forms/RegisterFormFooter/style.less +0 -0
  63. package/components/AuthingGuard/Forms/ResetPwdForm/Footer.tsx +0 -21
  64. package/components/AuthingGuard/Forms/ResetPwdForm/Step1.tsx +0 -86
  65. package/components/AuthingGuard/Forms/ResetPwdForm/Step2.tsx +0 -127
  66. package/components/AuthingGuard/Forms/ResetPwdForm/Step3.tsx +0 -141
  67. package/components/AuthingGuard/Forms/ResetPwdForm/Step4.tsx +0 -51
  68. package/components/AuthingGuard/Forms/ResetPwdForm/index.tsx +0 -96
  69. package/components/AuthingGuard/Forms/ResetPwdForm/style.less +0 -3
  70. package/components/AuthingGuard/Forms/SendPhoneCode/SendCodeBtn.tsx +0 -88
  71. package/components/AuthingGuard/Forms/SendPhoneCode/index.tsx +0 -50
  72. package/components/AuthingGuard/Forms/SendPhoneCode/style.less +0 -26
  73. package/components/AuthingGuard/Forms/SmsMfaVerifyForm/CheckPhoneForm.tsx +0 -86
  74. package/components/AuthingGuard/Forms/SmsMfaVerifyForm/VerifyCodeForm.tsx +0 -113
  75. package/components/AuthingGuard/Forms/SmsMfaVerifyForm/index.tsx +0 -40
  76. package/components/AuthingGuard/Forms/SmsMfaVerifyForm/style.less +0 -3
  77. package/components/AuthingGuard/Forms/SocialAndIdpLogin/index.tsx +0 -325
  78. package/components/AuthingGuard/Forms/SocialAndIdpLogin/style.less +0 -75
  79. package/components/AuthingGuard/Forms/UploadImage/index.tsx +0 -70
  80. package/components/AuthingGuard/Forms/index.ts +0 -13
  81. package/components/AuthingGuard/GuardLayout/index.tsx +0 -474
  82. package/components/AuthingGuard/GuardLayout/style.less +0 -111
  83. package/components/AuthingGuard/Header/index.tsx +0 -25
  84. package/components/AuthingGuard/Header/style.less +0 -52
  85. package/components/AuthingGuard/IconFont/iconfont.js +0 -74
  86. package/components/AuthingGuard/IconFont/index.tsx +0 -19
  87. package/components/AuthingGuard/IconFont/style.less +0 -6
  88. package/components/AuthingGuard/IconFont/svg.js +0 -2
  89. package/components/AuthingGuard/LoginLayout/index.tsx +0 -161
  90. package/components/AuthingGuard/LoginLayout/style.less +0 -0
  91. package/components/AuthingGuard/MfaLayout/Steps.ts +0 -4
  92. package/components/AuthingGuard/MfaLayout/index.tsx +0 -49
  93. package/components/AuthingGuard/MfaLayout/style.less +0 -3
  94. package/components/AuthingGuard/RegisterLayout/index.tsx +0 -89
  95. package/components/AuthingGuard/RegisterLayout/style.less +0 -0
  96. package/components/AuthingGuard/ResetPwdLayout/index.tsx +0 -20
  97. package/components/AuthingGuard/ToggleLang/index.tsx +0 -51
  98. package/components/AuthingGuard/api/appConfig.ts +0 -146
  99. package/components/AuthingGuard/api/index.ts +0 -3
  100. package/components/AuthingGuard/api/sso.ts +0 -29
  101. package/components/AuthingGuard/api/userPoolConfig.ts +0 -111
  102. package/components/AuthingGuard/constants.ts +0 -107
  103. package/components/AuthingGuard/hooks/index.tsx +0 -70
  104. package/components/AuthingGuard/hooks/useScreenSize.tsx +0 -68
  105. package/components/AuthingGuard/index.tsx +0 -126
  106. package/components/AuthingGuard/style.less +0 -103
  107. package/components/AuthingGuard/types/Forms.ts +0 -94
  108. package/components/AuthingGuard/types/GuardConfig.ts +0 -420
  109. package/components/AuthingGuard/types/GuardState.ts +0 -7
  110. package/components/AuthingGuard/types/Locales.ts +0 -12
  111. package/components/AuthingGuard/types/index.ts +0 -4
  112. package/components/AuthingTabs/index.tsx +0 -98
  113. package/components/AuthingTabs/style.less +0 -135
  114. package/components/BindTotp/core/bindSuccess.tsx +0 -73
  115. package/components/BindTotp/core/securityCode.tsx +0 -108
  116. package/components/BindTotp/index.tsx +0 -134
  117. package/components/BindTotp/interface.ts +0 -30
  118. package/components/BindTotp/styles.less +0 -57
  119. package/components/ChangeLanguage/index.tsx +0 -35
  120. package/components/ChangePassword/core/firstLoginReset.tsx +0 -104
  121. package/components/ChangePassword/core/rotateReset.tsx +0 -114
  122. package/components/ChangePassword/index.tsx +0 -59
  123. package/components/CompleteInfo/core/completeInfo.tsx +0 -155
  124. package/components/CompleteInfo/index.tsx +0 -45
  125. package/components/CompleteInfo/interface.ts +0 -40
  126. package/components/CompleteInfo/styles.less +0 -7
  127. package/components/CopyAbleText/index.tsx +0 -54
  128. package/components/CopyAbleText/style.less +0 -13
  129. package/components/DownloadAuthenticator/index.tsx +0 -97
  130. package/components/DownloadAuthenticator/interface.ts +0 -22
  131. package/components/DownloadAuthenticator/styles.less +0 -52
  132. package/components/Error/index.tsx +0 -21
  133. package/components/Error/interface.ts +0 -9
  134. package/components/Error/styles.less +0 -12
  135. package/components/ForgetPassword/core/resetPassword.tsx +0 -162
  136. package/components/ForgetPassword/index.tsx +0 -78
  137. package/components/ForgetPassword/interface.ts +0 -32
  138. package/components/Guard/Guard.tsx +0 -255
  139. package/components/Guard/authClient.ts +0 -46
  140. package/components/Guard/config.ts +0 -19
  141. package/components/Guard/event.ts +0 -52
  142. package/components/Guard/index.tsx +0 -4
  143. package/components/Guard/module.ts +0 -20
  144. package/components/Guard/stateMachine.ts +0 -133
  145. package/components/Guard/styles.less +0 -461
  146. package/components/IconFont/iconfont.js +0 -74
  147. package/components/IconFont/index.tsx +0 -16
  148. package/components/IconFont/style.less +0 -6
  149. package/components/IconFont/svg.js +0 -2
  150. package/components/ImagePro/index.tsx +0 -53
  151. package/components/ImagePro/styles.less +0 -40
  152. package/components/InputNumber/index.tsx +0 -33
  153. package/components/Login/codemap.ts +0 -47
  154. package/components/Login/core/withAD.tsx +0 -9
  155. package/components/Login/core/withAppQrcode.tsx +0 -49
  156. package/components/Login/core/withLDAP.tsx +0 -146
  157. package/components/Login/core/withPassword/FormItemAccount.tsx +0 -42
  158. package/components/Login/core/withPassword/GraphicVerifyCode.tsx +0 -31
  159. package/components/Login/core/withPassword/InputAccount.tsx +0 -64
  160. package/components/Login/core/withPassword/index.tsx +0 -173
  161. package/components/Login/core/withPhonecode.tsx +0 -122
  162. package/components/Login/core/withWechatMiniQrcode.tsx +0 -60
  163. package/components/Login/core/withWechatmpQrcode.tsx +0 -53
  164. package/components/Login/index.tsx +0 -373
  165. package/components/Login/props.ts +0 -74
  166. package/components/Login/socialLogin/index.tsx +0 -407
  167. package/components/Login/socialLogin/style.less +0 -69
  168. package/components/Login/styles.less +0 -53
  169. package/components/MFA/VerifyCodeInput/VerifyCodeFormItem.tsx +0 -41
  170. package/components/MFA/VerifyCodeInput/index.tsx +0 -145
  171. package/components/MFA/VerifyCodeInput/style.less +0 -35
  172. package/components/MFA/codemap.ts +0 -24
  173. package/components/MFA/core/email.tsx +0 -203
  174. package/components/MFA/core/face.tsx +0 -297
  175. package/components/MFA/core/face_deps.tsx +0 -37
  176. package/components/MFA/core/sms.tsx +0 -204
  177. package/components/MFA/core/totp.tsx +0 -122
  178. package/components/MFA/index.tsx +0 -143
  179. package/components/MFA/mfaMethods/index.tsx +0 -88
  180. package/components/MFA/mfaMethods/style.less +0 -39
  181. package/components/MFA/props.ts +0 -51
  182. package/components/MFA/styles.less +0 -100
  183. package/components/NeedHelpView/core/describeQuestions.tsx +0 -245
  184. package/components/NeedHelpView/index.tsx +0 -47
  185. package/components/RecoveryCode/core/useCode.tsx +0 -71
  186. package/components/RecoveryCode/index.tsx +0 -27
  187. package/components/RecoveryCode/interface.ts +0 -31
  188. package/components/RecoveryCode/style.less +0 -13
  189. package/components/Register/codemap.ts +0 -12
  190. package/components/Register/components/Agreements/index.tsx +0 -81
  191. package/components/Register/components/Agreements/style.less +0 -44
  192. package/components/Register/core/WithEmail.tsx +0 -239
  193. package/components/Register/core/WithPhone.tsx +0 -184
  194. package/components/Register/index.tsx +0 -138
  195. package/components/Register/props.ts +0 -50
  196. package/components/SendCode/SendCodeBtn.tsx +0 -96
  197. package/components/SendCode/index.tsx +0 -94
  198. package/components/SendCode/style.less +0 -31
  199. package/components/ShieldSpin/index.tsx +0 -27
  200. package/components/ShieldSpin/loading.svg +0 -29
  201. package/components/SubmitButton/index.tsx +0 -50
  202. package/components/SubmitSuccess/index.tsx +0 -66
  203. package/components/SubmitSuccess/interface.ts +0 -17
  204. package/components/Type/index.ts +0 -52
  205. package/components/ValidatorRules/EmailFormItem.tsx +0 -95
  206. package/components/ValidatorRules/PhoneFormItem.tsx +0 -100
  207. package/components/ValidatorRules/index.ts +0 -14
  208. package/components/VerifyCodeInput/index.tsx +0 -76
  209. package/components/VerifyCodeInput/style.less +0 -24
  210. package/components/_utils/GuardErrorCode.ts +0 -9
  211. package/components/_utils/clipboard.ts +0 -27
  212. package/components/_utils/config.ts +0 -118
  213. package/components/_utils/guradHttp.ts +0 -97
  214. package/components/_utils/hooks/index.ts +0 -64
  215. package/components/_utils/http.ts +0 -85
  216. package/components/_utils/index.ts +0 -322
  217. package/components/_utils/locales/en/common.json +0 -227
  218. package/components/_utils/locales/en/index.ts +0 -6
  219. package/components/_utils/locales/en/login.json +0 -96
  220. package/components/_utils/locales/en/map.json +0 -4
  221. package/components/_utils/locales/en/user.json +0 -82
  222. package/components/_utils/locales/index.ts +0 -45
  223. package/components/_utils/locales/zh/common.json +0 -227
  224. package/components/_utils/locales/zh/index.ts +0 -6
  225. package/components/_utils/locales/zh/login.json +0 -96
  226. package/components/_utils/locales/zh/map.json +0 -4
  227. package/components/_utils/locales/zh/user.json +0 -82
  228. package/components/_utils/popupCenter.ts +0 -48
  229. package/components/assets/images/error.png +0 -0
  230. package/components/context/base.tsx +0 -28
  231. package/components/context/global/context.tsx +0 -39
  232. package/components/context/global/reducer.tsx +0 -56
  233. package/components/context/module/context.tsx +0 -23
  234. package/components/index.ts +0 -12
  235. package/config/antdReplacer.js +0 -51
  236. package/config/env.js +0 -104
  237. package/config/getHttpsConfig.js +0 -66
  238. package/config/jest/cssTransform.js +0 -14
  239. package/config/jest/fileTransform.js +0 -40
  240. package/config/modules.js +0 -134
  241. package/config/paths.js +0 -71
  242. package/config/pnpTs.js +0 -35
  243. package/config/webpack.config.js +0 -835
  244. package/config/webpackDevServer.config.js +0 -130
  245. package/examples.tsx +0 -82
  246. package/index.js +0 -1
  247. package/logo.svg +0 -7
  248. package/public/favicon.ico +0 -0
  249. package/public/index.html +0 -43
  250. package/public/logo192.png +0 -0
  251. package/public/logo512.png +0 -0
  252. package/public/manifest.json +0 -25
  253. package/public/robots.txt +0 -3
  254. package/react-app-env.d.ts +0 -71
  255. package/reportWebVitals.ts +0 -15
  256. package/scripts/build.js +0 -208
  257. package/scripts/lib.js +0 -200
  258. package/scripts/publish.js +0 -57
  259. package/scripts/start.js +0 -162
  260. package/scripts/test.js +0 -49
  261. package/setupTests.ts +0 -5
  262. package/tsconfig.json +0 -30
@@ -1,146 +0,0 @@
1
- import React, { useRef, useState } from 'react'
2
- import { useTranslation } from 'react-i18next'
3
- import { LockOutlined, UserOutlined } from '@ant-design/icons'
4
- import { Form, Input } from 'antd'
5
- import { LoginMethods } from '../../'
6
- import { ErrorCode } from '../../_utils/GuardErrorCode'
7
- import { useAuthClient } from '../../Guard/authClient'
8
- import SubmitButton from '../../SubmitButton'
9
- import { fieldRequiredRule } from '../../_utils'
10
-
11
- interface LoginWithLDAPProps {
12
- // configs
13
- publicKey: string
14
- autoRegister?: boolean
15
- host?: string
16
-
17
- // events
18
- onLogin: any
19
- onBeforeLogin: any
20
- }
21
-
22
- export const LoginWithLDAP = (props: LoginWithLDAPProps) => {
23
- let client = useAuthClient()
24
- const { t } = useTranslation()
25
- let submitButtonRef = useRef<any>(null)
26
-
27
- const [showCaptcha, setShowCaptcha] = useState(false)
28
- const [verifyCodeUrl, setVerifyCodeUrl] = useState('')
29
- const captchaUrl = `${props.host}/api/v2/security/captcha`
30
- const getCaptchaUrl = () => `${captchaUrl}?r=${+new Date()}`
31
-
32
- const onFinish = async (values: any) => {
33
- // onBeforeLogin
34
- submitButtonRef.current.onSpin(true)
35
- let loginInfo = {
36
- type: LoginMethods.LDAP,
37
- data: {
38
- identity: values.account,
39
- password: values.password,
40
- captchaCode: values.captchaCode,
41
- },
42
- }
43
- let context = await props.onBeforeLogin(loginInfo)
44
- if (!context) {
45
- submitButtonRef.current.onSpin(false)
46
- return
47
- }
48
-
49
- // onLogin
50
- let account = values.account && values.account.trim()
51
- let password = values.password && values.password.trim()
52
- let captchaCode = values.captchaCode && values.captchaCode.trim()
53
- try {
54
- const user = await client.loginByLdap(account, password, {
55
- autoRegister: props.autoRegister,
56
- captchaCode,
57
- })
58
- props.onLogin(200, user)
59
- } catch (error: any) {
60
- if (typeof error?.message === 'string') {
61
- let e = { code: 2333, data: {}, message: t('common.timeoutLDAP') }
62
- try {
63
- e = JSON.parse(error?.message)
64
- console.log('paser error.message error,cheke error', error)
65
- // onFail && onFail(errorData)
66
- submitButtonRef.current.onSpin(false)
67
- return
68
- } catch {}
69
- if (e.code === ErrorCode.INPUT_CAPTCHACODE) {
70
- setVerifyCodeUrl(getCaptchaUrl())
71
- setShowCaptcha(true)
72
- }
73
- submitButtonRef.current.onSpin(false)
74
- props.onLogin(e.code, e.data, e.message)
75
- // onFail && onFail(error)
76
- }
77
- }
78
- }
79
-
80
- return (
81
- <div className="authing-g2-login-ldap">
82
- <Form
83
- name="passworLogin"
84
- onFinish={onFinish}
85
- onFinishFailed={() => submitButtonRef.current.onError()}
86
- autoComplete="off"
87
- >
88
- <Form.Item
89
- className="authing-g2-input-form"
90
- name="account"
91
- rules={fieldRequiredRule(t('common.account'))}
92
- >
93
- <Input
94
- className="authing-g2-input"
95
- autoComplete="email,username,tel"
96
- size="large"
97
- placeholder={t('login.inputLdapUsername')}
98
- prefix={<UserOutlined style={{ color: '#878A95' }} />}
99
- />
100
- </Form.Item>
101
- <Form.Item
102
- className="authing-g2-input-form"
103
- name="password"
104
- rules={fieldRequiredRule(t('common.password'))}
105
- >
106
- <Input.Password
107
- className="authing-g2-input"
108
- size="large"
109
- placeholder={t('login.inputLdapPwd')}
110
- prefix={<LockOutlined style={{ color: '#878A95' }} />}
111
- />
112
- </Form.Item>
113
- {showCaptcha && (
114
- <Form.Item
115
- className="authing-g2-input-form"
116
- name="captchaCode"
117
- rules={[{ required: true, message: t('login.inputCaptchaCode') }]}
118
- >
119
- <Input
120
- className="authing-g2-input add-after"
121
- size="large"
122
- placeholder={t('login.inputCaptchaCode')}
123
- addonAfter={
124
- <img
125
- className="g2-captcha-code-image"
126
- src={verifyCodeUrl}
127
- alt={t('login.captchaCode')}
128
- style={{ height: '2em', cursor: 'pointer' }}
129
- onClick={() => setVerifyCodeUrl(getCaptchaUrl())}
130
- />
131
- }
132
- />
133
- </Form.Item>
134
- )}
135
-
136
- <Form.Item>
137
- <SubmitButton
138
- text={t('common.login')}
139
- className="password"
140
- ref={submitButtonRef}
141
- />
142
- </Form.Item>
143
- </Form>
144
- </div>
145
- )
146
- }
@@ -1,42 +0,0 @@
1
- import { FormItemProps } from 'antd/lib/form'
2
- import FormItem from 'antd/lib/form/FormItem'
3
- import React, { useMemo } from 'react'
4
- import { useTranslation } from 'react-i18next'
5
- import { PasswordLoginMethods } from '../../../AuthingGuard/api'
6
- import { EmailFormItem, PhoneFormItem } from '../../../ValidatorRules'
7
- import { fieldRequiredRule } from '../../../_utils'
8
-
9
- export interface FormItemAccountProps extends FormItemProps {
10
- passwordLoginMethods: PasswordLoginMethods[]
11
- }
12
-
13
- export const FormItemAccount: React.FC<FormItemAccountProps> = (props) => {
14
- const { passwordLoginMethods: methods, ...formItemPtops } = props
15
- const { t } = useTranslation()
16
-
17
- const runderTemplate = useMemo(() => {
18
- if (methods.length !== 1)
19
- return (
20
- <FormItem
21
- rules={fieldRequiredRule(t('common.account'))}
22
- {...formItemPtops}
23
- />
24
- )
25
-
26
- switch (methods[0]) {
27
- case 'phone-password':
28
- return <PhoneFormItem {...formItemPtops} />
29
- case 'email-password':
30
- return <EmailFormItem {...formItemPtops} />
31
- case 'username-password':
32
- return (
33
- <FormItem
34
- rules={fieldRequiredRule(t('common.username'))}
35
- {...formItemPtops}
36
- />
37
- )
38
- }
39
- }, [formItemPtops, methods, t])
40
-
41
- return <>{runderTemplate}</>
42
- }
@@ -1,31 +0,0 @@
1
- import { Row, Col } from 'antd'
2
- import Input, { InputProps } from 'antd/lib/input'
3
- import React from 'react'
4
- import { useTranslation } from 'react-i18next'
5
- import { ImagePro } from '../../../ImagePro'
6
-
7
- export interface GraphicVerifyCodeProps extends InputProps {
8
- verifyCodeUrl: string
9
- changeCode: () => void
10
- }
11
-
12
- export const GraphicVerifyCode: React.FC<GraphicVerifyCodeProps> = (props) => {
13
- const { verifyCodeUrl, changeCode, ...inputProps } = props
14
-
15
- const { t } = useTranslation()
16
-
17
- return (
18
- <div className="g2-graphic-verify-code">
19
- <Input {...inputProps} />
20
-
21
- <ImagePro
22
- className="g2-captcha-code-image"
23
- src={verifyCodeUrl}
24
- alt={t('login.captchaCode')}
25
- height="46px"
26
- style={{ cursor: 'pointer' }}
27
- onClick={() => changeCode()}
28
- />
29
- </div>
30
- )
31
- }
@@ -1,64 +0,0 @@
1
- import Input, { InputProps } from 'antd/lib/input'
2
- import React, { useMemo } from 'react'
3
- import { useTranslation } from 'react-i18next'
4
- import { PasswordLoginMethods } from '../../../AuthingGuard/api'
5
- import { InputNumber } from '../../../InputNumber'
6
-
7
- export interface InputAccountProps extends InputProps {
8
- passwordLoginMethods: PasswordLoginMethods[]
9
- }
10
-
11
- export const InputAccount: React.FC<InputAccountProps> = (props) => {
12
- const { passwordLoginMethods: methods, ...inputProps } = props
13
-
14
- const { t } = useTranslation()
15
-
16
- const loginMethodsText = useMemo<
17
- Record<
18
- PasswordLoginMethods,
19
- {
20
- t: string
21
- sort: number
22
- }
23
- >
24
- >(
25
- () => ({
26
- 'email-password': {
27
- t: t('common.email'),
28
- sort: 2,
29
- },
30
- 'phone-password': {
31
- t: t('common.phoneNumber'),
32
- sort: 1,
33
- },
34
- 'username-password': {
35
- t: t('common.username'),
36
- sort: 0,
37
- },
38
- }),
39
- [t]
40
- )
41
-
42
- const placeholder = useMemo(
43
- () =>
44
- t('login.inputAccount', {
45
- text: methods
46
- ?.map((item) => loginMethodsText[item])
47
- .sort((a, b) => a.sort - b.sort)
48
- .map((item) => item.t)
49
- .join(' / '),
50
- }),
51
- [loginMethodsText, methods, t]
52
- )
53
-
54
- const runderInput = useMemo(() => {
55
- if (methods.length === 1 && methods[0] === 'phone-password')
56
- return (
57
- <InputNumber maxLength={11} placeholder={placeholder} {...inputProps} />
58
- )
59
-
60
- return <Input placeholder={placeholder} {...inputProps} />
61
- }, [inputProps, methods, placeholder])
62
-
63
- return <>{runderInput}</>
64
- }
@@ -1,173 +0,0 @@
1
- import React, { useRef, useState } from 'react'
2
- import { Form, Input } from 'antd'
3
- import { UserOutlined, LockOutlined } from '@ant-design/icons'
4
- import { useTranslation } from 'react-i18next'
5
-
6
- import { useGuardHttp } from '../../../_utils/guradHttp'
7
- import { useAuthClient } from '../../../Guard/authClient'
8
- import { fieldRequiredRule, getUserRegisterParams } from '../../../_utils'
9
- import { ErrorCode } from '../../../_utils/GuardErrorCode'
10
- import SubmitButton from '../../../SubmitButton'
11
- import { PasswordLoginMethods } from '../../../AuthingGuard/api'
12
- import { LoginMethods } from '../../..'
13
- import { FormItemAccount } from './FormItemAccount'
14
- import { InputAccount } from './InputAccount'
15
- import { GraphicVerifyCode } from './GraphicVerifyCode'
16
-
17
- interface LoginWithPasswordProps {
18
- // configs
19
- publicKey: string
20
- autoRegister?: boolean
21
- host?: string
22
-
23
- // events
24
- onLogin: any
25
- onBeforeLogin: any
26
- passwordLoginMethods: PasswordLoginMethods[]
27
- }
28
-
29
- export const LoginWithPassword = (props: LoginWithPasswordProps) => {
30
- let { t } = useTranslation()
31
- let { post } = useGuardHttp()
32
- let client = useAuthClient()
33
-
34
- let submitButtonRef = useRef<any>(null)
35
-
36
- const [showCaptcha, setShowCaptcha] = useState(false)
37
- const [verifyCodeUrl, setVerifyCodeUrl] = useState('')
38
- const [remainCount, setRemainCount] = useState(0)
39
-
40
- const captchaUrl = `${props.host}/api/v2/security/captcha`
41
- const getCaptchaUrl = () => `${captchaUrl}?r=${+new Date()}`
42
-
43
- const encrypt = client.options.encryptFunction
44
-
45
- const onFinish = async (values: any) => {
46
- setRemainCount(0)
47
- // onBeforeLogin
48
- submitButtonRef.current.onSpin(true)
49
- let loginInfo = {
50
- type: LoginMethods.Password,
51
- data: {
52
- identity: values.account,
53
- password: values.password,
54
- captchaCode: values.captchaCode,
55
- },
56
- }
57
- let context = await props.onBeforeLogin(loginInfo)
58
- if (!context) {
59
- submitButtonRef.current.onSpin(false)
60
- return
61
- }
62
-
63
- // onLogin
64
- let url = '/api/v2/login/account'
65
- let account = values.account && values.account.trim()
66
- let password = values.password && values.password.trim()
67
- let captchaCode = values.captchaCode && values.captchaCode.trim()
68
-
69
- let body = {
70
- account: account,
71
- password: await encrypt!(password, props.publicKey),
72
- captchaCode,
73
- customData: getUserRegisterParams(),
74
- autoRegister: props.autoRegister,
75
- }
76
- const { code, message, data } = await post(url, body)
77
-
78
- if (code !== 200) {
79
- submitButtonRef.current.onError()
80
- }
81
-
82
- if (code === ErrorCode.INPUT_CAPTCHACODE) {
83
- setVerifyCodeUrl(getCaptchaUrl())
84
- setShowCaptcha(true)
85
- }
86
- if (code === ErrorCode.PASSWORD_ERROR) {
87
- if ((data as any)?.remainCount) {
88
- setRemainCount((data as any)?.remainCount ?? 0)
89
- }
90
- }
91
- submitButtonRef.current.onSpin(false)
92
- props.onLogin(code, data, message)
93
- }
94
-
95
- return (
96
- <div className="authing-g2-login-password">
97
- <Form
98
- name="passworLogin"
99
- onFinish={onFinish}
100
- onFinishFailed={() => submitButtonRef.current.onError()}
101
- autoComplete="off"
102
- >
103
- <FormItemAccount
104
- name="account"
105
- className="authing-g2-input-form"
106
- passwordLoginMethods={props.passwordLoginMethods}
107
- >
108
- <InputAccount
109
- className="authing-g2-input"
110
- autoComplete="email,username,tel"
111
- size="large"
112
- prefix={<UserOutlined style={{ color: '#878A95' }} />}
113
- passwordLoginMethods={props.passwordLoginMethods}
114
- />
115
- </FormItemAccount>
116
- <Form.Item
117
- name="password"
118
- className="authing-g2-input-form"
119
- rules={fieldRequiredRule(t('common.password'))}
120
- >
121
- <Input.Password
122
- className="authing-g2-input"
123
- size="large"
124
- placeholder={t('login.inputLoginPwd')}
125
- prefix={<LockOutlined style={{ color: '#878A95' }} />}
126
- />
127
- </Form.Item>
128
- {/* 图形验证码 */}
129
- {showCaptcha && (
130
- <Form.Item
131
- className="authing-g2-input-form"
132
- name="captchaCode"
133
- rules={fieldRequiredRule(t('common.captchaCode'))}
134
- >
135
- <GraphicVerifyCode
136
- className="authing-g2-input"
137
- size="large"
138
- placeholder={t('login.inputCaptchaCode')}
139
- verifyCodeUrl={verifyCodeUrl}
140
- changeCode={() => setVerifyCodeUrl(getCaptchaUrl())}
141
- />
142
- </Form.Item>
143
- )}
144
- {remainCount !== 0 && (
145
- <span
146
- style={{
147
- marginBottom: 23,
148
- fontSize: 12,
149
- color: '#E63333',
150
- display: 'block',
151
- }}
152
- >
153
- {t('common.loginFailCheck', {
154
- number: remainCount,
155
- })}
156
- </span>
157
- )}
158
-
159
- <Form.Item>
160
- <SubmitButton
161
- text={
162
- props.autoRegister
163
- ? `${t('common.login')} / ${t('common.register')}`
164
- : t('common.login')
165
- }
166
- className="password"
167
- ref={submitButtonRef}
168
- />
169
- </Form.Item>
170
- </Form>
171
- </div>
172
- )
173
- }
@@ -1,122 +0,0 @@
1
- import React, { useRef } from 'react'
2
- import { Form } from 'antd'
3
- import { useTranslation } from 'react-i18next'
4
- import { useAuthClient } from '../../Guard/authClient'
5
- import { UserOutlined, SafetyOutlined } from '@ant-design/icons'
6
- import { LoginMethods } from '../../'
7
- import { SendCode } from '../../SendCode'
8
- import { fieldRequiredRule } from '../../_utils'
9
- import SubmitButton from '../../SubmitButton'
10
- import { InputNumber } from '../../InputNumber'
11
- import { PhoneFormItem } from '../../ValidatorRules'
12
-
13
- // const formatPhone = (value: any) => {
14
- // if (!value) {
15
- // return ''
16
- // }
17
- // let a = value.slice(0, 3)
18
- // let b = value.slice(3, 7)
19
- // let c = value.slice(7, 11)
20
- // if (value.length < 4) {
21
- // return a
22
- // } else if (value.length < 8) {
23
- // return `${a}-${b}`
24
- // } else {
25
- // return `${a}-${b}-${c}`
26
- // }
27
- // }
28
- export const LoginWithPhoneCode = (props: any) => {
29
- let [form] = Form.useForm()
30
- let submitButtonRef = useRef<any>(null)
31
- const { t } = useTranslation()
32
-
33
- let client = useAuthClient()
34
-
35
- const verifyCodeLength = props.verifyCodeLength ?? 4
36
-
37
- const onFinish = async (values: any) => {
38
- submitButtonRef.current.onSpin(true)
39
- // onBeforeLogin
40
- let loginInfo = {
41
- type: LoginMethods.Password,
42
- data: {
43
- phone: values.phone,
44
- code: values.code,
45
- },
46
- }
47
- let context = await props.onBeforeLogin(loginInfo)
48
- if (!context) {
49
- submitButtonRef.current.onSpin(false)
50
- return
51
- }
52
-
53
- let loginContext = client.loginByPhoneCode(values.phone, values.code)
54
- loginContext
55
- .then((u) => {
56
- submitButtonRef.current.onSpin(false)
57
- props.onLogin(200, u)
58
- })
59
- .catch((e) => {
60
- submitButtonRef.current.onSpin(false)
61
- props.onLogin(e.code, e.data, e.message)
62
- })
63
- }
64
-
65
- return (
66
- <div className="authing-g2-login-phone-code">
67
- <Form
68
- name="phoneCode"
69
- form={form}
70
- onFinish={onFinish}
71
- onFinishFailed={() => submitButtonRef.current.onError()}
72
- autoComplete="off"
73
- >
74
- <PhoneFormItem className="authing-g2-input-form" name="phone">
75
- <InputNumber
76
- className="authing-g2-input"
77
- autoComplete="tel"
78
- type="tel"
79
- size="large"
80
- // 只有 InputNumber formatter、controls API
81
- maxLength={11}
82
- // formatter={formatPhone}
83
- // parser={(value) => (value ? value.replaceAll('-', '') : '')}
84
- placeholder={t('login.inputPhone')}
85
- prefix={<UserOutlined style={{ color: '#878A95' }} />}
86
- />
87
- </PhoneFormItem>
88
- <Form.Item
89
- className="authing-g2-input-form"
90
- name="code"
91
- rules={fieldRequiredRule(t('common.captchaCode'))}
92
- >
93
- <SendCode
94
- className="authing-g2-input"
95
- autoComplete="one-time-code"
96
- size="large"
97
- placeholder={t('common.inputFourVerifyCode', {
98
- length: verifyCodeLength,
99
- })}
100
- maxLength={verifyCodeLength}
101
- prefix={<SafetyOutlined style={{ color: '#878A95' }} />}
102
- method="phone"
103
- data={''}
104
- form={form}
105
- onSendCodeBefore={() => form.validateFields(['phone'])}
106
- />
107
- </Form.Item>
108
- <Form.Item>
109
- <SubmitButton
110
- text={
111
- props.autoRegister
112
- ? `${t('common.login')} / ${t('common.register')}`
113
- : t('common.login')
114
- }
115
- className="password"
116
- ref={submitButtonRef}
117
- />
118
- </Form.Item>
119
- </Form>
120
- </div>
121
- )
122
- }
@@ -1,60 +0,0 @@
1
- import React, { useEffect, useRef, useState } from 'react'
2
- import { message } from 'antd'
3
- import { ShieldSpin } from '../../ShieldSpin'
4
- import { useAuthClient } from '../../Guard/authClient'
5
-
6
- interface LoginWithWechatMiniQrcodeProps {
7
- onLogin: any
8
- canLoop: boolean
9
- qrCodeScanOptions: any
10
- }
11
-
12
- export const LoginWithWechatMiniQrcode = (
13
- props: LoginWithWechatMiniQrcodeProps
14
- ) => {
15
- const timerRef = useRef<any>()
16
- const client = useAuthClient()
17
- const [loading, setLoading] = useState(true)
18
- const appQrcodeClient = client.wxqrcode
19
-
20
- useEffect(() => {
21
- return () => {
22
- clearInterval(timerRef.current)
23
- }
24
- }, [])
25
-
26
- useEffect(() => {
27
- if (!props.canLoop) {
28
- return
29
- }
30
- appQrcodeClient.startScanning('authingGuardMiniQrcode', {
31
- autoExchangeUserInfo: true,
32
- ...props.qrCodeScanOptions,
33
- onCodeLoaded() {
34
- setLoading(false)
35
- },
36
- onStart(timer) {
37
- // console.log('开始扫码')
38
- timerRef.current = timer
39
- },
40
- onSuccess(user) {
41
- // console.log('扫码完成', user)
42
- // onSuccess && onSuccess(user as User)
43
- props.onLogin(200, user)
44
- },
45
- onError: (ms) => {
46
- // config.qrCodeScanOptions?.onError?.(message)
47
- // onFail && onFail(`${message}`)
48
- message.error(ms)
49
- },
50
- })
51
- // eslint-disable-next-line react-hooks/exhaustive-deps
52
- }, [appQrcodeClient, props.canLoop, props.qrCodeScanOptions])
53
-
54
- return (
55
- <div className="authing-g2-login-app-qrcode">
56
- {loading && <ShieldSpin />}
57
- <div id="authingGuardMiniQrcode"></div>
58
- </div>
59
- )
60
- }
@@ -1,53 +0,0 @@
1
- import React, { useEffect, useRef, useState } from 'react'
2
- import { ShieldSpin } from '../../ShieldSpin'
3
- import { useAuthClient } from '../../Guard/authClient'
4
-
5
- interface LoginWithWechatmpQrcodeProps {
6
- onLogin: any
7
- canLoop: boolean
8
- qrCodeScanOptions: any
9
- }
10
-
11
- export const LoginWithWechatmpQrcode = (
12
- props: LoginWithWechatmpQrcodeProps
13
- ) => {
14
- const timerRef = useRef<any>()
15
- const client = useAuthClient()
16
- const [loading, setLoading] = useState(true)
17
-
18
- const appQrcodeClient = client.wechatmpqrcode
19
- // const config = props.config
20
-
21
- useEffect(() => {
22
- if (!props.canLoop) {
23
- return
24
- }
25
- appQrcodeClient.startScanning('authingGuardMpQrcode', {
26
- autoExchangeUserInfo: true,
27
- ...props.qrCodeScanOptions,
28
- onCodeLoaded() {
29
- setLoading(false)
30
- },
31
- onStart(timer) {
32
- timerRef.current = timer
33
- },
34
- onSuccess(user) {
35
- props.onLogin(200, user)
36
- // onSuccess && onSuccess(user as User)
37
- },
38
- onError: (message) => {
39
- // config.qrCodeScanOptions?.onError?.(message)
40
- // onFail && onFail(`${message}`)
41
- },
42
- })
43
- return () => clearInterval(timerRef.current)
44
- // eslint-disable-next-line react-hooks/exhaustive-deps
45
- }, [appQrcodeClient, props.canLoop, props.qrCodeScanOptions])
46
-
47
- return (
48
- <div className="authing-g2-login-app-qrcode">
49
- {loading && <ShieldSpin />}
50
- <div id="authingGuardMpQrcode"></div>
51
- </div>
52
- )
53
- }