File

src/core/auth/auth.service.ts

Index

Methods

Constructor

constructor(usersService: UsersService, jwtService: JwtService)
Parameters :
Name Type Optional
usersService UsersService No
jwtService JwtService No

Methods

findUserByEmail
findUserByEmail(user: ValidateUserDto)
Parameters :
Name Type Optional
user ValidateUserDto No
Returns : Promise<User>
Async generateToken
generateToken(user: ValidateUserDto)
Parameters :
Name Type Optional
user ValidateUserDto No
Returns : Promise<any>
import { HttpException, HttpStatus, Injectable } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';

import { comparePassword } from '@app/core/hashing/hashing';
import { ValidateUserDto } from '@app/feature/users/dto/validate.user.dto';
import { User } from '@app/feature/users/entities/user.entity';
import { UsersService } from '@app/feature/users/services/users.service';

@Injectable()
export class AuthService {
  constructor(private readonly usersService: UsersService, private readonly jwtService: JwtService) {}

  findUserByEmail(user: ValidateUserDto): Promise<User> {
    return this.usersService.findEmail(user.email);
  }

  async generateToken(user: ValidateUserDto): Promise<any> {
    try {
      const userData = await this.findUserByEmail(user);
      const isMatched = await comparePassword(user.password, userData.password);
      if (isMatched) {
        const payload = {
          id: userData.id,
          firstName: userData.firstName,
          email: userData.email,
        };
        const accessToken = this.jwtService.sign(payload);
        return {
          access_token: accessToken,
        };
      } else {
        throw new HttpException('Invalid credentials', HttpStatus.UNAUTHORIZED);
      }
    } catch (e) {
      console.error(e);
      throw e;
    }
  }
}

results matching ""

    No results matching ""