/
goncharovchik
/
secure-api-d
Обзор
Документация
Войти
/
goncharovchik
/
secure-api-d
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
src/modules/servers/servers.controller.ts
60 строк
2 KB
Aleksey Goncharov
feat: secure API with 26 OWASP security measures
29 апр 2026, 13:30
29 апр 2026, 13:30
449fe34
Код
Авторство
О чём код?
import { Controller, Get, Post, Patch, Delete, Body, Param, Query } from '@nestjs/common'; import { ApiTags, ApiOperation, ApiBearerAuth, ApiQuery } from '@nestjs/swagger'; import { ServersService } from './servers.service'; import { CreateServerDto } from './dto/create-server.dto'; import { UpdateServerDto } from './dto/update-server.dto'; import { Roles } from '../../common/decorators/roles.decorator'; import { Public } from '../../common/decorators/public.decorator'; import { UserRole } from '../../common/enums'; /** * Контроллер серверов. * SECURE: GET — публичный, CUD — @Roles(ADMIN). */ @ApiTags('Servers') @Controller('api/servers') export class ServersController { constructor(private readonly serversService: ServersService) {} @Post() @Roles(UserRole.ADMIN) @ApiBearerAuth() @ApiOperation({ summary: 'Создать сервер (Admin)' }) create(@Body() dto: CreateServerDto) { return this.serversService.create(dto); } /** Публичный — список серверов */ @Public() @Get() @ApiOperation({ summary: 'Получить все серверы (публичный)' }) @ApiQuery({ name: 'page', required: false }) @ApiQuery({ name: 'limit', required: false }) findAll(@Query('page') page?: number, @Query('limit') limit?: number) { const skip = ((page || 1) - 1) * (limit || 20); return this.serversService.findAll(skip, limit || 20); } @Public() @Get(':id') @ApiOperation({ summary: 'Получить сервер по ID (публичный)' }) findOne(@Param('id') id: string) { return this.serversService.findOne(+id); } @Patch(':id') @Roles(UserRole.ADMIN) @ApiBearerAuth() @ApiOperation({ summary: 'Обновить сервер (Admin)' }) update(@Param('id') id: string, @Body() dto: UpdateServerDto) { return this.serversService.update(+id, dto); } @Delete(':id') @Roles(UserRole.ADMIN) @ApiBearerAuth() @ApiOperation({ summary: 'Удалить сервер (Admin)' }) remove(@Param('id') id: string) { return this.serversService.remove(+id); } }