Enhance Swagger Documentation in UserAuthController

This commit is contained in:
faris Aljohari
2024-11-23 22:50:02 -06:00
parent 4e31b71a56
commit f1da846bb5

View File

@ -10,7 +10,7 @@ import {
} from '@nestjs/common'; } from '@nestjs/common';
import { UserAuthService } from '../services/user-auth.service'; import { UserAuthService } from '../services/user-auth.service';
import { UserSignUpDto } from '../dtos/user-auth.dto'; import { UserSignUpDto } from '../dtos/user-auth.dto';
import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger';
import { ResponseMessage } from '../../../libs/common/src/response/response.decorator'; import { ResponseMessage } from '../../../libs/common/src/response/response.decorator';
import { UserLoginDto } from '../dtos/user-login.dto'; import { UserLoginDto } from '../dtos/user-login.dto';
import { ForgetPasswordDto, UserOtpDto, VerifyOtpDto } from '../dtos'; import { ForgetPasswordDto, UserOtpDto, VerifyOtpDto } from '../dtos';
@ -18,17 +18,22 @@ import { RefreshTokenGuard } from '@app/common/guards/jwt-refresh.auth.guard';
import { SuperAdminRoleGuard } from 'src/guards/super.admin.role.guard'; import { SuperAdminRoleGuard } from 'src/guards/super.admin.role.guard';
import { EnableDisableStatusEnum } from '@app/common/constants/days.enum'; import { EnableDisableStatusEnum } from '@app/common/constants/days.enum';
import { OtpType } from '@app/common/constants/otp-type.enum'; import { OtpType } from '@app/common/constants/otp-type.enum';
import { ControllerRoute } from '@app/common/constants/controller-route';
@Controller({ @Controller({
version: EnableDisableStatusEnum.ENABLED, version: EnableDisableStatusEnum.ENABLED,
path: 'authentication', path: ControllerRoute.AUTHENTICATION.ROUTE,
}) })
@ApiTags('Auth') @ApiTags('Authentication Module')
export class UserAuthController { export class UserAuthController {
constructor(private readonly userAuthService: UserAuthService) {} constructor(private readonly userAuthService: UserAuthService) {}
@ResponseMessage('User Registered Successfully') @ResponseMessage('User Registered Successfully')
@Post('user/signup') @Post('user/signup')
@ApiOperation({
summary: ControllerRoute.AUTHENTICATION.ACTIONS.SIGN_UP_SUMMARY,
description: ControllerRoute.AUTHENTICATION.ACTIONS.SIGN_UP_DESCRIPTION,
})
async signUp(@Body() userSignUpDto: UserSignUpDto) { async signUp(@Body() userSignUpDto: UserSignUpDto) {
const signupUser = await this.userAuthService.signUp(userSignUpDto); const signupUser = await this.userAuthService.signUp(userSignUpDto);
return { return {
@ -41,8 +46,12 @@ export class UserAuthController {
}; };
} }
@ResponseMessage('user logged in successfully') @ResponseMessage('User Logged in Successfully')
@Post('user/login') @Post('user/login')
@ApiOperation({
summary: ControllerRoute.AUTHENTICATION.ACTIONS.LOGIN_SUMMARY,
description: ControllerRoute.AUTHENTICATION.ACTIONS.LOGIN_DESCRIPTION,
})
async userLogin(@Body() data: UserLoginDto) { async userLogin(@Body() data: UserLoginDto) {
const accessToken = await this.userAuthService.userLogin(data); const accessToken = await this.userAuthService.userLogin(data);
return { return {
@ -53,6 +62,10 @@ export class UserAuthController {
} }
@Post('user/send-otp') @Post('user/send-otp')
@ApiOperation({
summary: ControllerRoute.AUTHENTICATION.ACTIONS.SEND_OTP_SUMMARY,
description: ControllerRoute.AUTHENTICATION.ACTIONS.SEND_OTP_DESCRIPTION,
})
async sendOtp(@Body() otpDto: UserOtpDto) { async sendOtp(@Body() otpDto: UserOtpDto) {
const otpCode = await this.userAuthService.generateOTP(otpDto); const otpCode = await this.userAuthService.generateOTP(otpDto);
return { return {
@ -60,11 +73,15 @@ export class UserAuthController {
data: { data: {
...otpCode, ...otpCode,
}, },
message: 'Otp Send Successfully', message: 'Otp Sent Successfully',
}; };
} }
@Post('user/verify-otp') @Post('user/verify-otp')
@ApiOperation({
summary: ControllerRoute.AUTHENTICATION.ACTIONS.VERIFY_OTP_SUMMARY,
description: ControllerRoute.AUTHENTICATION.ACTIONS.VERIFY_OTP_DESCRIPTION,
})
async verifyOtp(@Body() verifyOtpDto: VerifyOtpDto) { async verifyOtp(@Body() verifyOtpDto: VerifyOtpDto) {
await this.userAuthService.verifyOTP(verifyOtpDto); await this.userAuthService.verifyOTP(verifyOtpDto);
return { return {
@ -75,6 +92,11 @@ export class UserAuthController {
} }
@Post('user/forget-password') @Post('user/forget-password')
@ApiOperation({
summary: ControllerRoute.AUTHENTICATION.ACTIONS.FORGET_PASSWORD_SUMMARY,
description:
ControllerRoute.AUTHENTICATION.ACTIONS.FORGET_PASSWORD_DESCRIPTION,
})
async forgetPassword(@Body() forgetPasswordDto: ForgetPasswordDto) { async forgetPassword(@Body() forgetPasswordDto: ForgetPasswordDto) {
const otpResult = await this.userAuthService.verifyOTP( const otpResult = await this.userAuthService.verifyOTP(
{ {
@ -102,6 +124,10 @@ export class UserAuthController {
@ApiBearerAuth() @ApiBearerAuth()
@UseGuards(SuperAdminRoleGuard) @UseGuards(SuperAdminRoleGuard)
@Get('user') @Get('user')
@ApiOperation({
summary: ControllerRoute.AUTHENTICATION.ACTIONS.USER_LIST_SUMMARY,
description: ControllerRoute.AUTHENTICATION.ACTIONS.USER_LIST_DESCRIPTION,
})
async userList() { async userList() {
const userList = await this.userAuthService.userList(); const userList = await this.userAuthService.userList();
return { return {
@ -114,6 +140,11 @@ export class UserAuthController {
@ApiBearerAuth() @ApiBearerAuth()
@UseGuards(RefreshTokenGuard) @UseGuards(RefreshTokenGuard)
@Get('refresh-token') @Get('refresh-token')
@ApiOperation({
summary: ControllerRoute.AUTHENTICATION.ACTIONS.REFRESH_TOKEN_SUMMARY,
description:
ControllerRoute.AUTHENTICATION.ACTIONS.REFRESH_TOKEN_DESCRIPTION,
})
async refreshToken(@Req() req) { async refreshToken(@Req() req) {
const refreshToken = await this.userAuthService.refreshToken( const refreshToken = await this.userAuthService.refreshToken(
req.user.uuid, req.user.uuid,