import { Body, Controller, Get, HttpStatus, Inject, Param, Post, Put, Query, Req, Res, UploadedFile, UseGuards, UseInterceptors, } from '@nestjs/common'; import { Response, Request } from 'express'; import { AuthService } from './auth.service'; import * as bcrypt from 'bcrypt'; import { LocalAuthGuard } from './local-auth.guard'; import { UserService } from '../user/user.service'; import { JwtAuthGuard } from './jwt-auth.guard'; import * as jwt from 'jsonwebtoken'; import { FileInterceptor } from '@nestjs/platform-express'; import { Model } from 'mongoose'; import { AuthGuard } from '@nestjs/passport'; import { JwtService } from '@nestjs/jwt'; import { CommonServices } from '../shared/common.service'; import { jwtConstants } from 'src/constants/jwt.constant'; @Controller('auth') export class AuthController extends CommonServices { constructor( private readonly authService: AuthService, private readonly userService: UserService, ) { super(); } @UseGuards(LocalAuthGuard) @Post('/login') async login( @Req() req: any, @Res() res: Response, @Body() body: any, ): Promise { try { const Userresp: any = await this.authService.login(req.user, body); return this.sendResponse( this.messages.Success, Userresp, HttpStatus.OK, res, ); } catch (error) { console.log(`error =>`, error); return this.sendResponse( 'Internal server Error', {}, HttpStatus.INTERNAL_SERVER_ERROR, res, ); } } @Post('/signup') async signup( @Req() req: any, @Res() res: Response, @Body() body: any, ): Promise { try { const email = body.email.toLowerCase().trim(); const checkUser = await this.userService.sharedFindOne({ email: email }); if (checkUser && checkUser.email == email) { return this.sendResponse( this.messages.userAlreadyExist, {}, HttpStatus.CONFLICT, res, ); } const createUser = await this.userService.sharedCreate({ ...body, password: bcrypt.hashSync(body.password, jwtConstants.salt), roles: ['user'], }); const Userresp: any = await this.authService.login(createUser); return this.sendResponse( 'Account created!', { ...Userresp, }, HttpStatus.OK, res, ); } catch (error) { console.log(error); return this.sendResponse( 'Internal server Error', {}, HttpStatus.INTERNAL_SERVER_ERROR, res, ); } } }