From 684964da4f88ae0a9371f76253604ac2cb1674fe Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Sun, 15 Mar 2026 14:01:34 +0800 Subject: [PATCH] chore: swagger support --- .../lib-server/src/basic/base-controller.ts | 2 +- .../libs/lib-server/src/basic/base-service.ts | 3 +- .../libs/lib-server/src/basic/constants.ts | 2 ++ packages/ui/certd-server/package.json | 1 + .../certd-server/src/config/config.default.ts | 6 ++++ packages/ui/certd-server/src/configuration.ts | 3 +- .../controller/openapi/v1/cert-controller.ts | 2 ++ .../controller/user/addon/addon-controller.ts | 2 ++ .../controller/user/basic/group-controller.ts | 2 ++ .../controller/user/basic/user-controller.ts | 2 ++ .../controller/user/cert/domain-controller.ts | 2 ++ .../user/cname/cname-provider-controller.ts | 2 ++ .../user/cname/cname-record-controller.ts | 2 ++ .../user/dashboard/statistic-controller.ts | 2 ++ .../user/enterprise/project-controller.ts | 2 ++ .../enterprise/project-member-controller.ts | 2 ++ .../user/enterprise/transfer-controller.ts | 2 ++ .../controller/user/mine/email-controller.ts | 2 ++ .../controller/user/mine/mine-controller.ts | 2 ++ .../user/mine/passkey-controller.ts | 2 ++ .../mine/setting-two-factor-controller.ts | 2 ++ .../user/mine/user-settings-controller.ts | 2 ++ .../user/monitor/cert-info-controller.ts | 2 ++ .../user/monitor/site-info-controller.ts | 2 ++ .../user/monitor/site-ip-controller.ts | 2 ++ .../user/open/open-key-controller.ts | 2 ++ .../user/pipeline/access-controller.ts | 2 ++ .../user/pipeline/cert-controller.ts | 2 ++ .../user/pipeline/dns-provider-controller.ts | 2 ++ .../user/pipeline/handle-controller.ts | 2 ++ .../user/pipeline/history-controller.ts | 2 ++ .../user/pipeline/notification-controller.ts | 2 ++ .../user/pipeline/pipeline-controller.ts | 32 ++++++++++--------- .../pipeline/pipeline-group-controller.ts | 2 ++ .../user/pipeline/plugin-controller.ts | 2 ++ .../user/pipeline/sub-domain-controller.ts | 2 ++ .../user/pipeline/template-controller.ts | 2 ++ .../certd-server/src/middleware/authority.ts | 7 ++-- .../sys/enterprise/service/project-service.ts | 8 +++-- pnpm-lock.yaml | 8 +++++ 40 files changed, 110 insertions(+), 22 deletions(-) diff --git a/packages/libs/lib-server/src/basic/base-controller.ts b/packages/libs/lib-server/src/basic/base-controller.ts index dbbeb4927..e1fa09220 100644 --- a/packages/libs/lib-server/src/basic/base-controller.ts +++ b/packages/libs/lib-server/src/basic/base-controller.ts @@ -116,7 +116,7 @@ export abstract class BaseController { await authService.checkProjectId(service, id, projectId); }else{ - if(userId === 0){ + if(userId === Constants.systemUserId){ //系统级别,不检查权限 }else{ if(allowAdmin){ diff --git a/packages/libs/lib-server/src/basic/base-service.ts b/packages/libs/lib-server/src/basic/base-service.ts index 00e9e5fd4..b653dccbe 100644 --- a/packages/libs/lib-server/src/basic/base-service.ts +++ b/packages/libs/lib-server/src/basic/base-service.ts @@ -4,6 +4,7 @@ import { Inject } from '@midwayjs/core'; import { TypeORMDataSourceManager } from '@midwayjs/typeorm'; import { EntityManager } from 'typeorm/entity-manager/EntityManager.js'; import { FindManyOptions } from 'typeorm'; +import { Constants } from './constants.js'; export type PageReq = { page?: { offset: number; limit: number }; @@ -258,7 +259,7 @@ export abstract class BaseService { export function checkUserProjectParam(userId: number, projectId: number) { if (projectId != null ){ - if( userId !==-1) { + if( userId !== Constants.enterpriseUserId) { throw new ValidateException('userId projectId 错误'); } return true diff --git a/packages/libs/lib-server/src/basic/constants.ts b/packages/libs/lib-server/src/basic/constants.ts index c3850990a..407683b8c 100644 --- a/packages/libs/lib-server/src/basic/constants.ts +++ b/packages/libs/lib-server/src/basic/constants.ts @@ -120,4 +120,6 @@ export const Constants = { message: '用户邮箱还未配置', }, }, + systemUserId: 0, // 系统级别userid固定为0 + enterpriseUserId: -1 // 企业模式用户id固定为-1 }; diff --git a/packages/ui/certd-server/package.json b/packages/ui/certd-server/package.json index 6c82985ff..188775104 100644 --- a/packages/ui/certd-server/package.json +++ b/packages/ui/certd-server/package.json @@ -78,6 +78,7 @@ "@midwayjs/koa": "3.20.13", "@midwayjs/logger": "3.4.2", "@midwayjs/static-file": "3.20.13", + "@midwayjs/swagger": "3.20.11", "@midwayjs/typeorm": "3.20.11", "@midwayjs/upload": "3.20.13", "@midwayjs/validate": "3.20.13", diff --git a/packages/ui/certd-server/src/config/config.default.ts b/packages/ui/certd-server/src/config/config.default.ts index 47179e276..45e8f4630 100644 --- a/packages/ui/certd-server/src/config/config.default.ts +++ b/packages/ui/certd-server/src/config/config.default.ts @@ -131,6 +131,12 @@ const development = { contactText: '', contactLink: '', }, + swagger: { + isGenerateTagForController: false, + routerFilter: (url: string) => { + return url.startsWith('/api/sys'); + } + } } as MidwayConfig; loadDotEnv(); diff --git a/packages/ui/certd-server/src/configuration.ts b/packages/ui/certd-server/src/configuration.ts index 0aadb4267..1b74aa462 100644 --- a/packages/ui/certd-server/src/configuration.ts +++ b/packages/ui/certd-server/src/configuration.ts @@ -20,7 +20,7 @@ import * as commercial from '@certd/commercial-core'; import * as upload from '@midwayjs/upload'; import { setLogger } from '@certd/acme-client'; import {HiddenMiddleware} from "./middleware/hidden.js"; - +import * as swagger from '@midwayjs/swagger'; //@ts-ignore // process.env.UV_THREADPOOL_SIZE = 2 process.on('uncaughtException', error => { @@ -62,6 +62,7 @@ process.on('uncaughtException', error => { upload, libServer, commercial, + swagger, { component: info, enabledEnvironment: ['local'], diff --git a/packages/ui/certd-server/src/controller/openapi/v1/cert-controller.ts b/packages/ui/certd-server/src/controller/openapi/v1/cert-controller.ts index 2136e727a..a57e22dc8 100644 --- a/packages/ui/certd-server/src/controller/openapi/v1/cert-controller.ts +++ b/packages/ui/certd-server/src/controller/openapi/v1/cert-controller.ts @@ -5,6 +5,7 @@ import { OpenKey } from "../../../modules/open/service/open-key-service.js"; import { BaseOpenController } from "../base-open-controller.js"; import { CertInfoFacade } from "../../../modules/monitor/facade/cert-info-facade.js"; import { merge } from "lodash-es"; +import { ApiTags } from "@midwayjs/swagger"; export type CertGetReq = { domains?: string; @@ -17,6 +18,7 @@ export type CertGetReq = { */ @Provide() @Controller('/api/v1/cert') +@ApiTags(['openapi']) export class OpenCertController extends BaseOpenController { @Inject() certInfoFacade: CertInfoFacade; diff --git a/packages/ui/certd-server/src/controller/user/addon/addon-controller.ts b/packages/ui/certd-server/src/controller/user/addon/addon-controller.ts index d294a44ac..2c1d3ca4c 100644 --- a/packages/ui/certd-server/src/controller/user/addon/addon-controller.ts +++ b/packages/ui/certd-server/src/controller/user/addon/addon-controller.ts @@ -12,12 +12,14 @@ import { AuthService } from "../../../modules/sys/authority/service/auth-service import { checkPlus } from "@certd/plus-core"; import { http, logger, utils } from "@certd/basic"; import { TaskServiceBuilder } from "../../../modules/pipeline/service/getter/task-service-getter.js"; +import { ApiTags } from "@midwayjs/swagger"; /** * Addon */ @Provide() @Controller("/api/addon") +@ApiTags(['addon']) export class AddonController extends CrudController { @Inject() service: AddonService; diff --git a/packages/ui/certd-server/src/controller/user/basic/group-controller.ts b/packages/ui/certd-server/src/controller/user/basic/group-controller.ts index 483764962..b62a7caf7 100644 --- a/packages/ui/certd-server/src/controller/user/basic/group-controller.ts +++ b/packages/ui/certd-server/src/controller/user/basic/group-controller.ts @@ -2,12 +2,14 @@ import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/c import { Constants, CrudController } from '@certd/lib-server'; import { AuthService } from '../../../modules/sys/authority/service/auth-service.js'; import { GroupService } from '../../../modules/basic/service/group-service.js'; +import { ApiTags } from '@midwayjs/swagger'; /** * 通知 */ @Provide() @Controller('/api/basic/group') +@ApiTags(['basic-group']) export class GroupController extends CrudController { @Inject() service: GroupService; diff --git a/packages/ui/certd-server/src/controller/user/basic/user-controller.ts b/packages/ui/certd-server/src/controller/user/basic/user-controller.ts index 3c8a2e5b1..9170a6539 100644 --- a/packages/ui/certd-server/src/controller/user/basic/user-controller.ts +++ b/packages/ui/certd-server/src/controller/user/basic/user-controller.ts @@ -5,12 +5,14 @@ import { AuthService } from '../../../modules/sys/authority/service/auth-service import { UserService } from '../../../modules/sys/authority/service/user-service.js'; import { BasicController } from '../../basic/code-controller.js'; import { RoleService } from '../../../modules/sys/authority/service/role-service.js'; +import { ApiTags } from '@midwayjs/swagger'; /** * 通知 */ @Provide() @Controller('/api/basic/user') +@ApiTags(['basic-user']) export class BasicUserController extends BasicController { @Inject() service: UserService; diff --git a/packages/ui/certd-server/src/controller/user/cert/domain-controller.ts b/packages/ui/certd-server/src/controller/user/cert/domain-controller.ts index 299ba10d3..af482bba6 100644 --- a/packages/ui/certd-server/src/controller/user/cert/domain-controller.ts +++ b/packages/ui/certd-server/src/controller/user/cert/domain-controller.ts @@ -2,12 +2,14 @@ import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/c import { Constants, CrudController } from '@certd/lib-server'; import { DomainService } from "../../../modules/cert/service/domain-service.js"; import { checkPlus } from '@certd/plus-core'; +import { ApiTags } from '@midwayjs/swagger'; /** * 授权 */ @Provide() @Controller('/api/cert/domain') +@ApiTags(['cert']) export class DomainController extends CrudController { @Inject() service: DomainService; diff --git a/packages/ui/certd-server/src/controller/user/cname/cname-provider-controller.ts b/packages/ui/certd-server/src/controller/user/cname/cname-provider-controller.ts index 618cbbe7e..c4ce98d21 100644 --- a/packages/ui/certd-server/src/controller/user/cname/cname-provider-controller.ts +++ b/packages/ui/certd-server/src/controller/user/cname/cname-provider-controller.ts @@ -2,12 +2,14 @@ import { ALL, Body, Controller, Inject, Post, Provide } from '@midwayjs/core'; import { BaseController, Constants } from '@certd/lib-server'; import { CnameRecordService } from '../../../modules/cname/service/cname-record-service.js'; import { CnameProviderService } from '../../../modules/cname/service/cname-provider-service.js'; +import { ApiTags } from '@midwayjs/swagger'; /** * 授权 */ @Provide() @Controller('/api/cname/provider') +@ApiTags(['pipeline-cname']) export class CnameProviderController extends BaseController { @Inject() service: CnameRecordService; diff --git a/packages/ui/certd-server/src/controller/user/cname/cname-record-controller.ts b/packages/ui/certd-server/src/controller/user/cname/cname-record-controller.ts index c2cc24dcd..f9516ddd0 100644 --- a/packages/ui/certd-server/src/controller/user/cname/cname-record-controller.ts +++ b/packages/ui/certd-server/src/controller/user/cname/cname-record-controller.ts @@ -1,12 +1,14 @@ import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/core'; import { Constants, CrudController } from '@certd/lib-server'; import { CnameRecordService } from '../../../modules/cname/service/cname-record-service.js'; +import { ApiTags } from '@midwayjs/swagger'; /** * 授权 */ @Provide() @Controller('/api/cname/record') +@ApiTags(['pipeline-cname']) export class CnameRecordController extends CrudController { @Inject() service: CnameRecordService; diff --git a/packages/ui/certd-server/src/controller/user/dashboard/statistic-controller.ts b/packages/ui/certd-server/src/controller/user/dashboard/statistic-controller.ts index 970ffb035..fdd18f7cb 100644 --- a/packages/ui/certd-server/src/controller/user/dashboard/statistic-controller.ts +++ b/packages/ui/certd-server/src/controller/user/dashboard/statistic-controller.ts @@ -5,6 +5,7 @@ import { RoleService } from '../../../modules/sys/authority/service/role-service import { PipelineService } from '../../../modules/pipeline/service/pipeline-service.js'; import { HistoryService } from '../../../modules/pipeline/service/history-service.js'; import { CertInfoService } from '../../../modules/monitor/index.js'; +import { ApiTags } from '@midwayjs/swagger'; export type ChartItem = { name: string; @@ -30,6 +31,7 @@ export type UserStatisticCount = { */ @Provide() @Controller('/api/statistic/') +@ApiTags(['dashboard']) export class StatisticController extends BaseController { @Inject() userService: UserService; diff --git a/packages/ui/certd-server/src/controller/user/enterprise/project-controller.ts b/packages/ui/certd-server/src/controller/user/enterprise/project-controller.ts index 3289c8ffb..8a25cf619 100644 --- a/packages/ui/certd-server/src/controller/user/enterprise/project-controller.ts +++ b/packages/ui/certd-server/src/controller/user/enterprise/project-controller.ts @@ -3,11 +3,13 @@ import { ALL, Body, Controller, Inject, Post, Provide } from '@midwayjs/core'; import { AuthService } from '../../../modules/sys/authority/service/auth-service.js'; import { ProjectService } from '../../../modules/sys/enterprise/service/project-service.js'; import { ProjectMemberService } from '../../../modules/sys/enterprise/service/project-member-service.js'; +import { ApiTags } from '@midwayjs/swagger'; /** */ @Provide() @Controller('/api/enterprise/project') +@ApiTags(['enterprise-project']) export class UserProjectController extends BaseController { @Inject() service: ProjectService; diff --git a/packages/ui/certd-server/src/controller/user/enterprise/project-member-controller.ts b/packages/ui/certd-server/src/controller/user/enterprise/project-member-controller.ts index 1c4f751b8..6f3b809b2 100644 --- a/packages/ui/certd-server/src/controller/user/enterprise/project-member-controller.ts +++ b/packages/ui/certd-server/src/controller/user/enterprise/project-member-controller.ts @@ -4,10 +4,12 @@ import { ProjectMemberEntity } from "../../../modules/sys/enterprise/entity/proj import { ProjectMemberService } from "../../../modules/sys/enterprise/service/project-member-service.js"; import { merge } from "lodash-es"; import { ProjectService } from "../../../modules/sys/enterprise/service/project-service.js"; +import { ApiTags } from "@midwayjs/swagger"; /** */ @Provide() @Controller("/api/enterprise/projectMember") +@ApiTags(['enterprise-project-member']) export class ProjectMemberController extends CrudController { @Inject() service: ProjectMemberService; diff --git a/packages/ui/certd-server/src/controller/user/enterprise/transfer-controller.ts b/packages/ui/certd-server/src/controller/user/enterprise/transfer-controller.ts index 2570c8baf..9bf5fbb42 100644 --- a/packages/ui/certd-server/src/controller/user/enterprise/transfer-controller.ts +++ b/packages/ui/certd-server/src/controller/user/enterprise/transfer-controller.ts @@ -1,11 +1,13 @@ import { BaseController, Constants } from '@certd/lib-server'; import { Controller, Inject, Post, Provide } from '@midwayjs/core'; import { TransferService } from '../../../modules/sys/enterprise/service/transfer-service.js'; +import { ApiTags } from '@midwayjs/swagger'; /** */ @Provide() @Controller('/api/enterprise/transfer') +@ApiTags(['enterprise-project']) export class TransferController extends BaseController { @Inject() service: TransferService; diff --git a/packages/ui/certd-server/src/controller/user/mine/email-controller.ts b/packages/ui/certd-server/src/controller/user/mine/email-controller.ts index e5daf16b5..2f41c8387 100644 --- a/packages/ui/certd-server/src/controller/user/mine/email-controller.ts +++ b/packages/ui/certd-server/src/controller/user/mine/email-controller.ts @@ -2,11 +2,13 @@ import { Body, Controller, Inject, Post, Provide } from '@midwayjs/core'; import { BaseController } from '@certd/lib-server'; import { Constants } from '@certd/lib-server'; import { EmailService } from '../../../modules/basic/service/email-service.js'; +import { ApiTags } from '@midwayjs/swagger'; /** */ @Provide() @Controller('/api/mine/email') +@ApiTags(['mine']) export class EmailController extends BaseController { @Inject() emailService: EmailService; diff --git a/packages/ui/certd-server/src/controller/user/mine/mine-controller.ts b/packages/ui/certd-server/src/controller/user/mine/mine-controller.ts index 35cf3d7ef..e07ad96f7 100644 --- a/packages/ui/certd-server/src/controller/user/mine/mine-controller.ts +++ b/packages/ui/certd-server/src/controller/user/mine/mine-controller.ts @@ -3,11 +3,13 @@ import { ALL, Body, Controller, Inject, Post, Provide } from '@midwayjs/core'; import { PasskeyService } from '../../../modules/login/service/passkey-service.js'; import { RoleService } from '../../../modules/sys/authority/service/role-service.js'; import { UserService } from '../../../modules/sys/authority/service/user-service.js'; +import { ApiTags } from '@midwayjs/swagger'; /** */ @Provide() @Controller('/api/mine') +@ApiTags(['mine']) export class MineController extends BaseController { @Inject() userService: UserService; diff --git a/packages/ui/certd-server/src/controller/user/mine/passkey-controller.ts b/packages/ui/certd-server/src/controller/user/mine/passkey-controller.ts index 7ff49ab55..4fd8b8c71 100644 --- a/packages/ui/certd-server/src/controller/user/mine/passkey-controller.ts +++ b/packages/ui/certd-server/src/controller/user/mine/passkey-controller.ts @@ -2,9 +2,11 @@ import { ALL, Body, Controller, Inject, Post, Provide, RequestIP } from "@midway import { PasskeyService } from "../../../modules/login/service/passkey-service.js"; import { BaseController, Constants } from "@certd/lib-server"; import { UserService } from "../../../modules/sys/authority/service/user-service.js"; +import { ApiTags } from "@midwayjs/swagger"; @Provide() @Controller('/api/mine/passkey') +@ApiTags(['mine']) export class MinePasskeyController extends BaseController { @Inject() passkeyService: PasskeyService; diff --git a/packages/ui/certd-server/src/controller/user/mine/setting-two-factor-controller.ts b/packages/ui/certd-server/src/controller/user/mine/setting-two-factor-controller.ts index 711cd571d..1d5e6fd05 100644 --- a/packages/ui/certd-server/src/controller/user/mine/setting-two-factor-controller.ts +++ b/packages/ui/certd-server/src/controller/user/mine/setting-two-factor-controller.ts @@ -5,11 +5,13 @@ import { UserTwoFactorSetting } from "../../../modules/mine/service/models.js"; import { merge } from "lodash-es"; import { TwoFactorService } from "../../../modules/mine/service/two-factor-service.js"; import {isPlus} from "@certd/plus-core"; +import { ApiTags } from "@midwayjs/swagger"; /** */ @Provide() @Controller("/api/user/settings/twoFactor") +@ApiTags(['mine']) export class UserTwoFactorSettingController extends BaseController { @Inject() service: UserSettingsService; diff --git a/packages/ui/certd-server/src/controller/user/mine/user-settings-controller.ts b/packages/ui/certd-server/src/controller/user/mine/user-settings-controller.ts index bfb7036c7..4d135dd06 100644 --- a/packages/ui/certd-server/src/controller/user/mine/user-settings-controller.ts +++ b/packages/ui/certd-server/src/controller/user/mine/user-settings-controller.ts @@ -5,11 +5,13 @@ import { UserSettingsEntity } from "../../../modules/mine/entity/user-settings.j import { UserGrantSetting } from "../../../modules/mine/service/models.js"; import { isPlus } from "@certd/plus-core"; import { merge } from "lodash-es"; +import { ApiTags } from "@midwayjs/swagger"; /** */ @Provide() @Controller('/api/user/settings') +@ApiTags(['mine']) export class UserSettingsController extends CrudController { @Inject() service: UserSettingsService; 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 b8a323898..b4403e42b 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 @@ -7,11 +7,13 @@ import { SelectQueryBuilder } from "typeorm"; import { logger } from "@certd/basic"; import fs from "fs"; import dayjs from "dayjs"; +import { ApiTags } from "@midwayjs/swagger"; /** */ @Provide() @Controller('/api/monitor/cert') +@ApiTags(['cert']) export class CertInfoController extends CrudController { @Inject() service: CertInfoService; diff --git a/packages/ui/certd-server/src/controller/user/monitor/site-info-controller.ts b/packages/ui/certd-server/src/controller/user/monitor/site-info-controller.ts index 6cb3540f6..3591654aa 100644 --- a/packages/ui/certd-server/src/controller/user/monitor/site-info-controller.ts +++ b/packages/ui/certd-server/src/controller/user/monitor/site-info-controller.ts @@ -6,11 +6,13 @@ import { UserSiteMonitorSetting } from "../../../modules/mine/service/models.js" import { merge } from "lodash-es"; import {SiteIpService} from "../../../modules/monitor/service/site-ip-service.js"; import { utils } from "@certd/basic"; +import { ApiTags } from "@midwayjs/swagger"; /** */ @Provide() @Controller('/api/monitor/site') +@ApiTags(['monitor']) export class SiteInfoController extends CrudController { @Inject() service: SiteInfoService; diff --git a/packages/ui/certd-server/src/controller/user/monitor/site-ip-controller.ts b/packages/ui/certd-server/src/controller/user/monitor/site-ip-controller.ts index 127c4a387..28e0adf58 100644 --- a/packages/ui/certd-server/src/controller/user/monitor/site-ip-controller.ts +++ b/packages/ui/certd-server/src/controller/user/monitor/site-ip-controller.ts @@ -3,11 +3,13 @@ import { Constants, CrudController } from "@certd/lib-server"; import { AuthService } from "../../../modules/sys/authority/service/auth-service.js"; import { SiteIpService } from "../../../modules/monitor/service/site-ip-service.js"; import { SiteInfoService } from "../../../modules/monitor/index.js"; +import { ApiTags } from "@midwayjs/swagger"; /** */ @Provide() @Controller('/api/monitor/site/ip') +@ApiTags(['monitor']) export class SiteInfoController extends CrudController { @Inject() service: SiteIpService; diff --git a/packages/ui/certd-server/src/controller/user/open/open-key-controller.ts b/packages/ui/certd-server/src/controller/user/open/open-key-controller.ts index 4477e665c..22b7d92d5 100644 --- a/packages/ui/certd-server/src/controller/user/open/open-key-controller.ts +++ b/packages/ui/certd-server/src/controller/user/open/open-key-controller.ts @@ -2,11 +2,13 @@ import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/c import { Constants, CrudController } from '@certd/lib-server'; import { AuthService } from '../../../modules/sys/authority/service/auth-service.js'; import { OpenKeyService } from '../../../modules/open/service/open-key-service.js'; +import { ApiTags } from '@midwayjs/swagger'; /** */ @Provide() @Controller('/api/open/key') +@ApiTags(['open']) export class OpenKeyController extends CrudController { @Inject() service: OpenKeyService; diff --git a/packages/ui/certd-server/src/controller/user/pipeline/access-controller.ts b/packages/ui/certd-server/src/controller/user/pipeline/access-controller.ts index 19d42d7bd..e942ed572 100644 --- a/packages/ui/certd-server/src/controller/user/pipeline/access-controller.ts +++ b/packages/ui/certd-server/src/controller/user/pipeline/access-controller.ts @@ -3,11 +3,13 @@ import { Constants, CrudController } from '@certd/lib-server'; import { AccessService } from '@certd/lib-server'; import { AuthService } from '../../../modules/sys/authority/service/auth-service.js'; import { AccessDefine } from '@certd/pipeline'; +import { ApiTags } from '@midwayjs/swagger'; /** * 授权 */ @Provide() +@ApiTags(['pipeline-access']) @Controller('/api/pi/access') export class AccessController extends CrudController { @Inject() diff --git a/packages/ui/certd-server/src/controller/user/pipeline/cert-controller.ts b/packages/ui/certd-server/src/controller/user/pipeline/cert-controller.ts index dbe947523..262170487 100644 --- a/packages/ui/certd-server/src/controller/user/pipeline/cert-controller.ts +++ b/packages/ui/certd-server/src/controller/user/pipeline/cert-controller.ts @@ -5,9 +5,11 @@ import { StorageService } from '../../../modules/pipeline/service/storage-servic import { CertReader } from "@certd/plugin-cert"; import { UserSettingsService } from '../../../modules/mine/service/user-settings-service.js'; import { UserGrantSetting } from '../../../modules/mine/service/models.js'; +import { ApiTags } from '@midwayjs/swagger'; @Provide() @Controller('/api/pi/cert') +@ApiTags(['pipeline-cert']) export class CertController extends BaseController { @Inject() pipelineService: PipelineService; diff --git a/packages/ui/certd-server/src/controller/user/pipeline/dns-provider-controller.ts b/packages/ui/certd-server/src/controller/user/pipeline/dns-provider-controller.ts index bde2bf9f5..e1c8479c4 100644 --- a/packages/ui/certd-server/src/controller/user/pipeline/dns-provider-controller.ts +++ b/packages/ui/certd-server/src/controller/user/pipeline/dns-provider-controller.ts @@ -2,12 +2,14 @@ import { ALL, Controller, Inject, Post, Provide, Query } from '@midwayjs/core'; import { DnsProviderService } from '../../../modules/pipeline/service/dns-provider-service.js'; import { BaseController } from '@certd/lib-server'; import { Constants } from '@certd/lib-server'; +import { ApiTags } from '@midwayjs/swagger'; /** * 插件 */ @Provide() @Controller('/api/pi/dnsProvider') +@ApiTags(['pipeline-dns-provider']) export class DnsProviderController extends BaseController { @Inject() service: DnsProviderService; diff --git a/packages/ui/certd-server/src/controller/user/pipeline/handle-controller.ts b/packages/ui/certd-server/src/controller/user/pipeline/handle-controller.ts index 98c1817a0..82ff87cc0 100644 --- a/packages/ui/certd-server/src/controller/user/pipeline/handle-controller.ts +++ b/packages/ui/certd-server/src/controller/user/pipeline/handle-controller.ts @@ -16,9 +16,11 @@ import {http, HttpRequestConfig, logger, mergeUtils, utils} from '@certd/basic'; import {NotificationService} from '../../../modules/pipeline/service/notification-service.js'; import {TaskServiceBuilder} from "../../../modules/pipeline/service/getter/task-service-getter.js"; import { cloneDeep } from 'lodash-es'; +import { ApiTags } from '@midwayjs/swagger'; @Provide() @Controller('/api/pi/handle') +@ApiTags(['pipeline-handle']) export class HandleController extends BaseController { @Inject() accessService: AccessService; 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 92c06fb61..f63035caa 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 @@ -12,12 +12,14 @@ import { HistoryLogService } from "../../../modules/pipeline/service/history-log import { HistoryService } from "../../../modules/pipeline/service/history-service.js"; import { PipelineService } from "../../../modules/pipeline/service/pipeline-service.js"; import { AuthService } from "../../../modules/sys/authority/service/auth-service.js"; +import { ApiTags } from "@midwayjs/swagger"; /** * 证书 */ @Provide() @Controller('/api/pi/history') +@ApiTags(['pipeline-history']) export class HistoryController extends CrudController { @Inject() service: HistoryService; diff --git a/packages/ui/certd-server/src/controller/user/pipeline/notification-controller.ts b/packages/ui/certd-server/src/controller/user/pipeline/notification-controller.ts index 82421c562..b5dc9f9e6 100644 --- a/packages/ui/certd-server/src/controller/user/pipeline/notification-controller.ts +++ b/packages/ui/certd-server/src/controller/user/pipeline/notification-controller.ts @@ -4,12 +4,14 @@ import { NotificationService } from '../../../modules/pipeline/service/notificat import { AuthService } from '../../../modules/sys/authority/service/auth-service.js'; import { NotificationDefine } from '@certd/pipeline'; import { checkPlus } from '@certd/plus-core'; +import { ApiTags } from '@midwayjs/swagger'; /** * 通知 */ @Provide() @Controller('/api/pi/notification') +@ApiTags(['pipeline-notification']) export class NotificationController extends CrudController { @Inject() service: NotificationService; diff --git a/packages/ui/certd-server/src/controller/user/pipeline/pipeline-controller.ts b/packages/ui/certd-server/src/controller/user/pipeline/pipeline-controller.ts index 9acfbf7e9..135e32881 100644 --- a/packages/ui/certd-server/src/controller/user/pipeline/pipeline-controller.ts +++ b/packages/ui/certd-server/src/controller/user/pipeline/pipeline-controller.ts @@ -6,11 +6,13 @@ import { PipelineEntity } from '../../../modules/pipeline/entity/pipeline.js'; import { HistoryService } from '../../../modules/pipeline/service/history-service.js'; import { PipelineService } from '../../../modules/pipeline/service/pipeline-service.js'; import { AuthService } from '../../../modules/sys/authority/service/auth-service.js'; +import { ApiTags } from '@midwayjs/swagger'; /** * 证书 */ @Provide() +@ApiTags(['pipeline']) @Controller('/api/pi/pipeline') export class PipelineController extends CrudController { @Inject() @@ -85,23 +87,23 @@ export class PipelineController extends CrudController { } - @Post('/add', { summary: Constants.per.authOnly }) - async add(@Body(ALL) bean: PipelineEntity) { - const { projectId, userId } = await this.getProjectUserIdWrite() - bean.userId = userId - bean.projectId = projectId - return super.add(bean); - } + // @Post('/add', { summary: Constants.per.authOnly }) + // async add(@Body(ALL) bean: PipelineEntity) { + // const { projectId, userId } = await this.getProjectUserIdWrite() + // bean.userId = userId + // bean.projectId = projectId + // return super.add(bean); + // } - @Post('/update', { summary: Constants.per.authOnly }) - async update(@Body(ALL) bean) { - await this.checkOwner(this.getService(), bean.id,"write",true); - delete bean.userId; - delete bean.projectId; - return super.update(bean); - } + // @Post('/update', { summary: Constants.per.authOnly }) + // async update(@Body(ALL) bean) { + // await this.checkOwner(this.getService(), bean.id,"write",true); + // delete bean.userId; + // delete bean.projectId; + // return super.update(bean); + // } - @Post('/save', { summary: Constants.per.authOnly }) + @Post('/save', { summary: Constants.per.authOnly,description: '新增/更新流水线' }) async save(@Body(ALL) bean: { addToMonitorEnabled: boolean, addToMonitorDomains: string } & PipelineEntity) { const { userId ,projectId} = await this.getProjectUserIdWrite() if (bean.id > 0) { diff --git a/packages/ui/certd-server/src/controller/user/pipeline/pipeline-group-controller.ts b/packages/ui/certd-server/src/controller/user/pipeline/pipeline-group-controller.ts index 9f5e93d42..f37d3d4d1 100644 --- a/packages/ui/certd-server/src/controller/user/pipeline/pipeline-group-controller.ts +++ b/packages/ui/certd-server/src/controller/user/pipeline/pipeline-group-controller.ts @@ -2,12 +2,14 @@ import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/c import { Constants, CrudController } from '@certd/lib-server'; import { AuthService } from '../../../modules/sys/authority/service/auth-service.js'; import { PipelineGroupService } from '../../../modules/pipeline/service/pipeline-group-service.js'; +import { ApiTags } from '@midwayjs/swagger'; /** * 通知 */ @Provide() @Controller('/api/pi/pipeline/group') +@ApiTags(['pipeline-group']) export class PipelineGroupController extends CrudController { @Inject() service: PipelineGroupService; diff --git a/packages/ui/certd-server/src/controller/user/pipeline/plugin-controller.ts b/packages/ui/certd-server/src/controller/user/pipeline/plugin-controller.ts index 4ae968cbf..00adf54f0 100644 --- a/packages/ui/certd-server/src/controller/user/pipeline/plugin-controller.ts +++ b/packages/ui/certd-server/src/controller/user/pipeline/plugin-controller.ts @@ -3,12 +3,14 @@ import { BaseController, Constants } from '@certd/lib-server'; import { PluginService } from '../../../modules/plugin/service/plugin-service.js'; import { PluginConfigService } from '../../../modules/plugin/service/plugin-config-service.js'; import {pluginGroups} from "@certd/pipeline"; +import { ApiTags } from '@midwayjs/swagger'; /** * 插件 */ @Provide() @Controller('/api/pi/plugin') +@ApiTags(['pipeline-plugin']) export class PluginController extends BaseController { @Inject() service: PluginService; diff --git a/packages/ui/certd-server/src/controller/user/pipeline/sub-domain-controller.ts b/packages/ui/certd-server/src/controller/user/pipeline/sub-domain-controller.ts index b022c894c..1844f0d92 100644 --- a/packages/ui/certd-server/src/controller/user/pipeline/sub-domain-controller.ts +++ b/packages/ui/certd-server/src/controller/user/pipeline/sub-domain-controller.ts @@ -3,12 +3,14 @@ import { DomainParser } from '@certd/plugin-cert'; import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/core'; import { SubDomainService } from "../../../modules/pipeline/service/sub-domain-service.js"; import { TaskServiceBuilder } from '../../../modules/pipeline/service/getter/task-service-getter.js'; +import { ApiTags } from '@midwayjs/swagger'; /** * 子域名托管 */ @Provide() @Controller('/api/pi/subDomain') +@ApiTags(['pipeline-subdomain']) export class SubDomainController extends CrudController { @Inject() service: SubDomainService; diff --git a/packages/ui/certd-server/src/controller/user/pipeline/template-controller.ts b/packages/ui/certd-server/src/controller/user/pipeline/template-controller.ts index 1febcae42..e70f69641 100644 --- a/packages/ui/certd-server/src/controller/user/pipeline/template-controller.ts +++ b/packages/ui/certd-server/src/controller/user/pipeline/template-controller.ts @@ -2,12 +2,14 @@ import {ALL, Body, Controller, Inject, Post, Provide, Query} from '@midwayjs/cor import {Constants, CrudController} from '@certd/lib-server'; import { TemplateService } from '../../../modules/pipeline/service/template-service.js'; import { checkPlus } from '@certd/plus-core'; +import { ApiTags } from '@midwayjs/swagger'; /** * 流水线模版 */ @Provide() @Controller('/api/pi/template') +@ApiTags(['pipeline-template']) export class TemplateController extends CrudController { @Inject() service: TemplateService; diff --git a/packages/ui/certd-server/src/middleware/authority.ts b/packages/ui/certd-server/src/middleware/authority.ts index e5a8e56cb..205ec1c31 100644 --- a/packages/ui/certd-server/src/middleware/authority.ts +++ b/packages/ui/certd-server/src/middleware/authority.ts @@ -128,8 +128,11 @@ export class AuthorityMiddleware implements IWebMiddleware { //校验 openKey const openKeyRes = await this.openKeyService.verifyOpenKey(openKey); - const roles = await this.roleService.getRoleIdsByUserId(openKeyRes.userId); - ctx.user = { id: openKeyRes.userId, roles }; + let roles = [1] + if (!openKeyRes.projectId || openKeyRes.projectId <= 0) { + roles = await this.roleService.getRoleIdsByUserId(openKeyRes.userId); + } + ctx.user = { id: openKeyRes.userId, roles ,projectId:openKeyRes.projectId}; ctx.openKey = openKeyRes; return openKeyRes; } diff --git a/packages/ui/certd-server/src/modules/sys/enterprise/service/project-service.ts b/packages/ui/certd-server/src/modules/sys/enterprise/service/project-service.ts index e10b85779..9cfc9dcb7 100644 --- a/packages/ui/certd-server/src/modules/sys/enterprise/service/project-service.ts +++ b/packages/ui/certd-server/src/modules/sys/enterprise/service/project-service.ts @@ -1,4 +1,4 @@ -import { BaseService, SysSettingsService } from '@certd/lib-server'; +import { BaseService, Constants, SysSettingsService } from '@certd/lib-server'; import { Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core'; import { InjectEntityModel } from '@midwayjs/typeorm'; import { LRUCache } from 'lru-cache'; @@ -11,7 +11,7 @@ const projectCache = new LRUCache({ ttl: 1000 * 60 * 10, }); -const ENTERPRISE_USER_ID = -1 //企业模式下 企业userId 固定为-1 +const ENTERPRISE_USER_ID = Constants.enterpriseUserId; //企业模式下 企业userId 固定为-1 @Provide() @Scope(ScopeEnum.Request, { allowDowngrade: true }) @@ -182,6 +182,10 @@ export class ProjectService extends BaseService { throw new Error('项目ID不能为空'); } + if (userId === ENTERPRISE_USER_ID) { + return true + } + const cacheKey = `projectPermission:${projectId}:${userId}` let savedPermission = projectCache.get(cacheKey); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 333435efc..1291c2a69 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1527,6 +1527,9 @@ importers: '@midwayjs/static-file': specifier: 3.20.13 version: 3.20.13 + '@midwayjs/swagger': + specifier: 3.20.11 + version: 3.20.11 '@midwayjs/typeorm': specifier: 3.20.11 version: 3.20.11 @@ -3846,6 +3849,9 @@ packages: resolution: {integrity: sha512-aX67LvpIPYVWpuhuWSATgTBNvaNbvOFk7wbh0BTS0XRaO6vVieNe0mJoBXFkf89w1qExAHgIPHZDPIoEOHEBiQ==} engines: {node: '>=12'} + '@midwayjs/swagger@3.20.11': + resolution: {integrity: sha512-ZF4BJC/ogVYVM4F3ve7Y9cZWDiM+TIAfUFyTNcSw3TgcLB+QnJVHkXSeKXL+PoUHHfE/cztboOk1UEfWxikIuA==} + '@midwayjs/typeorm@3.20.11': resolution: {integrity: sha512-QMCUwLhQStK1RuF+7hbpHoPOGT5DxIt4YalJNC8KtnaBMsIBVf4W+7dHbk9WpsBBx/GCraKfTYIoPA2wJWVj5g==} engines: {node: '>=12'} @@ -16271,6 +16277,8 @@ snapshots: transitivePeerDependencies: - supports-color + '@midwayjs/swagger@3.20.11': {} + '@midwayjs/typeorm@3.20.11': {} '@midwayjs/upload@3.20.13':