@authing/react-ui-components 2.4.55-alpha.3 → 2.4.55-alpha.7

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 (32) hide show
  1. package/lib/index.d.ts +11 -2
  2. package/lib/index.min.js +1 -1
  3. package/package.json +2 -2
  4. package/src/components/AuthingGuard/Forms/SocialAndIdpLogin/index.tsx +3 -3
  5. package/src/components/AuthingGuard/GuardLayout/index.tsx +6 -1
  6. package/src/components/AuthingGuard/LoginLayout/index.tsx +55 -42
  7. package/src/components/AuthingGuard/api/appConfig.ts +17 -1
  8. package/src/components/AuthingGuard/api/userPoolConfig.ts +2 -0
  9. package/src/components/AuthingGuard/style.less +1 -0
  10. package/src/components/AuthingGuard/types/GuardConfig.ts +2 -0
  11. package/src/index.tsx +16 -5
  12. package/yarn-error.log +5860 -5105
  13. package/build/asset-manifest.json +0 -25
  14. package/build/favicon.ico +0 -0
  15. package/build/index.html +0 -1
  16. package/build/logo192.png +0 -0
  17. package/build/logo512.png +0 -0
  18. package/build/manifest.json +0 -25
  19. package/build/robots.txt +0 -3
  20. package/build/static/css/2.e5f4a1ca.chunk.css +0 -2
  21. package/build/static/css/2.e5f4a1ca.chunk.css.map +0 -1
  22. package/build/static/css/main.4dd73333.chunk.css +0 -2
  23. package/build/static/css/main.4dd73333.chunk.css.map +0 -1
  24. package/build/static/js/2.b28e1968.chunk.js +0 -3
  25. package/build/static/js/2.b28e1968.chunk.js.LICENSE.txt +0 -70
  26. package/build/static/js/2.b28e1968.chunk.js.map +0 -1
  27. package/build/static/js/3.584da164.chunk.js +0 -2
  28. package/build/static/js/3.584da164.chunk.js.map +0 -1
  29. package/build/static/js/main.eeb41586.chunk.js +0 -2
  30. package/build/static/js/main.eeb41586.chunk.js.map +0 -1
  31. package/build/static/js/runtime-main.6174f3e9.js +0 -2
  32. package/build/static/js/runtime-main.6174f3e9.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@authing/react-ui-components",
3
- "version": "2.4.55-alpha.3",
3
+ "version": "2.4.55-alpha.7",
4
4
  "private": false,
5
5
  "main": "lib/index.min.js",
6
6
  "typings": "lib/index.d.ts",
@@ -185,4 +185,4 @@
185
185
  "webpack-manifest-plugin": "2.2.0",
186
186
  "workbox-webpack-plugin": "5.1.4"
187
187
  }
