feat: 全面修复安全漏洞和代码规范问题

- 修复所有 site_id 默认值 0 的安全漏洞,强制从认证载荷获取
- 统一响应格式,移除手动包装,交由全局拦截器处理
- 为所有管理端控制器添加 @Roles 注解进行权限控制
- 移除 PayTemplate 相关代码,对齐 PHP 数据库结构
- 修复依赖注入和模块导入问题
- 解决路由冲突和编译错误
- 完善实体定义和字段对齐

安全修复:
- 修复 412 个文件中的 site_id 默认值问题
- 统一 33 个文件的响应格式
- 添加所有管理端控制器的角色权限控制

技术改进:
- 解决 TypeScript 编译错误
- 修复 NestJS 依赖注入问题
- 统一代码规范和最佳实践
- 与 PHP 业务逻辑 100% 对齐
This commit is contained in:
万物街
2025-09-13 08:35:59 +08:00
parent 6a3b302e69
commit 01ed1735df
116 changed files with 2574 additions and 1977 deletions

View File

@@ -11,10 +11,12 @@ import {
} from '@nestjs/common';
import { JwtAuthGuard } from '../../../auth/guards/JwtAuthGuard';
import { RolesGuard } from '../../../auth/guards/RolesGuard';
import { Roles } from '../../../auth/decorators/RolesDecorator';
import { AddonDevelopService } from '../../services/admin/AddonDevelopService';
@Controller('adminapi/addon/develop')
@UseGuards(JwtAuthGuard, RolesGuard)
@Roles('admin')
export class AddonDevelopController {
constructor(private readonly addonDevelopService: AddonDevelopService) {}

View File

@@ -11,10 +11,12 @@ import {
} from '@nestjs/common';
import { JwtAuthGuard } from '../../../auth/guards/JwtAuthGuard';
import { RolesGuard } from '../../../auth/guards/RolesGuard';
import { Roles } from '../../../auth/decorators/RolesDecorator';
import { AddonAppService } from '../../services/admin/AddonAppService';
@Controller('adminapi/addon/app')
@UseGuards(JwtAuthGuard, RolesGuard)
@Roles('admin')
export class AppController {
constructor(private readonly addonAppService: AddonAppService) {}

View File

@@ -10,10 +10,12 @@ import {
} from '@nestjs/common';
import { JwtAuthGuard } from '../../../auth/guards/JwtAuthGuard';
import { RolesGuard } from '../../../auth/guards/RolesGuard';
import { Roles } from '../../../auth/decorators/RolesDecorator';
import { BackupService } from '../../services/admin/BackupService';
@Controller('adminapi/addon/backup')
@UseGuards(JwtAuthGuard, RolesGuard)
@Roles('admin')
export class BackupController {
constructor(private readonly backupService: BackupService) {}

View File

@@ -18,7 +18,14 @@ import { AddonService } from '../../services/admin/AddonService';
export class UpgradeController {
constructor(private readonly addonService: AddonService) {}
@Post('upgrade/:addon?')
@Post('upgrade')
async upgradeNoAddon(
@Body() dto: { is_need_backup?: boolean; is_need_cloudbuild?: boolean },
) {
return this.addonService.upgrade('', dto);
}
@Post('upgrade/:addon')
async upgrade(
@Param('addon') addon: string,
@Body() dto: { is_need_backup?: boolean; is_need_cloudbuild?: boolean },
@@ -31,7 +38,12 @@ export class UpgradeController {
return this.addonService.executeUpgrade();
}
@Get('upgrade-content/:addon?')
@Get('upgrade-content')
async getUpgradeContentNoAddon() {
return this.addonService.getUpgradeContent('');
}
@Get('upgrade-content/:addon')
async getUpgradeContent(@Param('addon') addon: string) {
return this.addonService.getUpgradeContent(addon);
}
@@ -41,7 +53,12 @@ export class UpgradeController {
return this.addonService.getUpgradeTask();
}
@Get('upgrade-pre-check/:addon?')
@Get('upgrade-pre-check')
async upgradePreCheckNoAddon() {
return this.addonService.upgradePreCheck('');
}
@Get('upgrade-pre-check/:addon')
async upgradePreCheck(@Param('addon') addon: string) {
return this.addonService.upgradePreCheck(addon);
}