BE/src/auth/auth.controller.ts

97 lines
2.7 KiB
TypeScript
Raw Normal View History

2025-06-18 17:15:21 +05:30
import { Body, Controller, Get, HttpCode, Post, Put, Req, Res, UseInterceptors } from '@nestjs/common';
2025-02-24 10:32:41 +05:30
import { AuthService } from './auth.service';
import { ApiTags } from '@nestjs/swagger';
import { AuthLoginDTO } from './auth.dto';
2025-06-16 15:53:15 +05:30
import { Request, Response } from 'express';
2025-06-18 17:15:21 +05:30
import { LogoutInterceptor } from 'src/interceptors/logout.interceptor';
2025-02-24 10:32:41 +05:30
2025-06-18 17:15:21 +05:30
@ApiTags('Auth')
2025-02-24 10:32:41 +05:30
@Controller()
export class AuthController {
2025-06-16 15:53:15 +05:30
constructor(private readonly authService: AuthService) { }
2025-02-24 10:32:41 +05:30
2025-06-18 17:15:21 +05:30
@Post('login')
2025-06-16 15:53:15 +05:30
@HttpCode(200)
async loginClient(@Body() body: AuthLoginDTO, @Res({ passthrough: true }) res: Response, @Req() req: Request) {
let k: any = await this.authService.loginUser(body.P_EMAILADDR, body.P_PASSWORD, req);
if (k.access_token) {
res.cookie('access_token', k.access_token, {
httpOnly: true,
secure: true,
sameSite: 'none',
maxAge: 8 * 60 * 60 * 1000,
2025-06-16 15:53:15 +05:30
});
}
if (k.refresh_token) {
res.cookie('refresh_token', k.refresh_token, {
httpOnly: true,
secure: true,
sameSite: 'none',
maxAge: 8 * 60 * 60 * 1000,
2025-06-16 15:53:15 +05:30
});
}
return { statusCode: 200, message: "Logged-In Successfully", email: k.email }
}
// @UseGuards(RegisterGuard)
2025-06-18 17:15:21 +05:30
@Post('register')
2025-06-16 15:53:15 +05:30
async register(@Body() body: AuthLoginDTO, @Req() req: Request) {
return this.authService.registerUser(body, req);
}
2025-06-18 17:15:21 +05:30
@UseInterceptors(LogoutInterceptor)
2025-06-16 15:53:15 +05:30
@HttpCode(200)
2025-06-18 17:15:21 +05:30
@Post('logout')
2025-06-16 15:53:15 +05:30
async logout(@Req() req: any, @Res() res: Response) {
const refreshToken = req.user?.refreshToken;
let rst: any = await this.authService.logoutUser(refreshToken);
if (rst.statusCode === 200) {
res.clearCookie('access_token');
res.clearCookie('refresh_token');
}
res.json({ ...rst })
}
2025-06-18 17:15:21 +05:30
@Put('forgot-password')
2025-06-16 15:53:15 +05:30
async forgotPassword() {
return this.authService.forgotPassword();
}
2025-06-18 17:15:21 +05:30
@Get('refresh-tokens')
2025-06-16 15:53:15 +05:30
async getTokenFromRefreshToken(@Req() req: Request, @Res({ passthrough: true }) res: Response) {
let k: any = await this.authService.getTokenFromRefreshToken(req)
if (k.access_token) {
res.cookie('access_token', k.access_token, {
httpOnly: true,
secure: true,
sameSite: 'none',
maxAge: 8 * 60 * 60 * 1000,
2025-06-16 15:53:15 +05:30
path: '/'
});
}
if (k.refresh_token) {
res.cookie('refresh_token', k.refresh_token, {
httpOnly: true,
secure: true,
sameSite: 'none',
maxAge: 8 * 60 * 60 * 1000,
2025-06-16 15:53:15 +05:30
path: '/'
});
}
return { statusCode: 200, message: "Tokens refreshed successfully" }
}
2025-06-17 17:14:27 +05:30
// @Get('checkRoles')
// @UseGuards(JwtAuthGuard, RolesGuard)
// @Roles('ca')
roleChecking() {
return { message: "role checking successfull..." }
}
2025-02-24 10:32:41 +05:30
}