73 lines
2.1 KiB
TypeScript
73 lines
2.1 KiB
TypeScript
import { BadRequestException, Injectable, UnauthorizedException, InternalServerErrorException } from '@nestjs/common';
|
|
import { UsuariosService } from 'src/usuarios/usuarios.service';
|
|
import * as argon2 from 'argon2';
|
|
import { LoginDto } from './dto/login.dto';
|
|
import { CreateUsuarioDto } from 'src/usuarios/dto/create-usuario.dto';
|
|
import { JwtService } from '@nestjs/jwt';
|
|
import { Repository } from 'typeorm';
|
|
import { Usuario } from 'src/usuarios/entities/usuario.entity';
|
|
import { InjectRepository } from '@nestjs/typeorm';
|
|
|
|
@Injectable()
|
|
export class AuthService {
|
|
constructor(
|
|
private readonly usuarioService:UsuariosService,
|
|
private readonly jwtService:JwtService
|
|
){}
|
|
//Pendiente tipoUsuario
|
|
async registro({nombre, contraseña,tipoUsuario}: CreateUsuarioDto){
|
|
|
|
const usuario = await this.usuarioService.findOneByName(nombre);
|
|
if(usuario){
|
|
throw new BadRequestException("Nombre de usuario ya existente");
|
|
}
|
|
|
|
try{
|
|
const hashedContraseña = await argon2.hash(contraseña);
|
|
|
|
await this.usuarioService.create({
|
|
nombre,
|
|
contraseña: hashedContraseña,
|
|
tipoUsuario,
|
|
});
|
|
|
|
return {
|
|
message: "Usuario registrado exitosamente"
|
|
};
|
|
}catch(error){
|
|
|
|
throw new InternalServerErrorException('Error al crear el usuario');
|
|
}
|
|
}
|
|
|
|
async login({nombre, contraseña}:LoginDto){
|
|
const usuario= await this.usuarioService.findOneByName(nombre)
|
|
if(!usuario){
|
|
throw new UnauthorizedException("Usuario no encontrado");
|
|
|
|
}
|
|
const contraseñaValida= await argon2.verify(contraseña, usuario.contraseña);
|
|
if(!contraseñaValida){
|
|
throw new UnauthorizedException("Contraseña invalida");
|
|
|
|
}
|
|
const dataUser={
|
|
id:usuario.id_usuario,
|
|
nombre:usuario.nombre,
|
|
tipoUsuario:usuario.tipoUsuario.id_tipo_usuario
|
|
}
|
|
|
|
const token=await this.jwtService.sign(dataUser)
|
|
return{
|
|
token:token,
|
|
};
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|