Files
Censo_api/src/auth/auth.service.ts
T

56 lines
1.7 KiB
TypeScript
Raw Normal View History

2025-10-21 14:01:53 -06:00
import { BadRequestException, Injectable, UnauthorizedException } 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';
@Injectable()
export class AuthService {
constructor(
private readonly usuarioService:UsuariosService,
private readonly jwtService:JwtService
){}
async registro({nombre, contraseña,tipoUsuario}: CreateUsuarioDto){
const usuario= await this.usuarioService.findOneByName(nombre)
if(usuario){
throw new BadRequestException("Nombre de usuario ya existente");
}
const hashedContraseña= await argon2.hash(contraseña) ;
await this.usuarioService.create({
nombre,
contraseña:hashedContraseña,
tipoUsuario
});
return{
message:"Usuario registrado exitosamente " };
}
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,
};
}
}