|
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<any> {
|
|
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<any> {
|
|
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,
|
|
);
|
|
}
|
|
}
|
|
}
|
|
|