From ec75afbc44139dbe9da534d8a8c08a5b91f86d3c Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Thu, 27 Nov 2025 01:59:22 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=94=AF=E6=8C=81oidc=E5=8D=95?= =?UTF-8?q?=E7=82=B9=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/system/settings/service/models.ts | 37 ++--- .../src/user/addon/service/addon-service.ts | 2 +- .../certd-client/src/router/source/outside.ts | 8 + .../src/store/settings/api.basic.ts | 11 ++ .../certd/addon/addon-selector/index.vue | 1 + .../src/views/certd/addon/common.tsx | 3 +- .../src/views/certd/addon/crud.tsx | 11 ++ .../src/views/framework/login/index.vue | 26 ++- .../src/views/framework/oauth/api.ts | 45 ++++++ .../views/framework/oauth/oauth-callback.vue | 105 ++++++++++++ .../views/framework/oauth/oauth-footer.vue | 45 ++++++ .../src/views/sys/settings/api.ts | 7 + .../src/views/sys/settings/tabs/register.vue | 62 ++++++- .../db/migration/v10034__oauth_bound.sql | 14 ++ .../basic/login/oauth-controller.ts | 153 ++++++++++++++++++ .../basic/oauth/connect-controller.ts | 67 -------- .../sys/settings/sys-settings-controller.ts | 7 + .../src/modules/basic/service/code-service.ts | 18 ++- .../entity/{oauth-bind.ts => oauth-bound.ts} | 4 +- .../modules/login/service/login-service.ts | 24 ++- .../login/service/oauth-bound-service.ts | 74 +++++++++ .../sys/authority/service/user-service.ts | 8 +- packages/ui/certd-server/src/plugins/index.ts | 1 + .../src/plugins/plugin-oauth/api.ts | 1 - .../plugins/plugin-oauth/oidc/plugin-oidc.ts | 2 +- 25 files changed, 633 insertions(+), 103 deletions(-) create mode 100644 packages/ui/certd-client/src/views/framework/oauth/api.ts create mode 100644 packages/ui/certd-client/src/views/framework/oauth/oauth-callback.vue create mode 100644 packages/ui/certd-client/src/views/framework/oauth/oauth-footer.vue create mode 100644 packages/ui/certd-server/db/migration/v10034__oauth_bound.sql create mode 100644 packages/ui/certd-server/src/controller/basic/login/oauth-controller.ts delete mode 100644 packages/ui/certd-server/src/controller/basic/oauth/connect-controller.ts rename packages/ui/certd-server/src/modules/login/entity/{oauth-bind.ts => oauth-bound.ts} (91%) create mode 100644 packages/ui/certd-server/src/modules/login/service/oauth-bound-service.ts diff --git a/packages/libs/lib-server/src/system/settings/service/models.ts b/packages/libs/lib-server/src/system/settings/service/models.ts index 50be68713..3312679d0 100644 --- a/packages/libs/lib-server/src/system/settings/service/models.ts +++ b/packages/libs/lib-server/src/system/settings/service/models.ts @@ -16,7 +16,7 @@ export class SysPublicSettings extends BaseSettings { static __access__ = 'public'; registerEnabled = false; - userValidTimeEnabled?:boolean = false; + userValidTimeEnabled?: boolean = false; passwordLoginEnabled = true; usernameRegisterEnabled = true; mobileRegisterEnabled = false; @@ -36,7 +36,7 @@ export class SysPublicSettings extends BaseSettings { captchaEnabled = false; //验证码类型 captchaType?: string; - captchaAddonId?:number; + captchaAddonId?: number; @@ -49,6 +49,14 @@ export class SysPublicSettings extends BaseSettings { // 固定证书有效期天数,0表示不固定 fixedCertExpireDays?: number; + // 第三方OAuth配置 + oauthEnabled?: boolean = false; + oauthProviders: Record = {}; + } export class SysPrivateSettings extends BaseSettings { @@ -69,9 +77,9 @@ export class SysPrivateSettings extends BaseSettings { type?: string; config?: any; } = { - type: 'aliyun', - config: {}, - }; + type: 'aliyun', + config: {}, + }; removeSecret() { const clone = cloneDeep(this); @@ -196,7 +204,7 @@ export class SysSuiteSetting extends BaseSettings { static __key__ = 'sys.suite'; static __access__ = 'private'; - enabled:boolean = false; + enabled: boolean = false; registerGift?: { productId: number; @@ -221,22 +229,9 @@ export class SysSafeSetting extends BaseSettings { static __access__ = 'private'; // 站点隐藏 - hidden:SiteHidden = { + hidden: SiteHidden = { enabled: false, - hiddenOpenApi:false, + hiddenOpenApi: false, autoHiddenTimes: 5, }; } - - -export class SysOauthSetting extends BaseSettings { - static __title__ = 'OAuth设置'; - static __key__ = 'sys.oauth'; - static __access__ = 'private'; - - oauths: Record = {}; -} diff --git a/packages/libs/lib-server/src/user/addon/service/addon-service.ts b/packages/libs/lib-server/src/user/addon/service/addon-service.ts index b009c4751..55928d9bf 100644 --- a/packages/libs/lib-server/src/user/addon/service/addon-service.ts +++ b/packages/libs/lib-server/src/user/addon/service/addon-service.ts @@ -76,7 +76,7 @@ export class AddonService extends BaseService { getDefineList(addonType: string) { - return addonRegistry.getDefineList(); + return addonRegistry.getDefineList(addonType); } getDefineByType(type: string, prefix?: string) { diff --git a/packages/ui/certd-client/src/router/source/outside.ts b/packages/ui/certd-client/src/router/source/outside.ts index 5c9bdfa4b..8aa984baf 100644 --- a/packages/ui/certd-client/src/router/source/outside.ts +++ b/packages/ui/certd-client/src/router/source/outside.ts @@ -32,6 +32,14 @@ export const outsideResource = [ path: "/forgotPassword", component: "/framework/forgot-password/index.vue", }, + { + meta: { + title: "第三方登录回调", + }, + name: "oauthCallback", + path: "/oauth/callback/:type", + component: "/framework/oauth/oauth-callback.vue", + }, ], }, ...errorPage, diff --git a/packages/ui/certd-client/src/store/settings/api.basic.ts b/packages/ui/certd-client/src/store/settings/api.basic.ts index f8c198523..c041db411 100644 --- a/packages/ui/certd-client/src/store/settings/api.basic.ts +++ b/packages/ui/certd-client/src/store/settings/api.basic.ts @@ -59,6 +59,17 @@ export type SysPublicSetting = { // 固定证书有效期天数,0表示不固定 fixedCertExpireDays?: number; + + // 第三方OAuth配置 + oauthEnabled?: boolean; + oauthProviders?: Record< + string, + { + type: string; + title: string; + addonId: number; + } + >; }; export type SuiteSetting = { enabled?: boolean; diff --git a/packages/ui/certd-client/src/views/certd/addon/addon-selector/index.vue b/packages/ui/certd-client/src/views/certd/addon/addon-selector/index.vue index d64884aa5..104035363 100644 --- a/packages/ui/certd-client/src/views/certd/addon/addon-selector/index.vue +++ b/packages/ui/certd-client/src/views/certd/addon/addon-selector/index.vue @@ -82,6 +82,7 @@ function createCrudOptionsWithApi(opts: any) { opts.context = { api, addonType: props.addonType, + type: props.type, }; return createCrudOptions(opts); } diff --git a/packages/ui/certd-client/src/views/certd/addon/common.tsx b/packages/ui/certd-client/src/views/certd/addon/common.tsx index 191786dcc..3177e24ed 100644 --- a/packages/ui/certd-client/src/views/certd/addon/common.tsx +++ b/packages/ui/certd-client/src/views/certd/addon/common.tsx @@ -110,7 +110,8 @@ export function getCommonColumnDefine(crudExpose: any, typeRef: any, api: any, a type: "dict-select", dict: addonTypeDictRef, search: { - show: false, + show: true, + valueChange: null, }, column: { width: 200, diff --git a/packages/ui/certd-client/src/views/certd/addon/crud.tsx b/packages/ui/certd-client/src/views/certd/addon/crud.tsx index 73f00f03c..e606a8659 100644 --- a/packages/ui/certd-client/src/views/certd/addon/crud.tsx +++ b/packages/ui/certd-client/src/views/certd/addon/crud.tsx @@ -5,7 +5,12 @@ import { AddReq, CreateCrudOptionsProps, CreateCrudOptionsRet, DelReq, EditReq, export default function ({ crudExpose, context }: CreateCrudOptionsProps): CreateCrudOptionsRet { const api = context.api; const addonType = context.addonType; + const type = context.type; const pageRequest = async (query: UserPageQuery): Promise => { + if (query.query?.body) { + delete query.query.body; + } + return await api.GetList(query); }; const editRequest = async (req: EditReq) => { @@ -44,6 +49,12 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat }, }, }, + addForm: { + initialForm: { + addonType: addonType, + type: type, + }, + }, rowHandle: { width: 200, }, diff --git a/packages/ui/certd-client/src/views/framework/login/index.vue b/packages/ui/certd-client/src/views/framework/login/index.vue index f7a26658f..d2a2bd6a9 100644 --- a/packages/ui/certd-client/src/views/framework/login/index.vue +++ b/packages/ui/certd-client/src/views/framework/login/index.vue @@ -51,7 +51,7 @@ {{ t("authentication.loginButton") }} -
+
{{ t("authentication.forgotPassword") }} @@ -61,10 +61,14 @@