From d5d54d4d3b7307b2fcf9194b2c04753f97ce0e1b Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Thu, 17 Apr 2025 01:15:55 +0800 Subject: [PATCH] chore: 2FA --- .../libs/lib-server/src/basic/constants.ts | 4 ++ .../src/basic/exception/auth-exception.ts | 10 ++- .../src/router/source/modules/certd.ts | 11 ++++ .../two-factor => mine/security}/api.ts | 7 ++ .../two-factor => mine/security}/index.vue | 66 +++++++++++++------ .../src/views/framework/login/index.vue | 48 +++++--------- .../controller/user/login/login-controller.ts | 28 ++++++-- .../mine/setting-two-factor-controller.ts | 7 ++ .../modules/login/service/login-service.ts | 47 +++++++++++-- .../src/modules/mine/service/models.ts | 1 - .../mine/service/two-factor-service.ts | 54 +++++++++++---- .../mine/service/user-settings-service.ts | 7 +- 12 files changed, 211 insertions(+), 79 deletions(-) rename packages/ui/certd-client/src/views/certd/{settings/two-factor => mine/security}/api.ts (84%) rename packages/ui/certd-client/src/views/certd/{settings/two-factor => mine/security}/index.vue (53%) diff --git a/packages/libs/lib-server/src/basic/constants.ts b/packages/libs/lib-server/src/basic/constants.ts index bfdaf507..8fdc4424 100644 --- a/packages/libs/lib-server/src/basic/constants.ts +++ b/packages/libs/lib-server/src/basic/constants.ts @@ -75,6 +75,10 @@ export const Constants = { code: 10010, message: '站点已关闭', }, + need2fa:{ + code: 10020, + message: '需要2FA认证', + }, openKeyError: { code: 20000, message: 'ApiToken错误', diff --git a/packages/libs/lib-server/src/basic/exception/auth-exception.ts b/packages/libs/lib-server/src/basic/exception/auth-exception.ts index 65a25591..6523a0ee 100644 --- a/packages/libs/lib-server/src/basic/exception/auth-exception.ts +++ b/packages/libs/lib-server/src/basic/exception/auth-exception.ts @@ -4,7 +4,15 @@ import { BaseException } from './base-exception.js'; * 授权异常 */ export class AuthException extends BaseException { - constructor(message) { + constructor(message?:string) { super('AuthException', Constants.res.auth.code, message ? message : Constants.res.auth.message); } } + + +export class Need2FAException extends BaseException { + constructor(message?:string) { + super('Need2FAException', Constants.res.need2fa.code, message ? message : Constants.res.need2fa.message); + } +} + diff --git a/packages/ui/certd-client/src/router/source/modules/certd.ts b/packages/ui/certd-client/src/router/source/modules/certd.ts index c524c01a..2c487474 100644 --- a/packages/ui/certd-client/src/router/source/modules/certd.ts +++ b/packages/ui/certd-client/src/router/source/modules/certd.ts @@ -143,6 +143,17 @@ export const certdResources = [ keepAlive: true, }, }, + { + title: "认证安全设置", + name: "UserSecurity", + path: "/certd/mine/security", + component: "/certd/mine/security/index.vue", + meta: { + icon: "ion:locked-outline", + auth: true, + isMenu: true, + }, + }, { title: "账号信息", name: "UserProfile", diff --git a/packages/ui/certd-client/src/views/certd/settings/two-factor/api.ts b/packages/ui/certd-client/src/views/certd/mine/security/api.ts similarity index 84% rename from packages/ui/certd-client/src/views/certd/settings/two-factor/api.ts rename to packages/ui/certd-client/src/views/certd/mine/security/api.ts index 2529af72..e401a80c 100644 --- a/packages/ui/certd-client/src/views/certd/settings/two-factor/api.ts +++ b/packages/ui/certd-client/src/views/certd/mine/security/api.ts @@ -38,3 +38,10 @@ export async function TwoFactorAuthenticatorSave(req: AuthenticatorSaveReq) { data: req, }); } + +export async function TwoFactorAuthenticatorOff() { + return await request({ + url: apiPrefix + "/twoFactor/authenticator/off", + method: "post", + }); +} diff --git a/packages/ui/certd-client/src/views/certd/settings/two-factor/index.vue b/packages/ui/certd-client/src/views/certd/mine/security/index.vue similarity index 53% rename from packages/ui/certd-client/src/views/certd/settings/two-factor/index.vue rename to packages/ui/certd-client/src/views/certd/mine/security/index.vue index eb699161..8c371f2e 100644 --- a/packages/ui/certd-client/src/views/certd/settings/two-factor/index.vue +++ b/packages/ui/certd-client/src/views/certd/mine/security/index.vue @@ -1,35 +1,39 @@