import { Controller, Post, Body, UseGuards, Request, HttpCode, HttpStatus, } from '@nestjs/common' import { AuthService } from './auth.service' import { LoginDto } from './dto/login.dto' import { BindPhoneDto } from './dto/bind-phone.dto' import { JwtAuthGuard } from './jwt-auth.guard' import { AuthenticatedUser } from './jwt.strategy' import { User } from '@prisma/client' interface AuthenticatedRequest { user: AuthenticatedUser } @Controller('auth') export class AuthController { constructor(private readonly authService: AuthService) {} @Post('login') @HttpCode(HttpStatus.OK) async login(@Body() loginDto: LoginDto): Promise<{ token: string; user: User }> { return this.authService.login(loginDto.code) } @Post('phone') @UseGuards(JwtAuthGuard) @HttpCode(HttpStatus.OK) async bindPhone( @Request() req: AuthenticatedRequest, @Body() bindPhoneDto: BindPhoneDto, ): Promise { return this.authService.bindPhone( req.user.userId, bindPhoneDto.encryptedData, bindPhoneDto.iv, ) } }