69 lines
2.1 KiB
TypeScript
69 lines
2.1 KiB
TypeScript
import { Body, Controller, Get, Post, Patch, Query, UseGuards } from "@nestjs/common";
|
|
import { ok } from "../common/response";
|
|
import { AuthService } from "./auth.service";
|
|
import { LoginDto } from "./dto/login.dto";
|
|
import { RegisterDto } from "./dto/register.dto";
|
|
import { UpdateProfileDto } from "./dto/update-profile.dto";
|
|
import { ForgotPasswordDto } from "./dto/forgot-password.dto";
|
|
import { ResetPasswordDto } from "./dto/reset-password.dto";
|
|
import { JwtAuthGuard } from "../common/guards/jwt-auth.guard";
|
|
import { CurrentUser } from "../common/decorators/current-user.decorator";
|
|
import { Public } from "../common/decorators/public.decorator";
|
|
|
|
@Controller("auth")
|
|
@UseGuards(JwtAuthGuard)
|
|
export class AuthController {
|
|
constructor(private readonly authService: AuthService) {}
|
|
|
|
@Public()
|
|
@Post("register")
|
|
async register(@Body() payload: RegisterDto) {
|
|
return ok(await this.authService.register(payload));
|
|
}
|
|
|
|
@Public()
|
|
@Post("login")
|
|
async login(@Body() payload: LoginDto) {
|
|
return ok(await this.authService.login(payload));
|
|
}
|
|
|
|
@Public()
|
|
@Get("verify-email")
|
|
async verifyEmail(@Query("token") token: string) {
|
|
return ok(await this.authService.verifyEmail(token));
|
|
}
|
|
|
|
@Public()
|
|
@Post("refresh")
|
|
async refresh(@Body("refreshToken") refreshToken: string) {
|
|
return ok(await this.authService.refreshAccessToken(refreshToken));
|
|
}
|
|
|
|
@Post("logout")
|
|
async logout(@Body("refreshToken") refreshToken: string) {
|
|
return ok(await this.authService.logout(refreshToken));
|
|
}
|
|
|
|
@Public()
|
|
@Post("forgot-password")
|
|
async forgotPassword(@Body() payload: ForgotPasswordDto) {
|
|
return ok(await this.authService.forgotPassword(payload));
|
|
}
|
|
|
|
@Public()
|
|
@Post("reset-password")
|
|
async resetPassword(@Body() payload: ResetPasswordDto) {
|
|
return ok(await this.authService.resetPassword(payload));
|
|
}
|
|
|
|
@Get("me")
|
|
async me(@CurrentUser() userId: string) {
|
|
return ok(await this.authService.getProfile(userId));
|
|
}
|
|
|
|
@Patch("profile")
|
|
async updateProfile(@CurrentUser() userId: string, @Body() payload: UpdateProfileDto) {
|
|
return ok(await this.authService.updateProfile(userId, payload));
|
|
}
|
|
}
|