@bitloops/bl-boilerplate-infra-nest-auth-passport
Version:
TypeScript postgres package for Bitloops Language generated projects
62 lines (61 loc) • 2.34 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
import { Injectable } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
import * as bcrypt from 'bcrypt';
import { UsersService } from './users/users.service';
import { randomUUID } from 'crypto';
let AuthService = class AuthService {
usersService;
jwtService;
constructor(usersService, jwtService) {
this.usersService = usersService;
this.jwtService = jwtService;
}
async validateUser(email, pass) {
const user = await this.usersService.findOne(email);
if (user) {
const passwordsMatch = await bcrypt.compare(pass, user.password);
if (passwordsMatch) {
const { password, ...result } = user;
return result;
}
}
return null;
}
async login(user) {
const payload = {
email: user.email,
sub: user.id,
};
return {
access_token: this.jwtService.sign(payload),
};
}
async register(user) {
const hashedPassword = await this.hashPassword(user.password);
if (!user.id)
user.id = randomUUID();
const userToBeCreated = {
...user,
password: hashedPassword,
};
return this.usersService.create(userToBeCreated);
}
hashPassword(password) {
const saltOrRounds = 10;
return bcrypt.hash(password, saltOrRounds);
}
};
AuthService = __decorate([
Injectable(),
__metadata("design:paramtypes", [UsersService, JwtService])
], AuthService);
export { AuthService };