chore: swagger support

This commit is contained in:
xiaojunnuo
2026-03-15 14:01:34 +08:00
parent 8a3841f638
commit 684964da4f
40 changed files with 110 additions and 22 deletions
@@ -116,7 +116,7 @@ export abstract class BaseController {
await authService.checkProjectId(service, id, projectId); await authService.checkProjectId(service, id, projectId);
}else{ }else{
if(userId === 0){ if(userId === Constants.systemUserId){
//系统级别,不检查权限 //系统级别,不检查权限
}else{ }else{
if(allowAdmin){ if(allowAdmin){
@@ -4,6 +4,7 @@ import { Inject } from '@midwayjs/core';
import { TypeORMDataSourceManager } from '@midwayjs/typeorm'; import { TypeORMDataSourceManager } from '@midwayjs/typeorm';
import { EntityManager } from 'typeorm/entity-manager/EntityManager.js'; import { EntityManager } from 'typeorm/entity-manager/EntityManager.js';
import { FindManyOptions } from 'typeorm'; import { FindManyOptions } from 'typeorm';
import { Constants } from './constants.js';
export type PageReq<T = any> = { export type PageReq<T = any> = {
page?: { offset: number; limit: number }; page?: { offset: number; limit: number };
@@ -258,7 +259,7 @@ export abstract class BaseService<T> {
export function checkUserProjectParam(userId: number, projectId: number) { export function checkUserProjectParam(userId: number, projectId: number) {
if (projectId != null ){ if (projectId != null ){
if( userId !==-1) { if( userId !== Constants.enterpriseUserId) {
throw new ValidateException('userId projectId 错误'); throw new ValidateException('userId projectId 错误');
} }
return true return true
@@ -120,4 +120,6 @@ export const Constants = {
message: '用户邮箱还未配置', message: '用户邮箱还未配置',
}, },
}, },
systemUserId: 0, // 系统级别userid固定为0
enterpriseUserId: -1 // 企业模式用户id固定为-1
}; };
+1
View File
@@ -78,6 +78,7 @@
"@midwayjs/koa": "3.20.13", "@midwayjs/koa": "3.20.13",
"@midwayjs/logger": "3.4.2", "@midwayjs/logger": "3.4.2",
"@midwayjs/static-file": "3.20.13", "@midwayjs/static-file": "3.20.13",
"@midwayjs/swagger": "3.20.11",
"@midwayjs/typeorm": "3.20.11", "@midwayjs/typeorm": "3.20.11",
"@midwayjs/upload": "3.20.13", "@midwayjs/upload": "3.20.13",
"@midwayjs/validate": "3.20.13", "@midwayjs/validate": "3.20.13",
@@ -131,6 +131,12 @@ const development = {
contactText: '', contactText: '',
contactLink: '', contactLink: '',
}, },
swagger: {
isGenerateTagForController: false,
routerFilter: (url: string) => {
return url.startsWith('/api/sys');
}
}
} as MidwayConfig; } as MidwayConfig;
loadDotEnv(); loadDotEnv();
@@ -20,7 +20,7 @@ import * as commercial from '@certd/commercial-core';
import * as upload from '@midwayjs/upload'; import * as upload from '@midwayjs/upload';
import { setLogger } from '@certd/acme-client'; import { setLogger } from '@certd/acme-client';
import {HiddenMiddleware} from "./middleware/hidden.js"; import {HiddenMiddleware} from "./middleware/hidden.js";
import * as swagger from '@midwayjs/swagger';
//@ts-ignore //@ts-ignore
// process.env.UV_THREADPOOL_SIZE = 2 // process.env.UV_THREADPOOL_SIZE = 2
process.on('uncaughtException', error => { process.on('uncaughtException', error => {
@@ -62,6 +62,7 @@ process.on('uncaughtException', error => {
upload, upload,
libServer, libServer,
commercial, commercial,
swagger,
{ {
component: info, component: info,
enabledEnvironment: ['local'], enabledEnvironment: ['local'],
@@ -5,6 +5,7 @@ import { OpenKey } from "../../../modules/open/service/open-key-service.js";
import { BaseOpenController } from "../base-open-controller.js"; import { BaseOpenController } from "../base-open-controller.js";
import { CertInfoFacade } from "../../../modules/monitor/facade/cert-info-facade.js"; import { CertInfoFacade } from "../../../modules/monitor/facade/cert-info-facade.js";
import { merge } from "lodash-es"; import { merge } from "lodash-es";
import { ApiTags } from "@midwayjs/swagger";
export type CertGetReq = { export type CertGetReq = {
domains?: string; domains?: string;
@@ -17,6 +18,7 @@ export type CertGetReq = {
*/ */
@Provide() @Provide()
@Controller('/api/v1/cert') @Controller('/api/v1/cert')
@ApiTags(['openapi'])
export class OpenCertController extends BaseOpenController { export class OpenCertController extends BaseOpenController {
@Inject() @Inject()
certInfoFacade: CertInfoFacade; certInfoFacade: CertInfoFacade;
@@ -12,12 +12,14 @@ import { AuthService } from "../../../modules/sys/authority/service/auth-service
import { checkPlus } from "@certd/plus-core"; import { checkPlus } from "@certd/plus-core";
import { http, logger, utils } from "@certd/basic"; import { http, logger, utils } from "@certd/basic";
import { TaskServiceBuilder } from "../../../modules/pipeline/service/getter/task-service-getter.js"; import { TaskServiceBuilder } from "../../../modules/pipeline/service/getter/task-service-getter.js";
import { ApiTags } from "@midwayjs/swagger";
/** /**
* Addon * Addon
*/ */
@Provide() @Provide()
@Controller("/api/addon") @Controller("/api/addon")
@ApiTags(['addon'])
export class AddonController extends CrudController<AddonService> { export class AddonController extends CrudController<AddonService> {
@Inject() @Inject()
service: AddonService; service: AddonService;
@@ -2,12 +2,14 @@ import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/c
import { Constants, CrudController } from '@certd/lib-server'; import { Constants, CrudController } from '@certd/lib-server';
import { AuthService } from '../../../modules/sys/authority/service/auth-service.js'; import { AuthService } from '../../../modules/sys/authority/service/auth-service.js';
import { GroupService } from '../../../modules/basic/service/group-service.js'; import { GroupService } from '../../../modules/basic/service/group-service.js';
import { ApiTags } from '@midwayjs/swagger';
/** /**
* 通知 * 通知
*/ */
@Provide() @Provide()
@Controller('/api/basic/group') @Controller('/api/basic/group')
@ApiTags(['basic-group'])
export class GroupController extends CrudController<GroupService> { export class GroupController extends CrudController<GroupService> {
@Inject() @Inject()
service: GroupService; service: GroupService;
@@ -5,12 +5,14 @@ import { AuthService } from '../../../modules/sys/authority/service/auth-service
import { UserService } from '../../../modules/sys/authority/service/user-service.js'; import { UserService } from '../../../modules/sys/authority/service/user-service.js';
import { BasicController } from '../../basic/code-controller.js'; import { BasicController } from '../../basic/code-controller.js';
import { RoleService } from '../../../modules/sys/authority/service/role-service.js'; import { RoleService } from '../../../modules/sys/authority/service/role-service.js';
import { ApiTags } from '@midwayjs/swagger';
/** /**
* 通知 * 通知
*/ */
@Provide() @Provide()
@Controller('/api/basic/user') @Controller('/api/basic/user')
@ApiTags(['basic-user'])
export class BasicUserController extends BasicController { export class BasicUserController extends BasicController {
@Inject() @Inject()
service: UserService; service: UserService;
@@ -2,12 +2,14 @@ import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/c
import { Constants, CrudController } from '@certd/lib-server'; import { Constants, CrudController } from '@certd/lib-server';
import { DomainService } from "../../../modules/cert/service/domain-service.js"; import { DomainService } from "../../../modules/cert/service/domain-service.js";
import { checkPlus } from '@certd/plus-core'; import { checkPlus } from '@certd/plus-core';
import { ApiTags } from '@midwayjs/swagger';
/** /**
* 授权 * 授权
*/ */
@Provide() @Provide()
@Controller('/api/cert/domain') @Controller('/api/cert/domain')
@ApiTags(['cert'])
export class DomainController extends CrudController<DomainService> { export class DomainController extends CrudController<DomainService> {
@Inject() @Inject()
service: DomainService; service: DomainService;
@@ -2,12 +2,14 @@ import { ALL, Body, Controller, Inject, Post, Provide } from '@midwayjs/core';
import { BaseController, Constants } from '@certd/lib-server'; import { BaseController, Constants } from '@certd/lib-server';
import { CnameRecordService } from '../../../modules/cname/service/cname-record-service.js'; import { CnameRecordService } from '../../../modules/cname/service/cname-record-service.js';
import { CnameProviderService } from '../../../modules/cname/service/cname-provider-service.js'; import { CnameProviderService } from '../../../modules/cname/service/cname-provider-service.js';
import { ApiTags } from '@midwayjs/swagger';
/** /**
* 授权 * 授权
*/ */
@Provide() @Provide()
@Controller('/api/cname/provider') @Controller('/api/cname/provider')
@ApiTags(['pipeline-cname'])
export class CnameProviderController extends BaseController { export class CnameProviderController extends BaseController {
@Inject() @Inject()
service: CnameRecordService; service: CnameRecordService;
@@ -1,12 +1,14 @@
import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/core'; import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/core';
import { Constants, CrudController } from '@certd/lib-server'; import { Constants, CrudController } from '@certd/lib-server';
import { CnameRecordService } from '../../../modules/cname/service/cname-record-service.js'; import { CnameRecordService } from '../../../modules/cname/service/cname-record-service.js';
import { ApiTags } from '@midwayjs/swagger';
/** /**
* 授权 * 授权
*/ */
@Provide() @Provide()
@Controller('/api/cname/record') @Controller('/api/cname/record')
@ApiTags(['pipeline-cname'])
export class CnameRecordController extends CrudController<CnameRecordService> { export class CnameRecordController extends CrudController<CnameRecordService> {
@Inject() @Inject()
service: CnameRecordService; service: CnameRecordService;
@@ -5,6 +5,7 @@ import { RoleService } from '../../../modules/sys/authority/service/role-service
import { PipelineService } from '../../../modules/pipeline/service/pipeline-service.js'; import { PipelineService } from '../../../modules/pipeline/service/pipeline-service.js';
import { HistoryService } from '../../../modules/pipeline/service/history-service.js'; import { HistoryService } from '../../../modules/pipeline/service/history-service.js';
import { CertInfoService } from '../../../modules/monitor/index.js'; import { CertInfoService } from '../../../modules/monitor/index.js';
import { ApiTags } from '@midwayjs/swagger';
export type ChartItem = { export type ChartItem = {
name: string; name: string;
@@ -30,6 +31,7 @@ export type UserStatisticCount = {
*/ */
@Provide() @Provide()
@Controller('/api/statistic/') @Controller('/api/statistic/')
@ApiTags(['dashboard'])
export class StatisticController extends BaseController { export class StatisticController extends BaseController {
@Inject() @Inject()
userService: UserService; userService: UserService;
@@ -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 { AuthService } from '../../../modules/sys/authority/service/auth-service.js';
import { ProjectService } from '../../../modules/sys/enterprise/service/project-service.js'; import { ProjectService } from '../../../modules/sys/enterprise/service/project-service.js';
import { ProjectMemberService } from '../../../modules/sys/enterprise/service/project-member-service.js'; import { ProjectMemberService } from '../../../modules/sys/enterprise/service/project-member-service.js';
import { ApiTags } from '@midwayjs/swagger';
/** /**
*/ */
@Provide() @Provide()
@Controller('/api/enterprise/project') @Controller('/api/enterprise/project')
@ApiTags(['enterprise-project'])
export class UserProjectController extends BaseController { export class UserProjectController extends BaseController {
@Inject() @Inject()
service: ProjectService; service: ProjectService;
@@ -4,10 +4,12 @@ import { ProjectMemberEntity } from "../../../modules/sys/enterprise/entity/proj
import { ProjectMemberService } from "../../../modules/sys/enterprise/service/project-member-service.js"; import { ProjectMemberService } from "../../../modules/sys/enterprise/service/project-member-service.js";
import { merge } from "lodash-es"; import { merge } from "lodash-es";
import { ProjectService } from "../../../modules/sys/enterprise/service/project-service.js"; import { ProjectService } from "../../../modules/sys/enterprise/service/project-service.js";
import { ApiTags } from "@midwayjs/swagger";
/** /**
*/ */
@Provide() @Provide()
@Controller("/api/enterprise/projectMember") @Controller("/api/enterprise/projectMember")
@ApiTags(['enterprise-project-member'])
export class ProjectMemberController extends CrudController<ProjectMemberEntity> { export class ProjectMemberController extends CrudController<ProjectMemberEntity> {
@Inject() @Inject()
service: ProjectMemberService; service: ProjectMemberService;
@@ -1,11 +1,13 @@
import { BaseController, Constants } from '@certd/lib-server'; import { BaseController, Constants } from '@certd/lib-server';
import { Controller, Inject, Post, Provide } from '@midwayjs/core'; import { Controller, Inject, Post, Provide } from '@midwayjs/core';
import { TransferService } from '../../../modules/sys/enterprise/service/transfer-service.js'; import { TransferService } from '../../../modules/sys/enterprise/service/transfer-service.js';
import { ApiTags } from '@midwayjs/swagger';
/** /**
*/ */
@Provide() @Provide()
@Controller('/api/enterprise/transfer') @Controller('/api/enterprise/transfer')
@ApiTags(['enterprise-project'])
export class TransferController extends BaseController { export class TransferController extends BaseController {
@Inject() @Inject()
service: TransferService; service: TransferService;
@@ -2,11 +2,13 @@ import { Body, Controller, Inject, Post, Provide } from '@midwayjs/core';
import { BaseController } from '@certd/lib-server'; import { BaseController } from '@certd/lib-server';
import { Constants } from '@certd/lib-server'; import { Constants } from '@certd/lib-server';
import { EmailService } from '../../../modules/basic/service/email-service.js'; import { EmailService } from '../../../modules/basic/service/email-service.js';
import { ApiTags } from '@midwayjs/swagger';
/** /**
*/ */
@Provide() @Provide()
@Controller('/api/mine/email') @Controller('/api/mine/email')
@ApiTags(['mine'])
export class EmailController extends BaseController { export class EmailController extends BaseController {
@Inject() @Inject()
emailService: EmailService; emailService: EmailService;
@@ -3,11 +3,13 @@ import { ALL, Body, Controller, Inject, Post, Provide } from '@midwayjs/core';
import { PasskeyService } from '../../../modules/login/service/passkey-service.js'; import { PasskeyService } from '../../../modules/login/service/passkey-service.js';
import { RoleService } from '../../../modules/sys/authority/service/role-service.js'; import { RoleService } from '../../../modules/sys/authority/service/role-service.js';
import { UserService } from '../../../modules/sys/authority/service/user-service.js'; import { UserService } from '../../../modules/sys/authority/service/user-service.js';
import { ApiTags } from '@midwayjs/swagger';
/** /**
*/ */
@Provide() @Provide()
@Controller('/api/mine') @Controller('/api/mine')
@ApiTags(['mine'])
export class MineController extends BaseController { export class MineController extends BaseController {
@Inject() @Inject()
userService: UserService; userService: UserService;
@@ -2,9 +2,11 @@ import { ALL, Body, Controller, Inject, Post, Provide, RequestIP } from "@midway
import { PasskeyService } from "../../../modules/login/service/passkey-service.js"; import { PasskeyService } from "../../../modules/login/service/passkey-service.js";
import { BaseController, Constants } from "@certd/lib-server"; import { BaseController, Constants } from "@certd/lib-server";
import { UserService } from "../../../modules/sys/authority/service/user-service.js"; import { UserService } from "../../../modules/sys/authority/service/user-service.js";
import { ApiTags } from "@midwayjs/swagger";
@Provide() @Provide()
@Controller('/api/mine/passkey') @Controller('/api/mine/passkey')
@ApiTags(['mine'])
export class MinePasskeyController extends BaseController { export class MinePasskeyController extends BaseController {
@Inject() @Inject()
passkeyService: PasskeyService; passkeyService: PasskeyService;
@@ -5,11 +5,13 @@ import { UserTwoFactorSetting } from "../../../modules/mine/service/models.js";
import { merge } from "lodash-es"; import { merge } from "lodash-es";
import { TwoFactorService } from "../../../modules/mine/service/two-factor-service.js"; import { TwoFactorService } from "../../../modules/mine/service/two-factor-service.js";
import {isPlus} from "@certd/plus-core"; import {isPlus} from "@certd/plus-core";
import { ApiTags } from "@midwayjs/swagger";
/** /**
*/ */
@Provide() @Provide()
@Controller("/api/user/settings/twoFactor") @Controller("/api/user/settings/twoFactor")
@ApiTags(['mine'])
export class UserTwoFactorSettingController extends BaseController { export class UserTwoFactorSettingController extends BaseController {
@Inject() @Inject()
service: UserSettingsService; service: UserSettingsService;
@@ -5,11 +5,13 @@ import { UserSettingsEntity } from "../../../modules/mine/entity/user-settings.j
import { UserGrantSetting } from "../../../modules/mine/service/models.js"; import { UserGrantSetting } from "../../../modules/mine/service/models.js";
import { isPlus } from "@certd/plus-core"; import { isPlus } from "@certd/plus-core";
import { merge } from "lodash-es"; import { merge } from "lodash-es";
import { ApiTags } from "@midwayjs/swagger";
/** /**
*/ */
@Provide() @Provide()
@Controller('/api/user/settings') @Controller('/api/user/settings')
@ApiTags(['mine'])
export class UserSettingsController extends CrudController<UserSettingsService> { export class UserSettingsController extends CrudController<UserSettingsService> {
@Inject() @Inject()
service: UserSettingsService; service: UserSettingsService;
@@ -7,11 +7,13 @@ import { SelectQueryBuilder } from "typeorm";
import { logger } from "@certd/basic"; import { logger } from "@certd/basic";
import fs from "fs"; import fs from "fs";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { ApiTags } from "@midwayjs/swagger";
/** /**
*/ */
@Provide() @Provide()
@Controller('/api/monitor/cert') @Controller('/api/monitor/cert')
@ApiTags(['cert'])
export class CertInfoController extends CrudController<CertInfoService> { export class CertInfoController extends CrudController<CertInfoService> {
@Inject() @Inject()
service: CertInfoService; service: CertInfoService;
@@ -6,11 +6,13 @@ import { UserSiteMonitorSetting } from "../../../modules/mine/service/models.js"
import { merge } from "lodash-es"; import { merge } from "lodash-es";
import {SiteIpService} from "../../../modules/monitor/service/site-ip-service.js"; import {SiteIpService} from "../../../modules/monitor/service/site-ip-service.js";
import { utils } from "@certd/basic"; import { utils } from "@certd/basic";
import { ApiTags } from "@midwayjs/swagger";
/** /**
*/ */
@Provide() @Provide()
@Controller('/api/monitor/site') @Controller('/api/monitor/site')
@ApiTags(['monitor'])
export class SiteInfoController extends CrudController<SiteInfoService> { export class SiteInfoController extends CrudController<SiteInfoService> {
@Inject() @Inject()
service: SiteInfoService; service: SiteInfoService;
@@ -3,11 +3,13 @@ import { Constants, CrudController } from "@certd/lib-server";
import { AuthService } from "../../../modules/sys/authority/service/auth-service.js"; import { AuthService } from "../../../modules/sys/authority/service/auth-service.js";
import { SiteIpService } from "../../../modules/monitor/service/site-ip-service.js"; import { SiteIpService } from "../../../modules/monitor/service/site-ip-service.js";
import { SiteInfoService } from "../../../modules/monitor/index.js"; import { SiteInfoService } from "../../../modules/monitor/index.js";
import { ApiTags } from "@midwayjs/swagger";
/** /**
*/ */
@Provide() @Provide()
@Controller('/api/monitor/site/ip') @Controller('/api/monitor/site/ip')
@ApiTags(['monitor'])
export class SiteInfoController extends CrudController<SiteIpService> { export class SiteInfoController extends CrudController<SiteIpService> {
@Inject() @Inject()
service: SiteIpService; service: SiteIpService;
@@ -2,11 +2,13 @@ import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/c
import { Constants, CrudController } from '@certd/lib-server'; import { Constants, CrudController } from '@certd/lib-server';
import { AuthService } from '../../../modules/sys/authority/service/auth-service.js'; import { AuthService } from '../../../modules/sys/authority/service/auth-service.js';
import { OpenKeyService } from '../../../modules/open/service/open-key-service.js'; import { OpenKeyService } from '../../../modules/open/service/open-key-service.js';
import { ApiTags } from '@midwayjs/swagger';
/** /**
*/ */
@Provide() @Provide()
@Controller('/api/open/key') @Controller('/api/open/key')
@ApiTags(['open'])
export class OpenKeyController extends CrudController<OpenKeyService> { export class OpenKeyController extends CrudController<OpenKeyService> {
@Inject() @Inject()
service: OpenKeyService; service: OpenKeyService;
@@ -3,11 +3,13 @@ import { Constants, CrudController } from '@certd/lib-server';
import { AccessService } from '@certd/lib-server'; import { AccessService } from '@certd/lib-server';
import { AuthService } from '../../../modules/sys/authority/service/auth-service.js'; import { AuthService } from '../../../modules/sys/authority/service/auth-service.js';
import { AccessDefine } from '@certd/pipeline'; import { AccessDefine } from '@certd/pipeline';
import { ApiTags } from '@midwayjs/swagger';
/** /**
* 授权 * 授权
*/ */
@Provide() @Provide()
@ApiTags(['pipeline-access'])
@Controller('/api/pi/access') @Controller('/api/pi/access')
export class AccessController extends CrudController<AccessService> { export class AccessController extends CrudController<AccessService> {
@Inject() @Inject()
@@ -5,9 +5,11 @@ import { StorageService } from '../../../modules/pipeline/service/storage-servic
import { CertReader } from "@certd/plugin-cert"; import { CertReader } from "@certd/plugin-cert";
import { UserSettingsService } from '../../../modules/mine/service/user-settings-service.js'; import { UserSettingsService } from '../../../modules/mine/service/user-settings-service.js';
import { UserGrantSetting } from '../../../modules/mine/service/models.js'; import { UserGrantSetting } from '../../../modules/mine/service/models.js';
import { ApiTags } from '@midwayjs/swagger';
@Provide() @Provide()
@Controller('/api/pi/cert') @Controller('/api/pi/cert')
@ApiTags(['pipeline-cert'])
export class CertController extends BaseController { export class CertController extends BaseController {
@Inject() @Inject()
pipelineService: PipelineService; pipelineService: PipelineService;
@@ -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 { DnsProviderService } from '../../../modules/pipeline/service/dns-provider-service.js';
import { BaseController } from '@certd/lib-server'; import { BaseController } from '@certd/lib-server';
import { Constants } from '@certd/lib-server'; import { Constants } from '@certd/lib-server';
import { ApiTags } from '@midwayjs/swagger';
/** /**
* 插件 * 插件
*/ */
@Provide() @Provide()
@Controller('/api/pi/dnsProvider') @Controller('/api/pi/dnsProvider')
@ApiTags(['pipeline-dns-provider'])
export class DnsProviderController extends BaseController { export class DnsProviderController extends BaseController {
@Inject() @Inject()
service: DnsProviderService; service: DnsProviderService;
@@ -16,9 +16,11 @@ import {http, HttpRequestConfig, logger, mergeUtils, utils} from '@certd/basic';
import {NotificationService} from '../../../modules/pipeline/service/notification-service.js'; import {NotificationService} from '../../../modules/pipeline/service/notification-service.js';
import {TaskServiceBuilder} from "../../../modules/pipeline/service/getter/task-service-getter.js"; import {TaskServiceBuilder} from "../../../modules/pipeline/service/getter/task-service-getter.js";
import { cloneDeep } from 'lodash-es'; import { cloneDeep } from 'lodash-es';
import { ApiTags } from '@midwayjs/swagger';
@Provide() @Provide()
@Controller('/api/pi/handle') @Controller('/api/pi/handle')
@ApiTags(['pipeline-handle'])
export class HandleController extends BaseController { export class HandleController extends BaseController {
@Inject() @Inject()
accessService: AccessService; accessService: AccessService;
@@ -12,12 +12,14 @@ import { HistoryLogService } from "../../../modules/pipeline/service/history-log
import { HistoryService } from "../../../modules/pipeline/service/history-service.js"; import { HistoryService } from "../../../modules/pipeline/service/history-service.js";
import { PipelineService } from "../../../modules/pipeline/service/pipeline-service.js"; import { PipelineService } from "../../../modules/pipeline/service/pipeline-service.js";
import { AuthService } from "../../../modules/sys/authority/service/auth-service.js"; import { AuthService } from "../../../modules/sys/authority/service/auth-service.js";
import { ApiTags } from "@midwayjs/swagger";
/** /**
* 证书 * 证书
*/ */
@Provide() @Provide()
@Controller('/api/pi/history') @Controller('/api/pi/history')
@ApiTags(['pipeline-history'])
export class HistoryController extends CrudController<HistoryService> { export class HistoryController extends CrudController<HistoryService> {
@Inject() @Inject()
service: HistoryService; service: HistoryService;
@@ -4,12 +4,14 @@ import { NotificationService } from '../../../modules/pipeline/service/notificat
import { AuthService } from '../../../modules/sys/authority/service/auth-service.js'; import { AuthService } from '../../../modules/sys/authority/service/auth-service.js';
import { NotificationDefine } from '@certd/pipeline'; import { NotificationDefine } from '@certd/pipeline';
import { checkPlus } from '@certd/plus-core'; import { checkPlus } from '@certd/plus-core';
import { ApiTags } from '@midwayjs/swagger';
/** /**
* 通知 * 通知
*/ */
@Provide() @Provide()
@Controller('/api/pi/notification') @Controller('/api/pi/notification')
@ApiTags(['pipeline-notification'])
export class NotificationController extends CrudController<NotificationService> { export class NotificationController extends CrudController<NotificationService> {
@Inject() @Inject()
service: NotificationService; service: NotificationService;
@@ -6,11 +6,13 @@ import { PipelineEntity } from '../../../modules/pipeline/entity/pipeline.js';
import { HistoryService } from '../../../modules/pipeline/service/history-service.js'; import { HistoryService } from '../../../modules/pipeline/service/history-service.js';
import { PipelineService } from '../../../modules/pipeline/service/pipeline-service.js'; import { PipelineService } from '../../../modules/pipeline/service/pipeline-service.js';
import { AuthService } from '../../../modules/sys/authority/service/auth-service.js'; import { AuthService } from '../../../modules/sys/authority/service/auth-service.js';
import { ApiTags } from '@midwayjs/swagger';
/** /**
* 证书 * 证书
*/ */
@Provide() @Provide()
@ApiTags(['pipeline'])
@Controller('/api/pi/pipeline') @Controller('/api/pi/pipeline')
export class PipelineController extends CrudController<PipelineService> { export class PipelineController extends CrudController<PipelineService> {
@Inject() @Inject()
@@ -85,23 +87,23 @@ export class PipelineController extends CrudController<PipelineService> {
} }
@Post('/add', { summary: Constants.per.authOnly }) // @Post('/add', { summary: Constants.per.authOnly })
async add(@Body(ALL) bean: PipelineEntity) { // async add(@Body(ALL) bean: PipelineEntity) {
const { projectId, userId } = await this.getProjectUserIdWrite() // const { projectId, userId } = await this.getProjectUserIdWrite()
bean.userId = userId // bean.userId = userId
bean.projectId = projectId // bean.projectId = projectId
return super.add(bean); // return super.add(bean);
} // }
@Post('/update', { summary: Constants.per.authOnly }) // @Post('/update', { summary: Constants.per.authOnly })
async update(@Body(ALL) bean) { // async update(@Body(ALL) bean) {
await this.checkOwner(this.getService(), bean.id,"write",true); // await this.checkOwner(this.getService(), bean.id,"write",true);
delete bean.userId; // delete bean.userId;
delete bean.projectId; // delete bean.projectId;
return super.update(bean); // 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) { async save(@Body(ALL) bean: { addToMonitorEnabled: boolean, addToMonitorDomains: string } & PipelineEntity) {
const { userId ,projectId} = await this.getProjectUserIdWrite() const { userId ,projectId} = await this.getProjectUserIdWrite()
if (bean.id > 0) { if (bean.id > 0) {
@@ -2,12 +2,14 @@ import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/c
import { Constants, CrudController } from '@certd/lib-server'; import { Constants, CrudController } from '@certd/lib-server';
import { AuthService } from '../../../modules/sys/authority/service/auth-service.js'; import { AuthService } from '../../../modules/sys/authority/service/auth-service.js';
import { PipelineGroupService } from '../../../modules/pipeline/service/pipeline-group-service.js'; import { PipelineGroupService } from '../../../modules/pipeline/service/pipeline-group-service.js';
import { ApiTags } from '@midwayjs/swagger';
/** /**
* 通知 * 通知
*/ */
@Provide() @Provide()
@Controller('/api/pi/pipeline/group') @Controller('/api/pi/pipeline/group')
@ApiTags(['pipeline-group'])
export class PipelineGroupController extends CrudController<PipelineGroupService> { export class PipelineGroupController extends CrudController<PipelineGroupService> {
@Inject() @Inject()
service: PipelineGroupService; service: PipelineGroupService;
@@ -3,12 +3,14 @@ import { BaseController, Constants } from '@certd/lib-server';
import { PluginService } from '../../../modules/plugin/service/plugin-service.js'; import { PluginService } from '../../../modules/plugin/service/plugin-service.js';
import { PluginConfigService } from '../../../modules/plugin/service/plugin-config-service.js'; import { PluginConfigService } from '../../../modules/plugin/service/plugin-config-service.js';
import {pluginGroups} from "@certd/pipeline"; import {pluginGroups} from "@certd/pipeline";
import { ApiTags } from '@midwayjs/swagger';
/** /**
* 插件 * 插件
*/ */
@Provide() @Provide()
@Controller('/api/pi/plugin') @Controller('/api/pi/plugin')
@ApiTags(['pipeline-plugin'])
export class PluginController extends BaseController { export class PluginController extends BaseController {
@Inject() @Inject()
service: PluginService; service: PluginService;
@@ -3,12 +3,14 @@ import { DomainParser } from '@certd/plugin-cert';
import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/core'; import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/core';
import { SubDomainService } from "../../../modules/pipeline/service/sub-domain-service.js"; import { SubDomainService } from "../../../modules/pipeline/service/sub-domain-service.js";
import { TaskServiceBuilder } from '../../../modules/pipeline/service/getter/task-service-getter.js'; import { TaskServiceBuilder } from '../../../modules/pipeline/service/getter/task-service-getter.js';
import { ApiTags } from '@midwayjs/swagger';
/** /**
* 子域名托管 * 子域名托管
*/ */
@Provide() @Provide()
@Controller('/api/pi/subDomain') @Controller('/api/pi/subDomain')
@ApiTags(['pipeline-subdomain'])
export class SubDomainController extends CrudController<SubDomainService> { export class SubDomainController extends CrudController<SubDomainService> {
@Inject() @Inject()
service: SubDomainService; service: SubDomainService;
@@ -2,12 +2,14 @@ import {ALL, Body, Controller, Inject, Post, Provide, Query} from '@midwayjs/cor
import {Constants, CrudController} from '@certd/lib-server'; import {Constants, CrudController} from '@certd/lib-server';
import { TemplateService } from '../../../modules/pipeline/service/template-service.js'; import { TemplateService } from '../../../modules/pipeline/service/template-service.js';
import { checkPlus } from '@certd/plus-core'; import { checkPlus } from '@certd/plus-core';
import { ApiTags } from '@midwayjs/swagger';
/** /**
* 流水线模版 * 流水线模版
*/ */
@Provide() @Provide()
@Controller('/api/pi/template') @Controller('/api/pi/template')
@ApiTags(['pipeline-template'])
export class TemplateController extends CrudController<TemplateService> { export class TemplateController extends CrudController<TemplateService> {
@Inject() @Inject()
service: TemplateService; service: TemplateService;
@@ -128,8 +128,11 @@ export class AuthorityMiddleware implements IWebMiddleware {
//校验 openKey //校验 openKey
const openKeyRes = await this.openKeyService.verifyOpenKey(openKey); const openKeyRes = await this.openKeyService.verifyOpenKey(openKey);
const roles = await this.roleService.getRoleIdsByUserId(openKeyRes.userId); let roles = [1]
ctx.user = { id: openKeyRes.userId, roles }; 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; ctx.openKey = openKeyRes;
return openKeyRes; return openKeyRes;
} }
@@ -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 { Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core';
import { InjectEntityModel } from '@midwayjs/typeorm'; import { InjectEntityModel } from '@midwayjs/typeorm';
import { LRUCache } from 'lru-cache'; import { LRUCache } from 'lru-cache';
@@ -11,7 +11,7 @@ const projectCache = new LRUCache<string, any>({
ttl: 1000 * 60 * 10, ttl: 1000 * 60 * 10,
}); });
const ENTERPRISE_USER_ID = -1 //企业模式下 企业userId 固定为-1 const ENTERPRISE_USER_ID = Constants.enterpriseUserId; //企业模式下 企业userId 固定为-1
@Provide() @Provide()
@Scope(ScopeEnum.Request, { allowDowngrade: true }) @Scope(ScopeEnum.Request, { allowDowngrade: true })
@@ -182,6 +182,10 @@ export class ProjectService extends BaseService<ProjectEntity> {
throw new Error('项目ID不能为空'); throw new Error('项目ID不能为空');
} }
if (userId === ENTERPRISE_USER_ID) {
return true
}
const cacheKey = `projectPermission:${projectId}:${userId}` const cacheKey = `projectPermission:${projectId}:${userId}`
let savedPermission = projectCache.get(cacheKey); let savedPermission = projectCache.get(cacheKey);
+8
View File
@@ -1527,6 +1527,9 @@ importers:
'@midwayjs/static-file': '@midwayjs/static-file':
specifier: 3.20.13 specifier: 3.20.13
version: 3.20.13 version: 3.20.13
'@midwayjs/swagger':
specifier: 3.20.11
version: 3.20.11
'@midwayjs/typeorm': '@midwayjs/typeorm':
specifier: 3.20.11 specifier: 3.20.11
version: 3.20.11 version: 3.20.11
@@ -3846,6 +3849,9 @@ packages:
resolution: {integrity: sha512-aX67LvpIPYVWpuhuWSATgTBNvaNbvOFk7wbh0BTS0XRaO6vVieNe0mJoBXFkf89w1qExAHgIPHZDPIoEOHEBiQ==} resolution: {integrity: sha512-aX67LvpIPYVWpuhuWSATgTBNvaNbvOFk7wbh0BTS0XRaO6vVieNe0mJoBXFkf89w1qExAHgIPHZDPIoEOHEBiQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
'@midwayjs/swagger@3.20.11':
resolution: {integrity: sha512-ZF4BJC/ogVYVM4F3ve7Y9cZWDiM+TIAfUFyTNcSw3TgcLB+QnJVHkXSeKXL+PoUHHfE/cztboOk1UEfWxikIuA==}
'@midwayjs/typeorm@3.20.11': '@midwayjs/typeorm@3.20.11':
resolution: {integrity: sha512-QMCUwLhQStK1RuF+7hbpHoPOGT5DxIt4YalJNC8KtnaBMsIBVf4W+7dHbk9WpsBBx/GCraKfTYIoPA2wJWVj5g==} resolution: {integrity: sha512-QMCUwLhQStK1RuF+7hbpHoPOGT5DxIt4YalJNC8KtnaBMsIBVf4W+7dHbk9WpsBBx/GCraKfTYIoPA2wJWVj5g==}
engines: {node: '>=12'} engines: {node: '>=12'}
@@ -16271,6 +16277,8 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@midwayjs/swagger@3.20.11': {}
'@midwayjs/typeorm@3.20.11': {} '@midwayjs/typeorm@3.20.11': {}
'@midwayjs/upload@3.20.13': '@midwayjs/upload@3.20.13':