188
- }
188
+ }
@@ -218,7 +218,7 @@ export const SocialAndIdpLogin: FC<SocialAndIdpLoginProps> = ({
218
218
  }
219
219
 
220
220
  const onLogin = () => {
221
- authClient.social.authorize(item.provider, {
221
+ authClient.social.authorize(item.identifier, {
222
222
  onSuccess(user) {
223
223
  onSuccess(user)
224
224
  },
@@ -254,12 +254,12 @@ export const SocialAndIdpLogin: FC<SocialAndIdpLoginProps> = ({
254
254
  }
255
255
  onClick={onLogin}
256
256
  >
257
- {item.tooltip?.[i18n.language as Lang] || item.name}
257
+ {item.tooltip?.[i18n.language as Lang] || item.displayName}
258
258
  </Button>
259
259
  ) : (
260
260
  <Tooltip
261
261
  key={item.provider}
262
- title={item.tooltip?.[i18n.language as Lang] || item.name}
262
+ title={item.tooltip?.[i18n.language as Lang] || item.displayName}
263
263
  >
264
264
  <div className="authing-social-login-item" onClick={onLogin}>
265
265
  <IconFont type={iconType} />
@@ -156,6 +156,9 @@ const useGuardConfig = () => {
156
156
  appConfig.loginTabs?.list ||
157
157
  defaultGuardConfig.loginMethods
158
158
 
159
+ // 扫码多源配置
160
+ const qrcodeTabsSettings = appConfig.qrcodeTabsSettings ?? {}
161
+
159
162
  // 账密登录的登录拆分
160
163
  const passwordLoginMethods =
161
164
  userConfig.passwordLoginMethods ||
@@ -165,7 +168,6 @@ const useGuardConfig = () => {
165
168
  // 默认登录方式
166
169
  const defaultLoginMethod =
167
170
  userConfig.defaultLoginMethod ||
168
- appConfig.loginTabs?.defaultV2 ||
169
171
  appConfig.loginTabs?.default ||
170
172
  defaultGuardConfig.defaultLoginMethod
171
173
 
@@ -236,6 +238,7 @@ const useGuardConfig = () => {
236
238
  defaultRegisterMethod,
237
239
  enterpriseConnectionObjs,
238
240
  publicKey: appConfig.publicKey,
241
+ qrcodeTabsSettings,
239
242
  agreementEnabled: appConfig.agreementEnabled,
240
243
  agreements: appConfig.agreements,
241
244
  loginMethodTitleMapping: loginMethodTitleMapping,
@@ -244,8 +247,10 @@ const useGuardConfig = () => {
244
247
  }, [
245
248
  userConfig,
246
249
  appConfig.loginTabs?.list,
250
+ appConfig.loginTabs?.defaultV2,
247
251
  appConfig.loginTabs?.default,
248
252
  appConfig.loginTabs?.title,
253
+ appConfig.qrcodeTabsSettings,
249
254
  appConfig.passwordTabConfig?.enabledLoginMethods,
250
255
  appConfig.registerTabs?.list,
251
256
  appConfig.registerTabs?.default,
@@ -1,7 +1,7 @@
1
1
  import { message } from 'antd'
2
2
  import { User } from 'authing-js-sdk'
3
3
  import { FormInstance } from 'antd/lib/form'
4
- import React, { useCallback, useRef } from 'react'
4
+ import React, { useCallback, useMemo, useRef } from 'react'
5
5
 
6
6
  import { useGuardContext } from '../../../context/global/context'
7
7
  import {
@@ -113,39 +113,46 @@ const useNormalLoginTabs = ({ onSuccess, onFail }: BaseFormProps) => {
113
113
  const {
114
114
  state: { config },
115
115
  } = useGuardContext()
116
- const { loginMethods = [], loginMethodTitleMapping } = config
117
-
118
- const tabs = loginMethods
119
- .map((tab) => {
120
- if (
121
- !loginMethods.every(
122
- (item) => !(item.split(':').length > 1 && item.split(':')[0] === tab)
123
- )
124
- )
125
- return undefined
126
-
127
- const idpId = tab.split(':').length > 1 ? tab.split(':')[1] : undefined
128
-
129
- if (idpId) {
130
- const type = tab.split(':')[0] as LoginMethods
131
- return {
132
- key: tab,
133
- label: loginMethodTitleMapping[tab]!,
134
- component: LOGIN_FORM_MAP[type]({
135
- ...formProps,
136
- idpId: idpId,
137
- }),
138
- }
139
- } else {
140
- return {
141
- key: tab,
142
- label: LOGIN_METHODS_MAP()?.[tab]!,
143
- component: LOGIN_FORM_MAP[tab](formProps),
144
- }
145
- }
146
- })
147
- .filter((i) => i !== undefined)
116
+ const {
117
+ loginMethods = [],
118
+ loginMethodTitleMapping,
119
+ qrcodeTabsSettings,
120
+ } = config
148
121
 
122
+ let tabs: any[] = []
123
+
124
+ // 兼容 密码登陆 donglyc
125
+ let filterLoginMethods = loginMethods.filter(
126
+ (d) => d.indexOf('password') === -1
127
+ )
128
+ const hasPassword = loginMethods.some((d) => d.indexOf('password') !== -1)
129
+ if (hasPassword) filterLoginMethods.push(LoginMethods.Password)
130
+
131
+ filterLoginMethods.forEach((method: LoginMethods) => {
132
+ if (
133
+ [LoginMethods.WechatMpQrcode, LoginMethods.WxMinQr].includes(method) &&
134
+ qrcodeTabsSettings[method]
135
+ ) {
136
+ tabs.push(
137
+ ...qrcodeTabsSettings[method].map((idp) => {
138
+ return {
139
+ key: idp.id,
140
+ label: idp.title || loginMethodTitleMapping[method],
141
+ component: LOGIN_FORM_MAP[method]({
142
+ ...formProps,
143
+ idp,
144
+ }),
145
+ }
146
+ })
147
+ )
148
+ } else {
149
+ tabs.push({
150
+ key: method,
151
+ label: LOGIN_METHODS_MAP()[method],
152
+ component: LOGIN_FORM_MAP[method](formProps),
153
+ })
154
+ }
155
+ })
149
156
  return {
150
157
  tabs,
151
158
  }
@@ -158,30 +165,36 @@ const SHOW_SOCIAL_LOGIN_TAB = [
158
165
  ]
159
166
  export const LoginLayout = () => {
160
167
  const {
161
- state: { activeTabs },
168
+ state: { activeTabs, config },
162
169
  setValue,
163
170
  } = useGuardContext()
171
+ const { qrcodeTabsSettings } = config
164
172
 
165
173
  const { onFail, onSuccess } = useFormActions()
166
174
  const { tabs } = useNormalLoginTabs({ onSuccess, onFail })
167
175
 
176
+ const activeKey = useMemo(() => {
177
+ const activeTab = activeTabs[GuardScenes.Login]
178
+ if (
179
+ [LoginMethods.WechatMpQrcode, LoginMethods.WxMinQr].includes(activeTab) &&
180
+ qrcodeTabsSettings[activeTab]
181
+ ) {
182
+ return qrcodeTabsSettings[activeTab].find((item) => item.isDefault)?.id
183
+ }
184
+ return activeTab
185
+ }, [activeTabs, qrcodeTabsSettings])
186
+
168
187
  return (
169
188
  <>
170
189
  <AuthingTabs
171
- tabs={
172
- tabs as {
173
- key: LoginMethods
174
- label: string
175
- component: JSX.Element
176
- }[]
177
- }
190
+ tabs={tabs}
178
191
  onTabClick={(t) =>
179
192
  setValue('activeTabs', {
180
193
  ...activeTabs,
181
194
  [GuardScenes.Login]: t,
182
195
  })
183
196
  }
184
- activeKey={activeTabs[GuardScenes.Login]}
197
+ activeKey={activeKey}
185
198
  />
186
199
 
187
200
  {SHOW_SOCIAL_LOGIN_TAB.includes(activeTabs[GuardScenes.Login]) && (
@@ -1,5 +1,9 @@
1
1
  import { requestClient } from './http'
2
- import { Lang, Protocol } from '../../../components/AuthingGuard/types'
2
+ import {
3
+ Lang,
4
+ LoginMethods,
5
+ Protocol,
6
+ } from '../../../components/AuthingGuard/types'
3
7
  import {
4
8
  IAzureAdConnectionConfig,
5
9
  ICasConnectionConfig,
@@ -25,6 +29,15 @@ export const ApplicationMfaTypeLabel: () => Record<
25
29
  [ApplicationMfaType.EMAIL]: i18n.t('common.EmailVerification'),
26
30
  })
27
31
 
32
+ export type QrcodeTabsSettings = Record<
33
+ LoginMethods,
34
+ Array<{
35
+ id: string
36
+ title: string
37
+ isDefault?: boolean
38
+ }>
39
+ >
40
+
28
41
  export interface OidcClientMetadata {
29
42
  grant_types: string[]
30
43
  client_id: string
@@ -83,6 +96,9 @@ export interface ApplicationConfig {
83
96
  default: string
84
97
  title: { [x: string]: string }
85
98
  }
99
+
100
+ qrcodeTabsSettings: QrcodeTabsSettings
101
+
86
102
  loginTabs: {
87
103
  list: string[]
88
104
  default: string
@@ -72,8 +72,10 @@ export interface ICasConnectionConfig {
72
72
  }
73
73
  export interface SocialConnectionItem {
74
74
  name: string
75
+ displayName: string
75
76
  logo: string
76
77
  description: string
78
+ identifier: string
77
79
  provider: SocialConnectionProvider
78
80
  authorizationUrl: string
79
81
  tooltip: Record<Lang, string>
@@ -70,6 +70,7 @@
70
70
  }
71
71
  }
72
72
  }
73
+
73
74
  .authing-data-tips__top {
74
75
  position: relative;
75
76
  &::after {
@@ -13,6 +13,7 @@ import {
13
13
  ApplicationConfig,
14
14
  PasswordLoginMethods,
15
15
  Agreement,
16
+ QrcodeTabsSettings,
16
17
  } from '../../../components/AuthingGuard/api'
17
18
  import { Lang } from './Locales'
18
19
 
@@ -413,6 +414,7 @@ export interface GuardConfig extends UserConfig {
413
414
  agreementEnabled: boolean
414
415
  agreements: Agreement[]
415
416
  loginMethodTitleMapping: Record<string, string>
417
+ qrcodeTabsSettings: QrcodeTabsSettings
416
418
  }
417
419
 
418
420
  export interface LocalesConfig {
package/src/index.tsx CHANGED
@@ -4,6 +4,8 @@ import ReactDOM from 'react-dom'
4
4
  import { Lang } from './components'
5
5
  import { AuthingGuard } from './components/AuthingGuard'
6
6
 
7
+ import { SocialConnectionProvider } from 'authing-js-sdk'
8
+
7
9
  import {
8
10
  GuardMode,
9
11
  // LoginMethods,
@@ -21,8 +23,9 @@ const App = () => {
21
23
 
22
24
  const config: UserConfig = {
23
25
  mode: GuardMode.Modal,
24
- appHost: 'https://core.dev2.authing-inc.co',
25
- // apiHost: 'http://console.authing.localhost:3000',
26
+ // appHost: 'https://core.dev2.authing-inc.co',
27
+ apiHost: 'http://console.authing.localhost:3000',
28
+ // appHost: 'http://0w9ugz.authing.localhost:3000',
26
29
  // apiHost: 'http://192.168.50.57:3000',
27
30
  // loginMethods: Object.values(LoginMethods),
28
31
  // logo:
@@ -53,7 +56,7 @@ const App = () => {
53
56
  // }
54
57
  // `,
55
58
  // // autoRegister: true,
56
- // socialConnections: [SocialConnections.AppleWeb],
59
+ socialConnections: [SocialConnectionProvider.WECHATPC],
57
60
  }
58
61
 
59
62
  const [visible, setVisible] = useState(false)
@@ -70,6 +73,14 @@ const App = () => {
70
73
  return (
71
74
  // eslint-disable-next-line react/jsx-no-undef
72
75
  <>
76
+ <Button
77
+ type="primary"
78
+ onClick={() => {
79
+ //
80
+ }}
81
+ >
82
+ add socialConnections
83
+ </Button>
73
84
  <Button
74
85
  type="primary"
75
86
  onClick={() => {
@@ -114,8 +125,8 @@ const App = () => {
114
125
  }}
115
126
  // onLoad={(a) => console.log(a, '加载完成')}
116
127
  // onPwdResetError={(e) => console.log(e)}
117
- appId="619c7976cd38c13a2222464f"
118
- tenantId="619c864928b15c6421d12e35"
128
+ appId="61ada57aef5ed526528ed5b6"
129
+ // tenantId="61a5ed126cddae656cce9007"
119
130
  // appId="5fd877fb0ba0421962eced94"
120
131
  config={config}
121
132
  />