@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.
- package/lib/index.d.ts +11 -2
- package/lib/index.min.js +1 -1
- package/package.json +2 -2
- package/src/components/AuthingGuard/Forms/SocialAndIdpLogin/index.tsx +3 -3
- package/src/components/AuthingGuard/GuardLayout/index.tsx +6 -1
- package/src/components/AuthingGuard/LoginLayout/index.tsx +55 -42
- package/src/components/AuthingGuard/api/appConfig.ts +17 -1
- package/src/components/AuthingGuard/api/userPoolConfig.ts +2 -0
- package/src/components/AuthingGuard/style.less +1 -0
- package/src/components/AuthingGuard/types/GuardConfig.ts +2 -0
- package/src/index.tsx +16 -5
- package/yarn-error.log +5860 -5105
- package/build/asset-manifest.json +0 -25
- package/build/favicon.ico +0 -0
- package/build/index.html +0 -1
- package/build/logo192.png +0 -0
- package/build/logo512.png +0 -0
- package/build/manifest.json +0 -25
- package/build/robots.txt +0 -3
- package/build/static/css/2.e5f4a1ca.chunk.css +0 -2
- package/build/static/css/2.e5f4a1ca.chunk.css.map +0 -1
- package/build/static/css/main.4dd73333.chunk.css +0 -2
- package/build/static/css/main.4dd73333.chunk.css.map +0 -1
- package/build/static/js/2.b28e1968.chunk.js +0 -3
- package/build/static/js/2.b28e1968.chunk.js.LICENSE.txt +0 -70
- package/build/static/js/2.b28e1968.chunk.js.map +0 -1
- package/build/static/js/3.584da164.chunk.js +0 -2
- package/build/static/js/3.584da164.chunk.js.map +0 -1
- package/build/static/js/main.eeb41586.chunk.js +0 -2
- package/build/static/js/main.eeb41586.chunk.js.map +0 -1
- package/build/static/js/runtime-main.6174f3e9.js +0 -2
- 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
|
+
"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.
|
|
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.
|
|
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.
|
|
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 {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
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={
|
|
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 {
|
|
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>
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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="
|
|
118
|
-
tenantId="
|
|
128
|
+
appId="61ada57aef5ed526528ed5b6"
|
|
129
|
+
// tenantId="61a5ed126cddae656cce9007"
|
|
119
130
|
// appId="5fd877fb0ba0421962eced94"
|
|
120
131
|
config={config}
|
|
121
132
|
/>
|