Newer
Older
import { HttpException, HttpStatus, Injectable } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
import { IUser } from '../users/interfaces/user.interface';
import { User } from '../users/schemas/user.schema';
import { UsersService } from '../users/services/users.service';
import { LoginDto } from './login-dto';
@Injectable()
export class AuthService {
constructor(private usersService: UsersService, private jwtService: JwtService) {}
async validateUser(loginDto: LoginDto): Promise<IUser> {
const user = await this.usersService.findOne(loginDto.email);
if (user) {
return user;
// check user auth in db
const user = await this.usersService.checkLogin(loginDto);
throw new HttpException('Unverified user', HttpStatus.I_AM_A_TEAPOT);
// generate and sign token
const token = this._createToken(user);
return {
username: user.email,
name: user.name,
surname: user.surname,
async resendEmail(loginDto: LoginDto) {
// check user auth in db
const user = await this.usersService.checkLogin(loginDto);
if (user.emailVerified) {
throw new HttpException('User already verified', HttpStatus.UNPROCESSABLE_ENTITY);
}
return this.usersService.sendVerifyUserMail(user);
}
const local = DateTime.local().setZone('Europe/Paris');
accessToken: this.jwtService.sign({ email: user.email, role: user.role }),