diff --git a/packages/core/pipeline/package.json b/packages/core/pipeline/package.json index 4df76a255..9fb387d21 100644 --- a/packages/core/pipeline/package.json +++ b/packages/core/pipeline/package.json @@ -20,9 +20,7 @@ "axios": "^1.4.0", "node-forge": "^1.3.1", "nodemailer": "^6.9.3", - "qs": "^6.11.2", - "react-native-get-random-values": "^1.9.0", - "uuid": "^8.3.2" + "qs": "^6.11.2" }, "devDependencies": { "@certd/acme-client": "^1.1.1", diff --git a/packages/core/pipeline/src/plugin/api.ts b/packages/core/pipeline/src/plugin/api.ts index cbc439a44..f16031744 100644 --- a/packages/core/pipeline/src/plugin/api.ts +++ b/packages/core/pipeline/src/plugin/api.ts @@ -7,10 +7,6 @@ import { IEmailService } from "../service"; import { IContext } from "../core"; import { AxiosInstance } from "axios"; -//解决 uuid random-values not support 问题 -// https://github.com/uuidjs/uuid#getrandomvalues-not-supported -import "react-native-get-random-values"; -import { v4 as uuidv4 } from "uuid"; export enum ContextScope { global, pipeline, @@ -82,16 +78,19 @@ export abstract class AbstractTaskPlugin implements ITaskPlugin { this.ctx = ctx; } + randomFileId() { + return Math.random().toString(36).substring(2, 9); + } linkFile(file: FileItem) { this._result.files!.push({ ...file, - id: uuidv4(), + id: this.randomFileId(), }); } saveFile(filename: string, file: Buffer) { const filePath = this.ctx.fileStore.writeFile(filename, file); this._result.files!.push({ - id: uuidv4(), + id: this.randomFileId(), filename, path: filePath, }); 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 8dcf62106..e14b7ad5f 100644 --- a/packages/ui/certd-client/src/router/source/modules/certd.ts +++ b/packages/ui/certd-client/src/router/source/modules/certd.ts @@ -55,6 +55,16 @@ export const certdResources = [ icon: "ion:mail-outline", auth: true } + }, + { + title: "账号信息", + name: "userProfile", + path: "/certd/mine/user-profile", + component: "/certd/mine/user-profile.vue", + meta: { + icon: "ion:person-outline", + auth: true + } } ] } diff --git a/packages/ui/certd-client/src/views/certd/mine/api.ts b/packages/ui/certd-client/src/views/certd/mine/api.ts new file mode 100644 index 000000000..fc8f492e4 --- /dev/null +++ b/packages/ui/certd-client/src/views/certd/mine/api.ts @@ -0,0 +1,16 @@ +import { request } from "/src/api/service"; + +export async function getMineInfo() { + return request({ + url: "/mine/info", + method: "POST" + }); +} + +export async function changePassword(form: any) { + return request({ + url: "/mine/changePassword", + method: "POST", + data: form + }); +} diff --git a/packages/ui/certd-client/src/views/certd/mine/user-profile.vue b/packages/ui/certd-client/src/views/certd/mine/user-profile.vue new file mode 100644 index 000000000..bef547620 --- /dev/null +++ b/packages/ui/certd-client/src/views/certd/mine/user-profile.vue @@ -0,0 +1,98 @@ + + + diff --git a/packages/ui/certd-server/src/modules/authority/service/user-service.ts b/packages/ui/certd-server/src/modules/authority/service/user-service.ts index afa7995ce..57c3c0163 100644 --- a/packages/ui/certd-server/src/modules/authority/service/user-service.ts +++ b/packages/ui/certd-server/src/modules/authority/service/user-service.ts @@ -142,4 +142,17 @@ export class UserService extends BaseService { delete newUser.password; return newUser; } + + async changePassword(userId: any, form: any) { + const user = await this.info(userId); + if (!this.checkPassword(form.password, user.password)) { + throw new CommonException('原密码错误'); + } + const param = { + id: userId, + password: form.newPassword, + }; + + await this.update(param); + } } diff --git a/packages/ui/certd-server/src/modules/mine/controller/mine-controller.ts b/packages/ui/certd-server/src/modules/mine/controller/mine-controller.ts new file mode 100644 index 000000000..9d5bd4a84 --- /dev/null +++ b/packages/ui/certd-server/src/modules/mine/controller/mine-controller.ts @@ -0,0 +1,34 @@ +import { + ALL, + Body, + Controller, + Inject, + Post, + Provide, +} from '@midwayjs/decorator'; +import { BaseController } from '../../../basic/base-controller'; +import { Constants } from '../../../basic/constants'; +import { UserService } from '../../authority/service/user-service'; + +/** + */ +@Provide() +@Controller('/api/mine') +export class MineController extends BaseController { + @Inject() + userService: UserService; + @Post('/info', { summary: Constants.per.authOnly }) + public async info() { + const userId = this.getUserId(); + const user = await this.userService.info(userId); + delete user.password; + return this.ok(user); + } + + @Post('/changePassword', { summary: Constants.per.authOnly }) + public async changePassword(@Body(ALL) body: any) { + const userId = this.getUserId(); + await this.userService.changePassword(userId, body); + return this.ok({}); + } +}