| | import { Injectable, Inject } from '@nestjs/common';
|
| | import * as bcrypt from 'bcrypt';
|
| | import { JwtService } from '@nestjs/jwt';
|
| | import { UserService } from '../user/user.service';
|
| | import { Model } from 'mongoose';
|
| | import { CommonServices } from '../shared/common.service';
|
| | var qs = require('qs');
|
| |
|
| | @Injectable()
|
| | export class AuthService extends CommonServices {
|
| | constructor(
|
| | private readonly userService: UserService,
|
| | private jwtService: JwtService,
|
| | ) {
|
| | super();
|
| | }
|
| |
|
| | async login(user: any, body: any = {}) {
|
| | const payload = {
|
| | userId: user._id,
|
| | name: user.name,
|
| | email: user.email,
|
| | roles: user.roles,
|
| | };
|
| |
|
| | return {
|
| | access_token: this.jwtService.sign(payload, {
|
| | secret: 'secretKey',
|
| | expiresIn: '60d',
|
| | }),
|
| | user: {
|
| | _id: user._id,
|
| | name: user.name,
|
| | email: user.email,
|
| | roles: user.roles,
|
| | createdAt: user.createdAt,
|
| | updatedAt: user.updatedAt,
|
| | },
|
| | };
|
| | }
|
| |
|
| | async validateUser(identifier: string, password: string): Promise<any> {
|
| | console.log(`IDENTIFIER =>`, identifier);
|
| | console.log(`password =>`, password);
|
| | const user = await this.userService.userRepository
|
| | .findOne({
|
| | $or: [{ email: identifier }, { username: identifier }],
|
| | })
|
| | .select('+password');
|
| | if (user && bcrypt.compareSync(password, user.password)) {
|
| | return user;
|
| | } else {
|
| | const userInLowerCase = await this.userService.userRepository
|
| | .findOne({
|
| | $or: [
|
| | { email: identifier.toLowerCase() },
|
| | { username: identifier.toLowerCase() },
|
| | ],
|
| | })
|
| | .select('+password');
|
| | if (
|
| | userInLowerCase &&
|
| | bcrypt.compareSync(password, userInLowerCase.password)
|
| | ) {
|
| | return userInLowerCase;
|
| | }
|
| | }
|
| | return null;
|
| | }
|
| |
|
| | async validateByEmail(identifier: string): Promise<any> {
|
| | const user = await this.userService.userRepository.findOne({
|
| | $or: [{ email: identifier }, { username: identifier }],
|
| | });
|
| |
|
| | if (user) {
|
| | const rUser = {
|
| | userId: user._id,
|
| | name: user.name,
|
| | username: user.username,
|
| | email: user.email,
|
| | roles: user.roles,
|
| |
|
| |
|
| | };
|
| | return rUser;
|
| | } else {
|
| | const userInLowerCase = await this.userService.userRepository.findOne({
|
| | $or: [
|
| | { email: identifier.toLowerCase() },
|
| | { username: identifier.toLowerCase() },
|
| | ],
|
| | });
|
| | if (userInLowerCase) {
|
| | const rUser = {
|
| | userId: userInLowerCase._id,
|
| | name: userInLowerCase.name,
|
| | username: user.username,
|
| | email: userInLowerCase.email,
|
| | roles: userInLowerCase.roles,
|
| | };
|
| | return rUser;
|
| | }
|
| | }
|
| | return null;
|
| | }
|
| | }
|
| |
|