✨ feat(src/modules/chat/chat.controller.ts): добавляет ответы API для создания чата и получения сообщений ✨ feat(src/modules/greetings/greetings.controller.ts): добавляет ответы API для получения и создания приветствий ✨ feat(src/modules/likes/likes.controller.ts): добавляет ответы API для создания лайков и получения совпадений ✨ feat(src/modules/reports/reports.controller.ts): добавляет ответы API для создания и получения отчетов ✨ feat(src/modules/feed/feed.controller.ts): добавляет ответ API для получения отфильтрованного фида ✨ feat(src/auth/auth.controller.ts): добавляет ответы API для регистрации, входа и выхода пользователей ✨ feat(src/modules/media/media.controller.ts): добавляет ответы API для загрузки и получения медиа ✨ feat(src/modules/users/users.controller.ts): добавляет ответы API для получения текущего пользователя и управления пользователями ✨ feat(src/modules/tags/tags.controller.ts): добавляет ответы API для получения и создания тегов ✨ feat(src/modules/profiles/profiles.controller.ts): добавляет ответы API для управления профилями пользователей ✨ feat(src/modules/dates/dates.controller.ts): добавляет ответы API для создания и получения встреч
50 lines
1.7 KiB
TypeScript
50 lines
1.7 KiB
TypeScript
import { Controller, Get, Param, Patch, UseGuards } from '@nestjs/common';
|
|
import { ApiBearerAuth, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
|
|
import { CurrentUser } from '../../common/decorators/current-user.decorator';
|
|
import { Roles } from '../../common/decorators/roles.decorator';
|
|
import { JwtAuthGuard } from '../../common/guards/jwt-auth.guard';
|
|
import { RolesGuard } from '../../common/guards/roles.guard';
|
|
import { UsersService } from './users.service';
|
|
import { MeResponseDto, UserResponseDto } from './dto/user-response.dto';
|
|
import { MessageResponseDto } from '../../common/dto/message-response.dto';
|
|
|
|
@ApiTags('users')
|
|
@ApiBearerAuth()
|
|
@UseGuards(JwtAuthGuard)
|
|
@Controller('users')
|
|
export class UsersController {
|
|
constructor(private readonly usersService: UsersService) {}
|
|
|
|
@Get('me')
|
|
@ApiOperation({ summary: 'Get current user with profile list' })
|
|
@ApiResponse({ status: 200, type: MeResponseDto })
|
|
getMe(@CurrentUser('id') userId: string) {
|
|
return this.usersService.getMe(userId);
|
|
}
|
|
|
|
@Get(':id')
|
|
@ApiOperation({ summary: 'Get user by ID' })
|
|
@ApiResponse({ status: 200, type: UserResponseDto })
|
|
findOne(@Param('id') id: string) {
|
|
return this.usersService.findById(id);
|
|
}
|
|
|
|
@Patch(':id/ban')
|
|
@Roles('admin', 'moderator')
|
|
@UseGuards(RolesGuard)
|
|
@ApiOperation({ summary: 'Ban user' })
|
|
@ApiResponse({ status: 200, type: MessageResponseDto })
|
|
ban(@Param('id') id: string) {
|
|
return this.usersService.banUser(id);
|
|
}
|
|
|
|
@Patch(':id/activate')
|
|
@Roles('admin', 'moderator')
|
|
@UseGuards(RolesGuard)
|
|
@ApiOperation({ summary: 'Activate user' })
|
|
@ApiResponse({ status: 200, type: MessageResponseDto })
|
|
activate(@Param('id') id: string) {
|
|
return this.usersService.activateUser(id);
|
|
}
|
|
}
|