fd36c970bc
* refactor: change moment to dayjs * refactor: remove antd css * refactor: change @formily/antd to @formily/antd-v5 * chore: add dep * chore: upgrade babel/core and typescript * refactor: rename moment to dayjs * fix(dayjs): add plugins * refactor: fix type errors * refactor: change default export to named export * chore: upgrade ts-loader * refactor: rename moment to dayjs * refactor: fix type errors * chore: upgrade deps for build * fix: fix build errors * fix: add antd reset css * fix: fix build error * chore: add __builtins__ * chore: optimize genStyleHook * refactor(Calendar): less to css-in-js * refactor(acl): less to css-in-js * refactor(board): less to css-in-js * chore: add antd-style * refactor(acl): use antd-style * refactor(board): use antd-style * refactor: schema-initializer * refactor: refactor genStyleHook * refactor: kanban * refactor: filter * refactor: upload * refactor: markdown * refactor: rename className to componentCls * refactor: rich-text * style: fix style * fix: fix merge error * chore: update yarn.lock * chore: upgrade formily * style: fix pageHeader * style: fix add button style * style: fix header menu color * chore: update yarn.lock * chore: upgrade deps * test: fix tests * test: fix tests * fix: fix build error * fix: fix style of plugin doc * fix: fix tests * fix: fix drag bug * refactor: remove useless code * fix: fix Modal style (T-621) * fix: fix box-shadow of subMenu (T-622) * fix: fix style of linkage rules (T-623) * fix: fix style of DataTemplate * fix: fix style of variable (T-620) * chore: update yarn.lock * fix: avoid test failed * test: fix error * chore: update yarn.lock * test: fix error * test(dayjs): fix error * fix: should delay show menu to avoid the menu not hidden * test: skip failure test * fix(mouseEnterDelay): change default value from 100 to 150 * test: avoid failed * refactor: rename component names * chore: optimize types * chore: lock antd version * fix: fix build * fix: fix build * fix: layout bg color use variable * fix: fix style of buttons * feat: remove theme config * fix(calendar): fix style * fix(mobile-client): fix dialog style * fix: fix test * refactor: make code gooder * chore: change code * fix: fix T-847 * fix: fix T-845 * fix: display block * fix: danger button * refactor: make tester better * fix: change moment to dayjs * fix: build error * fix: import dayjs/plugin/isSameOrBefore * refactor: downgrade @testing-library/react to fix warning * fix: fix CI * fix: upgrade deps to fix build * fix: fix test * fix: skip some filed tests to avoid error * fix: fix build errors that maked by merge code * refactor: remove moment * fix: error * feat: update doc --------- Co-authored-by: chenos <chenlinxh@gmail.com>
160 lines
4.8 KiB
TypeScript
160 lines
4.8 KiB
TypeScript
import { CopyOutlined } from '@ant-design/icons';
|
|
import { ArrayItems } from '@formily/antd-v5';
|
|
import { observer } from '@formily/react';
|
|
import { FormItem, Input, SchemaComponent } from '@nocobase/client';
|
|
import { Card, Space, message } from 'antd';
|
|
import React from 'react';
|
|
import { useOidcTranslation } from './locale';
|
|
|
|
const schema = {
|
|
type: 'object',
|
|
properties: {
|
|
oidc: {
|
|
type: 'object',
|
|
properties: {
|
|
issuer: {
|
|
title: '{{t("Issuer")}}',
|
|
'x-component': 'Input',
|
|
'x-decorator': 'FormItem',
|
|
required: true,
|
|
},
|
|
clientId: {
|
|
title: '{{t("Client ID")}}',
|
|
'x-component': 'Input',
|
|
'x-decorator': 'FormItem',
|
|
required: true,
|
|
},
|
|
clientSecret: {
|
|
title: '{{t("Client Secret")}}',
|
|
'x-component': 'Input',
|
|
'x-decorator': 'FormItem',
|
|
required: true,
|
|
},
|
|
scope: {
|
|
title: '{{t("scope")}}',
|
|
'x-component': 'Input',
|
|
'x-decorator': 'FormItem',
|
|
'x-decorator-props': {
|
|
tooltip: '{{t("Default: openid profile email")}}',
|
|
},
|
|
},
|
|
idTokenSignedResponseAlg: {
|
|
title: '{{t("id_token signed response algorithm")}}',
|
|
'x-component': 'Select',
|
|
'x-decorator': 'FormItem',
|
|
enum: [
|
|
{ label: 'HS256', value: 'HS256' },
|
|
{ label: 'HS384', value: 'HS384' },
|
|
{ label: 'HS512', value: 'HS512' },
|
|
{ label: 'RS256', value: 'RS256' },
|
|
{ label: 'RS384', value: 'RS384' },
|
|
{ label: 'RS512', value: 'RS512' },
|
|
{ label: 'ES256', value: 'ES256' },
|
|
{ label: 'ES384', value: 'ES384' },
|
|
{ label: 'ES512', value: 'ES512' },
|
|
{ label: 'PS256', value: 'PS256' },
|
|
{ label: 'PS384', value: 'PS384' },
|
|
{ label: 'PS512', value: 'PS512' },
|
|
],
|
|
},
|
|
http: {
|
|
title: '{{t("HTTP")}}',
|
|
'x-component': 'Checkbox',
|
|
'x-decorator': 'FormItem',
|
|
},
|
|
port: {
|
|
title: '{{t("Port")}}',
|
|
'x-component': 'InputNumber',
|
|
'x-decorator': 'FormItem',
|
|
'x-component-props': {
|
|
style: {
|
|
width: '15%',
|
|
'min-width': '100px',
|
|
},
|
|
},
|
|
},
|
|
fieldMap: {
|
|
title: '{{t("Field Map")}}',
|
|
type: 'array',
|
|
'x-decorator': 'FormItem',
|
|
'x-component': 'ArrayItems',
|
|
items: {
|
|
type: 'object',
|
|
'x-decorator': 'ArrayItems.Item',
|
|
properties: {
|
|
space: {
|
|
type: 'void',
|
|
'x-component': 'Space',
|
|
properties: {
|
|
source: {
|
|
type: 'string',
|
|
'x-decorator': 'FormItem',
|
|
'x-component': 'Input',
|
|
'x-component-props': {
|
|
placeholder: '{{t("source")}}',
|
|
},
|
|
},
|
|
target: {
|
|
type: 'string',
|
|
'x-decorator': 'FormItem',
|
|
'x-component': 'Select',
|
|
'x-component-props': {
|
|
placeholder: '{{t("target")}}',
|
|
},
|
|
enum: [
|
|
{ label: 'Nickname', value: 'nickname' },
|
|
{ label: 'Email', value: 'email' },
|
|
{ label: 'Phone', value: 'phone' },
|
|
],
|
|
},
|
|
remove: {
|
|
type: 'void',
|
|
'x-decorator': 'FormItem',
|
|
'x-component': 'ArrayItems.Remove',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
properties: {
|
|
add: {
|
|
type: 'void',
|
|
title: 'Add',
|
|
'x-component': 'ArrayItems.Addition',
|
|
},
|
|
},
|
|
},
|
|
usage: {
|
|
type: 'void',
|
|
'x-component': 'Usage',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
const Usage = observer(() => {
|
|
const { t } = useOidcTranslation();
|
|
|
|
const { protocol, host } = window.location;
|
|
const url = `${protocol}//${host}/api/oidc:redirect`;
|
|
|
|
const copy = (text: string) => {
|
|
navigator.clipboard.writeText(text);
|
|
message.success(t('Copied'));
|
|
};
|
|
|
|
return (
|
|
<Card title={t('Usage')} type="inner">
|
|
<FormItem label={t('Redirect URL')}>
|
|
<Input value={url} disabled={true} addonBefore={<CopyOutlined onClick={() => copy(url)} />} />
|
|
</FormItem>
|
|
</Card>
|
|
);
|
|
});
|
|
|
|
export const Options = () => {
|
|
const { t } = useOidcTranslation();
|
|
return <SchemaComponent scope={{ t }} components={{ Usage, ArrayItems, Space }} schema={schema} />;
|
|
};
|