From 316537eb4dcbe5ec57784e8bf95ee3cdfd21dce7 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Fri, 27 Feb 2026 00:37:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=81=B6=E5=B0=94?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E8=AF=81=E4=B9=A6=E6=8A=A5=E6=9C=AA=E6=8E=88?= =?UTF-8?q?=E6=9D=83=E7=9A=84=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/project-selector/index.vue | 2 +- .../components/project-selector/project-current.vue | 2 +- .../src/views/certd/monitor/cert/crud.tsx | 9 ++++++++- .../ui/certd-client/src/views/certd/pipeline/use.tsx | 10 +++++++++- .../src/controller/basic/login/login-controller.ts | 4 +--- .../src/controller/basic/login/oauth-controller.ts | 8 ++++++++ .../controller/user/monitor/cert-info-controller.ts | 7 +++++-- .../controller/user/pipeline/history-controller.ts | 2 +- .../src/modules/login/service/login-service.ts | 6 ++++++ .../src/modules/pipeline/service/pipeline-service.ts | 12 ++++++++---- 10 files changed, 48 insertions(+), 14 deletions(-) diff --git a/packages/ui/certd-client/src/components/project-selector/index.vue b/packages/ui/certd-client/src/components/project-selector/index.vue index e5be4aea4..b9f53a837 100644 --- a/packages/ui/certd-client/src/components/project-selector/index.vue +++ b/packages/ui/certd-client/src/components/project-selector/index.vue @@ -12,8 +12,8 @@
- 当前项目:{{ projectStore.currentProject?.name || "..." }} +
diff --git a/packages/ui/certd-client/src/components/project-selector/project-current.vue b/packages/ui/certd-client/src/components/project-selector/project-current.vue index 5ca94cf6b..073b65b82 100644 --- a/packages/ui/certd-client/src/components/project-selector/project-current.vue +++ b/packages/ui/certd-client/src/components/project-selector/project-current.vue @@ -1,8 +1,8 @@ diff --git a/packages/ui/certd-client/src/views/certd/monitor/cert/crud.tsx b/packages/ui/certd-client/src/views/certd/monitor/cert/crud.tsx index 53bcf7738..69b5d44ed 100644 --- a/packages/ui/certd-client/src/views/certd/monitor/cert/crud.tsx +++ b/packages/ui/certd-client/src/views/certd/monitor/cert/crud.tsx @@ -12,6 +12,7 @@ import { useCertUpload } from "/@/views/certd/pipeline/cert-upload/use"; import { useSettingStore } from "/@/store/settings"; import { useProjectStore } from "/@/store/project"; import { useDicts } from "../../dicts"; +import { useUserStore } from "/@/store/user"; export default function ({ crudExpose, context }: CreateCrudOptionsProps): CreateCrudOptionsRet { const { t } = useI18n(); @@ -39,6 +40,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat const { myProjectDict } = useDicts(); const settingStore = useSettingStore(); const projectStore = useProjectStore(); + const userStore = useUserStore(); const model = useModal(); const viewCert = async (row: any) => { const cert = await api.GetCert(row.id); @@ -140,7 +142,12 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat notification.error({ message: t("certd.certificateNotGenerated") }); return; } - window.open("/api/monitor/cert/download?id=" + row.id); + let url = "/api/monitor/cert/download?id=" + row.id; + if (projectStore.isEnterprise) { + url += `&projectId=${projectStore.currentProject?.id}`; + } + url += `&token=${userStore.getToken}`; + window.open(url); }, }, }, diff --git a/packages/ui/certd-client/src/views/certd/pipeline/use.tsx b/packages/ui/certd-client/src/views/certd/pipeline/use.tsx index 1a69b3442..889dfecfa 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/use.tsx +++ b/packages/ui/certd-client/src/views/certd/pipeline/use.tsx @@ -3,8 +3,12 @@ import { notification } from "ant-design-vue"; import CertView from "/@/views/certd/pipeline/cert-view.vue"; import { env } from "/@/utils/util.env"; import { useModal } from "/@/use/use-modal"; +import { useProjectStore } from "/@/store/project"; +import { useUserStore } from "/@/store/user"; export function useCertViewer() { + const projectStore = useProjectStore(); + const userStore = useUserStore(); const model = useModal(); const viewCert = async (id: number) => { const cert = await api.GetCert(id); @@ -33,7 +37,11 @@ export function useCertViewer() { content: () => { const children = []; for (const file of files) { - const downloadUrl = `${env.API}/pi/history/download?pipelineId=${id}&fileId=${file.id}`; + let downloadUrl = `${env.API}/pi/history/download?pipelineId=${id}&fileId=${file.id}`; + if (projectStore.isEnterprise) { + downloadUrl += `&projectId=${projectStore.currentProject?.id}`; + } + downloadUrl += `&token=${userStore.getToken}`; children.push(
diff --git a/packages/ui/certd-server/src/controller/basic/login/login-controller.ts b/packages/ui/certd-server/src/controller/basic/login/login-controller.ts index 0f3a739e5..6eae30469 100644 --- a/packages/ui/certd-server/src/controller/basic/login/login-controller.ts +++ b/packages/ui/certd-server/src/controller/basic/login/login-controller.ts @@ -40,9 +40,7 @@ export class LoginController extends BaseController { } private writeTokenCookie(token: { expire: any; token: any }) { - this.ctx.cookies.set("certd_token", token.token, { - maxAge: 1000 * token.expire - }); + // this.loginService.writeTokenCookie(this.ctx,token); } @Post('/loginBySms', { summary: Constants.per.guest }) diff --git a/packages/ui/certd-server/src/controller/basic/login/oauth-controller.ts b/packages/ui/certd-server/src/controller/basic/login/oauth-controller.ts index 8e89fdeb3..0933bf0d7 100644 --- a/packages/ui/certd-server/src/controller/basic/login/oauth-controller.ts +++ b/packages/ui/certd-server/src/controller/basic/login/oauth-controller.ts @@ -70,6 +70,8 @@ export class ConnectController extends BaseController { }) return this.ok({ loginUrl, ticket }); } + + @Get('/callback/:type', { summary: Constants.per.guest }) public async callback(@Param('type') type: string, @Query() query: Record) { @@ -154,10 +156,15 @@ export class ConnectController extends BaseController { }); } + this.writeTokenCookie(loginRes); //返回登录成功token return this.ok(loginRes); } + private writeTokenCookie(token: { expire: any; token: any }) { + // this.loginService.writeTokenCookie(this.ctx,token); + } + @Post('/autoRegister', { summary: Constants.per.guest }) public async autoRegister(@Body(ALL) body: { validationCode: string, type: string }) { @@ -183,6 +190,7 @@ export class ConnectController extends BaseController { }); const loginRes = await this.loginService.generateToken(newUser); + this.writeTokenCookie(loginRes); return this.ok(loginRes); } diff --git a/packages/ui/certd-server/src/controller/user/monitor/cert-info-controller.ts b/packages/ui/certd-server/src/controller/user/monitor/cert-info-controller.ts index 62c2b3d1d..b8a323898 100644 --- a/packages/ui/certd-server/src/controller/user/monitor/cert-info-controller.ts +++ b/packages/ui/certd-server/src/controller/user/monitor/cert-info-controller.ts @@ -162,12 +162,15 @@ export class CertInfoController extends CrudController { @Get('/download', { summary: Constants.per.authOnly }) async download(@Query('id') id: number) { - await this.checkOwner(this.getService(),id,"read"); + const {userId,projectId} =await this.checkOwner(this.getService(),id,"read"); const certInfo = await this.getService().info(id) if (certInfo == null) { throw new CommonException('file not found'); } - if (certInfo.userId !== this.getUserId()) { + if (certInfo.userId !== userId) { + throw new CommonException('file not found'); + } + if (projectId && certInfo.projectId !== projectId) { throw new CommonException('file not found'); } // koa send file diff --git a/packages/ui/certd-server/src/controller/user/pipeline/history-controller.ts b/packages/ui/certd-server/src/controller/user/pipeline/history-controller.ts index 43b083a35..92c06fb61 100644 --- a/packages/ui/certd-server/src/controller/user/pipeline/history-controller.ts +++ b/packages/ui/certd-server/src/controller/user/pipeline/history-controller.ts @@ -241,7 +241,7 @@ export class HistoryController extends CrudController { history = await this.service.getLastHistory(pipelineId); } if (history == null) { - throw new CommonException('historyId is null'); + throw new CommonException('流水线还未运行过'); } const {projectId} = await this.getProjectUserIdRead() if (projectId) { diff --git a/packages/ui/certd-server/src/modules/login/service/login-service.ts b/packages/ui/certd-server/src/modules/login/service/login-service.ts index 8563782d4..684bab648 100644 --- a/packages/ui/certd-server/src/modules/login/service/login-service.ts +++ b/packages/ui/certd-server/src/modules/login/service/login-service.ts @@ -199,6 +199,12 @@ export class LoginService { return this.generateToken(info); } + writeTokenCookie(ctx:any,token: { expire: any; token: any }) { + ctx.cookies.set("certd_token", token.token, { + maxAge: 1000 * token.expire + }); + } + /** * 生成token diff --git a/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts b/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts index a7a939f48..303bf981e 100644 --- a/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts +++ b/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts @@ -842,7 +842,8 @@ export class PipelineService extends BaseService { .addSelect("count(1)", "count") .where({ userId: param.userId, - projectId: param.projectId + projectId: param.projectId, + isTemplate: false }) .groupBy("status") .getRawMany(); @@ -856,7 +857,8 @@ export class PipelineService extends BaseService { .addSelect("count(1)", "count") .where({ userId: param.userId, - projectId: param.projectId + projectId: param.projectId, + isTemplate: false }) .groupBy("disabled") .getRawMany(); @@ -880,7 +882,8 @@ export class PipelineService extends BaseService { where: { userId, disabled: false, - projectId + projectId, + isTemplate: false } }); await this.fillLastVars(list); @@ -902,7 +905,8 @@ export class PipelineService extends BaseService { .addSelect("COUNT(1) AS count") .where({ // 0点 - createTime: MoreThan(todayEnd.add(-param.days, "day").toDate()) + createTime: MoreThan(todayEnd.add(-param.days, "day").toDate()), + isTemplate: false }) .groupBy("date") .getRawMany();