import { Controller, Post, UseGuards, Body, HttpCode, HttpStatus, } from '@nestjs/common'; import { getCurrentUser, getCurrentUserId, Public } from '../common/decorators'; import { RtGuard } from '../common/guards'; import { AuthService } from './auth.service'; import { AuthDto } from './dto/auth.dto'; import { UserDto } from './dto/user.dto'; import { Tokens } from './types'; @Controller('auth') export class AuthController { constructor(private readonly authService: AuthService) {} @Public() @Post('register') @HttpCode(HttpStatus.CREATED) register(@Body() dto: UserDto): Promise<Tokens> { return this.authService.register(dto); } @Public() @Post('login') @HttpCode(HttpStatus.OK) login(@Body() dto: AuthDto): Promise<Tokens> { return this.authService.login(dto); } @Public() @Post('logout') @HttpCode(HttpStatus.OK) logout(@Body() body) { return this.authService.logout(body.userId); } @Public() @UseGuards(RtGuard) @Post('refresh') @HttpCode(HttpStatus.OK) refreshTokens( @getCurrentUserId() userId: number, @getCurrentUser('refreshToken') rt: string, ) { return this.authService.refreshTokens(userId, rt); } }