feat: support wecom sso (#3518)
* feat: support wecom sso * chore: remove unused wecom js-sdk dependency
This commit is contained in:
@@ -73,6 +73,11 @@ export type FastGPTFeConfigsType = {
|
|||||||
google?: string;
|
google?: string;
|
||||||
wechat?: string;
|
wechat?: string;
|
||||||
dingtalk?: string;
|
dingtalk?: string;
|
||||||
|
wecom?: {
|
||||||
|
corpid?: string;
|
||||||
|
agentid?: string;
|
||||||
|
secret?: string;
|
||||||
|
};
|
||||||
microsoft?: {
|
microsoft?: {
|
||||||
clientId?: string;
|
clientId?: string;
|
||||||
tenantId?: string;
|
tenantId?: string;
|
||||||
|
|||||||
@@ -17,5 +17,6 @@ export enum OAuthEnum {
|
|||||||
wechat = 'wechat',
|
wechat = 'wechat',
|
||||||
microsoft = 'microsoft',
|
microsoft = 'microsoft',
|
||||||
dingtalk = 'dingtalk',
|
dingtalk = 'dingtalk',
|
||||||
|
wecom = 'wecom',
|
||||||
sso = 'sso'
|
sso = 'sso'
|
||||||
}
|
}
|
||||||
|
|||||||
3
packages/service/support/user/wecom.ts
Normal file
3
packages/service/support/user/wecom.ts
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
export function isWecomTerminal() {
|
||||||
|
return /wxwork/i.test(navigator.userAgent);
|
||||||
|
}
|
||||||
@@ -16,5 +16,6 @@
|
|||||||
"register": "注册账号",
|
"register": "注册账号",
|
||||||
"root_password_placeholder": "root 用户密码为环境变量 DEFAULT_ROOT_PSW 的值",
|
"root_password_placeholder": "root 用户密码为环境变量 DEFAULT_ROOT_PSW 的值",
|
||||||
"terms": "服务协议",
|
"terms": "服务协议",
|
||||||
"use_root_login": "使用 root 用户登录"
|
"use_root_login": "使用 root 用户登录",
|
||||||
|
"wecom": "企业微信"
|
||||||
}
|
}
|
||||||
|
|||||||
56
pnpm-lock.yaml
generated
56
pnpm-lock.yaml
generated
@@ -139,6 +139,9 @@ importers:
|
|||||||
'@node-rs/jieba':
|
'@node-rs/jieba':
|
||||||
specifier: 1.10.0
|
specifier: 1.10.0
|
||||||
version: 1.10.0
|
version: 1.10.0
|
||||||
|
'@wecom/jssdk':
|
||||||
|
specifier: ^2.2.5
|
||||||
|
version: 2.2.5
|
||||||
'@xmldom/xmldom':
|
'@xmldom/xmldom':
|
||||||
specifier: ^0.8.10
|
specifier: ^0.8.10
|
||||||
version: 0.8.10
|
version: 0.8.10
|
||||||
@@ -581,7 +584,7 @@ importers:
|
|||||||
version: 1.77.8
|
version: 1.77.8
|
||||||
ts-jest:
|
ts-jest:
|
||||||
specifier: ^29.1.0
|
specifier: ^29.1.0
|
||||||
version: 29.2.2(@babel/core@7.24.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.9))(jest@29.7.0(@types/node@20.14.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.11)(typescript@5.5.3)))(typescript@5.5.3)
|
version: 29.2.2(@babel/core@7.24.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.9))(jest@29.7.0(@types/node@20.14.11)(babel-plugin-macros@3.1.0))(typescript@5.5.3)
|
||||||
use-context-selector:
|
use-context-selector:
|
||||||
specifier: ^1.4.4
|
specifier: ^1.4.4
|
||||||
version: 1.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)
|
version: 1.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)
|
||||||
@@ -721,7 +724,7 @@ importers:
|
|||||||
version: 6.3.4
|
version: 6.3.4
|
||||||
ts-jest:
|
ts-jest:
|
||||||
specifier: ^29.1.0
|
specifier: ^29.1.0
|
||||||
version: 29.2.2(@babel/core@7.24.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.9))(jest@29.7.0(@types/node@20.14.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.11)(typescript@5.5.3)))(typescript@5.5.3)
|
version: 29.2.2(@babel/core@7.24.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.9))(jest@29.7.0(@types/node@20.14.11)(babel-plugin-macros@3.1.0))(typescript@5.5.3)
|
||||||
ts-loader:
|
ts-loader:
|
||||||
specifier: ^9.4.3
|
specifier: ^9.4.3
|
||||||
version: 9.5.1(typescript@5.5.3)(webpack@5.92.1)
|
version: 9.5.1(typescript@5.5.3)(webpack@5.92.1)
|
||||||
@@ -2022,7 +2025,7 @@ packages:
|
|||||||
'@emotion/use-insertion-effect-with-fallbacks@1.0.1':
|
'@emotion/use-insertion-effect-with-fallbacks@1.0.1':
|
||||||
resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==}
|
resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: '>=16.8.0'
|
react: 18.3.1
|
||||||
|
|
||||||
'@emotion/utils@1.2.1':
|
'@emotion/utils@1.2.1':
|
||||||
resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==}
|
resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==}
|
||||||
@@ -2645,8 +2648,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-RFkU9/i7cN2bsq/iTkurMWOEErmYcY6JiQI3Jn+WeR/FGISH8JbHERjpS9oRuSOPvDMJI0Z8nJeKkbOs9sBYQw==}
|
resolution: {integrity: sha512-RFkU9/i7cN2bsq/iTkurMWOEErmYcY6JiQI3Jn+WeR/FGISH8JbHERjpS9oRuSOPvDMJI0Z8nJeKkbOs9sBYQw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
monaco-editor: '>= 0.25.0 < 1'
|
monaco-editor: '>= 0.25.0 < 1'
|
||||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
react: 18.3.1
|
||||||
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
|
react-dom: 18.3.1
|
||||||
|
|
||||||
'@mongodb-js/saslprep@1.1.9':
|
'@mongodb-js/saslprep@1.1.9':
|
||||||
resolution: {integrity: sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==}
|
resolution: {integrity: sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==}
|
||||||
@@ -2997,8 +3000,8 @@ packages:
|
|||||||
'@reactflow/node-resizer@2.2.14':
|
'@reactflow/node-resizer@2.2.14':
|
||||||
resolution: {integrity: sha512-fwqnks83jUlYr6OHcdFEedumWKChTHRGw/kbCxj0oqBd+ekfs+SIp4ddyNU0pdx96JIm5iNFS0oNrmEiJbbSaA==}
|
resolution: {integrity: sha512-fwqnks83jUlYr6OHcdFEedumWKChTHRGw/kbCxj0oqBd+ekfs+SIp4ddyNU0pdx96JIm5iNFS0oNrmEiJbbSaA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: '>=17'
|
react: 18.3.1
|
||||||
react-dom: '>=17'
|
react-dom: 18.3.1
|
||||||
|
|
||||||
'@reactflow/node-toolbar@1.3.14':
|
'@reactflow/node-toolbar@1.3.14':
|
||||||
resolution: {integrity: sha512-rbynXQnH/xFNu4P9H+hVqlEUafDCkEoCy0Dg9mG22Sg+rY/0ck6KkrAQrYrTgXusd+cEJOMK0uOOFCK2/5rSGQ==}
|
resolution: {integrity: sha512-rbynXQnH/xFNu4P9H+hVqlEUafDCkEoCy0Dg9mG22Sg+rY/0ck6KkrAQrYrTgXusd+cEJOMK0uOOFCK2/5rSGQ==}
|
||||||
@@ -3715,6 +3718,9 @@ packages:
|
|||||||
'@webassemblyjs/wast-printer@1.12.1':
|
'@webassemblyjs/wast-printer@1.12.1':
|
||||||
resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==}
|
resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==}
|
||||||
|
|
||||||
|
'@wecom/jssdk@2.2.5':
|
||||||
|
resolution: {integrity: sha512-qOBAsfqaiYM8jZHWYs/atHSpJhsLdZVNaxHQdmEQ7ZWul/GZMt4P5VY8Nf7GII7GhG8z/k+r37Dto6qtAaRqow==}
|
||||||
|
|
||||||
'@xmldom/xmldom@0.8.10':
|
'@xmldom/xmldom@0.8.10':
|
||||||
resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==}
|
resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==}
|
||||||
engines: {node: '>=10.0.0'}
|
engines: {node: '>=10.0.0'}
|
||||||
@@ -7137,8 +7143,8 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@opentelemetry/api': ^1.1.0
|
'@opentelemetry/api': ^1.1.0
|
||||||
'@playwright/test': ^1.41.2
|
'@playwright/test': ^1.41.2
|
||||||
react: ^18.2.0
|
react: 18.3.1
|
||||||
react-dom: ^18.2.0
|
react-dom: 18.3.1
|
||||||
sass: ^1.3.0
|
sass: ^1.3.0
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
'@opentelemetry/api':
|
'@opentelemetry/api':
|
||||||
@@ -7793,8 +7799,8 @@ packages:
|
|||||||
react-photo-view@1.2.6:
|
react-photo-view@1.2.6:
|
||||||
resolution: {integrity: sha512-Fq17yxkMIv0oFp7HOJr39HgCZRP6A9K5T5rixJ4flSUYT2OO3V8vNxEExjhIKgIrfmTu+mDnHYEsI9RRWi1JHw==}
|
resolution: {integrity: sha512-Fq17yxkMIv0oFp7HOJr39HgCZRP6A9K5T5rixJ4flSUYT2OO3V8vNxEExjhIKgIrfmTu+mDnHYEsI9RRWi1JHw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: '>=16.8.0'
|
react: 18.3.1
|
||||||
react-dom: '>=16.8.0'
|
react-dom: 18.3.1
|
||||||
|
|
||||||
react-redux@7.2.9:
|
react-redux@7.2.9:
|
||||||
resolution: {integrity: sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==}
|
resolution: {integrity: sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==}
|
||||||
@@ -7812,8 +7818,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==}
|
resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
|
'@types/react': 18.3.1
|
||||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
react: 18.3.1
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
'@types/react':
|
'@types/react':
|
||||||
optional: true
|
optional: true
|
||||||
@@ -7832,8 +7838,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==}
|
resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
|
'@types/react': 18.3.1
|
||||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
react: 18.3.1
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
'@types/react':
|
'@types/react':
|
||||||
optional: true
|
optional: true
|
||||||
@@ -8862,8 +8868,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==}
|
resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
|
'@types/react': 18.3.1
|
||||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
react: 18.3.1
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
'@types/react':
|
'@types/react':
|
||||||
optional: true
|
optional: true
|
||||||
@@ -8913,8 +8919,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==}
|
resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0
|
'@types/react': 18.3.1
|
||||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
react: 18.3.1
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
'@types/react':
|
'@types/react':
|
||||||
optional: true
|
optional: true
|
||||||
@@ -12919,6 +12925,8 @@ snapshots:
|
|||||||
'@webassemblyjs/ast': 1.12.1
|
'@webassemblyjs/ast': 1.12.1
|
||||||
'@xtuc/long': 4.2.2
|
'@xtuc/long': 4.2.2
|
||||||
|
|
||||||
|
'@wecom/jssdk@2.2.5': {}
|
||||||
|
|
||||||
'@xmldom/xmldom@0.8.10': {}
|
'@xmldom/xmldom@0.8.10': {}
|
||||||
|
|
||||||
'@xtuc/ieee754@1.2.0': {}
|
'@xtuc/ieee754@1.2.0': {}
|
||||||
@@ -14545,7 +14553,11 @@ snapshots:
|
|||||||
debug: 4.3.5
|
debug: 4.3.5
|
||||||
enhanced-resolve: 5.17.0
|
enhanced-resolve: 5.17.0
|
||||||
eslint: 8.56.0
|
eslint: 8.56.0
|
||||||
|
<<<<<<< HEAD
|
||||||
eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0)
|
eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0)
|
||||||
|
=======
|
||||||
|
eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
|
||||||
|
>>>>>>> 29ab002e3 (feat: support wecom sso (#3518))
|
||||||
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
|
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
|
||||||
fast-glob: 3.3.2
|
fast-glob: 3.3.2
|
||||||
get-tsconfig: 4.7.5
|
get-tsconfig: 4.7.5
|
||||||
@@ -14557,7 +14569,7 @@ snapshots:
|
|||||||
- eslint-import-resolver-webpack
|
- eslint-import-resolver-webpack
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0):
|
eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 3.2.7
|
debug: 3.2.7
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
@@ -14578,7 +14590,7 @@ snapshots:
|
|||||||
doctrine: 2.1.0
|
doctrine: 2.1.0
|
||||||
eslint: 8.56.0
|
eslint: 8.56.0
|
||||||
eslint-import-resolver-node: 0.3.9
|
eslint-import-resolver-node: 0.3.9
|
||||||
eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0)
|
eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
|
||||||
hasown: 2.0.2
|
hasown: 2.0.2
|
||||||
is-core-module: 2.14.0
|
is-core-module: 2.14.0
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
@@ -18992,7 +19004,7 @@ snapshots:
|
|||||||
|
|
||||||
ts-dedent@2.2.0: {}
|
ts-dedent@2.2.0: {}
|
||||||
|
|
||||||
ts-jest@29.2.2(@babel/core@7.24.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.9))(jest@29.7.0(@types/node@20.14.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.11)(typescript@5.5.3)))(typescript@5.5.3):
|
ts-jest@29.2.2(@babel/core@7.24.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.9))(jest@29.7.0(@types/node@20.14.11)(babel-plugin-macros@3.1.0))(typescript@5.5.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
bs-logger: 0.2.6
|
bs-logger: 0.2.6
|
||||||
ejs: 3.1.10
|
ejs: 3.1.10
|
||||||
|
|||||||
@@ -11,7 +11,8 @@ import { useTranslation } from 'next-i18next';
|
|||||||
import I18nLngSelector from '@/components/Select/I18nLngSelector';
|
import I18nLngSelector from '@/components/Select/I18nLngSelector';
|
||||||
import { useSystem } from '@fastgpt/web/hooks/useSystem';
|
import { useSystem } from '@fastgpt/web/hooks/useSystem';
|
||||||
import MyImage from '@fastgpt/web/components/common/Image/MyImage';
|
import MyImage from '@fastgpt/web/components/common/Image/MyImage';
|
||||||
import { useToast } from '@fastgpt/web/hooks/useToast';
|
import { isWecomTerminal } from '@fastgpt/service/support/user/wecom';
|
||||||
|
import { PUT } from '@fastgpt/service/common/api/plusRequest';
|
||||||
const nanoid = customAlphabet('abcdefghijklmnopqrstuvwxyz1234567890', 8);
|
const nanoid = customAlphabet('abcdefghijklmnopqrstuvwxyz1234567890', 8);
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
@@ -29,6 +30,7 @@ const FormLayout = ({ children, setPageType, pageType }: Props) => {
|
|||||||
const state = useRef(nanoid());
|
const state = useRef(nanoid());
|
||||||
const redirectUri = `${location.origin}/login/provider`;
|
const redirectUri = `${location.origin}/login/provider`;
|
||||||
const { isPc } = useSystem();
|
const { isPc } = useSystem();
|
||||||
|
const isWecom = isWecomTerminal();
|
||||||
|
|
||||||
const oAuthList = [
|
const oAuthList = [
|
||||||
...(feConfigs?.oauth?.wechat && pageType !== LoginPageTypeEnum.wechat
|
...(feConfigs?.oauth?.wechat && pageType !== LoginPageTypeEnum.wechat
|
||||||
@@ -82,6 +84,18 @@ const FormLayout = ({ children, setPageType, pageType }: Props) => {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
: []),
|
: []),
|
||||||
|
...(feConfigs?.oauth?.wecom
|
||||||
|
? [
|
||||||
|
{
|
||||||
|
label: t('login:wecom'),
|
||||||
|
provider: OAuthEnum.wecom,
|
||||||
|
icon: 'common/wecom',
|
||||||
|
redirectUrl: isWecom
|
||||||
|
? `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${feConfigs?.oauth?.wecom?.corpid}&redirect_uri=${redirectUri}&response_type=code&scope=snsapi_base&agentid=${feConfigs?.oauth?.wecom?.agentid}&state=${state.current}#wechat_redirect`
|
||||||
|
: `https://login.work.weixin.qq.com/wwlogin/sso/login?login_type=CorpApp&appid=${feConfigs?.oauth?.wecom?.corpid}&agentid=${feConfigs?.oauth?.wecom?.agentid}&redirect_uri=${redirectUri}&state=${state.current}`
|
||||||
|
}
|
||||||
|
]
|
||||||
|
: []),
|
||||||
...(pageType !== LoginPageTypeEnum.passwordLogin
|
...(pageType !== LoginPageTypeEnum.passwordLogin
|
||||||
? [
|
? [
|
||||||
{
|
{
|
||||||
@@ -99,6 +113,20 @@ const FormLayout = ({ children, setPageType, pageType }: Props) => {
|
|||||||
[feConfigs?.sso?.url, oAuthList.length]
|
[feConfigs?.sso?.url, oAuthList.length]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const onClickOauth = useCallback(
|
||||||
|
async (item: any) => {
|
||||||
|
item.redirectUrl &&
|
||||||
|
setLoginStore({
|
||||||
|
provider: item.provider,
|
||||||
|
lastRoute,
|
||||||
|
state: state.current
|
||||||
|
});
|
||||||
|
item.redirectUrl && router.replace(item.redirectUrl, '_self');
|
||||||
|
item.pageType && setPageType(item.pageType);
|
||||||
|
},
|
||||||
|
[lastRoute, setLoginStore, setPageType]
|
||||||
|
);
|
||||||
|
|
||||||
const onClickSso = useCallback(() => {
|
const onClickSso = useCallback(() => {
|
||||||
if (!feConfigs?.sso?.url) return;
|
if (!feConfigs?.sso?.url) return;
|
||||||
setLoginStore({
|
setLoginStore({
|
||||||
@@ -115,7 +143,10 @@ const FormLayout = ({ children, setPageType, pageType }: Props) => {
|
|||||||
if (feConfigs?.sso?.autoLogin) {
|
if (feConfigs?.sso?.autoLogin) {
|
||||||
onClickSso();
|
onClickSso();
|
||||||
}
|
}
|
||||||
}, [feConfigs?.sso?.autoLogin]);
|
if (isWecom) {
|
||||||
|
onClickOauth(oAuthList.find((item) => item.provider === OAuthEnum.wecom));
|
||||||
|
}
|
||||||
|
}, [feConfigs?.sso?.autoLogin, isWecom]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Flex flexDirection={'column'} h={'100%'}>
|
<Flex flexDirection={'column'} h={'100%'}>
|
||||||
@@ -159,16 +190,7 @@ const FormLayout = ({ children, setPageType, pageType }: Props) => {
|
|||||||
borderRadius={'sm'}
|
borderRadius={'sm'}
|
||||||
fontWeight={'medium'}
|
fontWeight={'medium'}
|
||||||
leftIcon={<MyIcon name={item.icon as any} w={'20px'} />}
|
leftIcon={<MyIcon name={item.icon as any} w={'20px'} />}
|
||||||
onClick={() => {
|
onClick={() => onClickOauth(item)}
|
||||||
item.redirectUrl &&
|
|
||||||
setLoginStore({
|
|
||||||
provider: item.provider,
|
|
||||||
lastRoute,
|
|
||||||
state: state.current
|
|
||||||
});
|
|
||||||
item.redirectUrl && router.replace(item.redirectUrl, '_self');
|
|
||||||
item.pageType && setPageType(item.pageType);
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
{item.label}
|
{item.label}
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
Reference in New Issue
Block a user