Se corrigio el login

This commit is contained in:
2023-03-08 15:28:54 -06:00
parent 6618e79a86
commit 5348a329d5
11 changed files with 118 additions and 36 deletions
+3 -2
View File
@@ -5,6 +5,7 @@ import { Usuario } from 'src/usuario/usuario.entity';
import { Repository } from 'typeorm';
import { AuthService } from './auth.service';
import { LoginUsuarioDto } from './dto/loginUsuario.dto';
import { RegistrarMiembroDto } from './dto/registrarMiembro.dto';
import { RegistrarUsuarioDto } from './dto/registrarUsuario.dto';
@Controller('auth')
@@ -14,8 +15,8 @@ export class AuthController {
) /* @InjectRepository(Usuario) private usuarioRepository: Repository<Usuario> */ {}
@Post('registro')
registrarUsuario(@Body() registrarUsuario: RegistrarUsuarioDto) {
return this.authService.registrar(registrarUsuario);
registrarUsuario(@Body() registrarMiembro: RegistrarMiembroDto) {
return this.authService.registrar(registrarMiembro);
}
@Post('login')
+6 -6
View File
@@ -1,26 +1,26 @@
import { Module } from '@nestjs/common';
import { PassportModule } from '@nestjs/passport';
import { UsuarioModule } from 'src/usuario/usuario.module';
import { AuthService } from './auth.service';
import { jwtStrategy } from './jwt.strategy';
import { AuthController } from './auth.controller';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Usuario } from 'src/usuario/usuario.entity';
import { UsuarioService } from 'src/usuario/usuario.service';
import { JwtModule } from '@nestjs/jwt';
import { jwtConstants } from './jwt.constants';
import { MiembroModule } from 'src/miembro/miembro.module';
import { MiembroService } from 'src/miembro/miembro.service';
import { Miembro } from 'src/miembro/entity/miembro.entity';
@Module({
imports: [
UsuarioModule,
MiembroModule,
PassportModule,
TypeOrmModule.forFeature([Usuario]),
TypeOrmModule.forFeature([Miembro]),
JwtModule.register({
secret: jwtConstants.secret,
signOptions: { expiresIn: '5h' },
}),
],
providers: [AuthService, jwtStrategy, UsuarioService, jwtStrategy],
providers: [AuthService, jwtStrategy, MiembroService, jwtStrategy],
controllers: [AuthController],
})
export class AuthModule {}
+18 -17
View File
@@ -1,45 +1,44 @@
import { HttpException, Injectable } from '@nestjs/common';
import { UsuarioService } from 'src/usuario/usuario.service';
import { JwtService } from '@nestjs/jwt';
import * as bcrypt from 'bcrypt';
import { RegistrarUsuarioDto } from './dto/registrarUsuario.dto';
import { hash } from 'bcrypt';
import { InjectRepository } from '@nestjs/typeorm';
import { Usuario } from 'src/usuario/usuario.entity';
import { Repository } from 'typeorm';
import { LoginUsuarioDto } from './dto/loginUsuario.dto';
import { compare } from 'bcrypt';
import { jwtConstants } from './jwt.constants';
import { LoginMiembroDto } from './dto/loginMiembro.dto';
import { Miembro } from 'src/miembro/entity/miembro.entity';
import { RegistrarMiembroDto } from './dto/registrarMiembro.dto';
@Injectable()
export class AuthService {
constructor(
private jwtService: JwtService,
private readonly usuarioService: UsuarioService,
@InjectRepository(Usuario) private usuarioRepository: Repository<Usuario>,
@InjectRepository(Miembro) private miembroRepository: Repository<Miembro>,
) {}
async registrar(registrarUsuario: RegistrarUsuarioDto) {
async registrar(registrarMiembro: RegistrarMiembroDto) {
const { email, password } = registrarUsuario;
const { email, password } = registrarMiembro;
const plainToHash = await hash(password, 10);
if (await this.usuarioRepository.findOne({ where: { email } }))
if (await this.miembroRepository.findOne({ where: { email } }))
throw new HttpException('usuario existe', 403);
registrarUsuario = { ...registrarUsuario, password: plainToHash };
registrarMiembro = { ...registrarMiembro, password: plainToHash };
return this.usuarioRepository.save(
this.usuarioRepository.create(registrarUsuario),
return this.miembroRepository.save(
this.miembroRepository.create(registrarMiembro),
);
}
async login(loginUsuario: LoginUsuarioDto) {
const { email, password } = loginUsuario;
async login(loginMiembro: LoginMiembroDto) {
const { email, password } = loginMiembro;
const usuario = await this.usuarioRepository.findOne({ where: { email } });
const usuario = await this.miembroRepository.findOne({ where: { email } });
if (!usuario) throw new HttpException('Usuario no encontrado', 404);
@@ -47,12 +46,14 @@ export class AuthService {
if (!checkPassword) throw new HttpException('Contraseña incorrecta', 403);
const payload = { id_usuario: usuario.id_usuario, name: usuario.nombre };
const payload = { id_usuario: usuario.id_miembro,id_tipoMiembro: usuario.id_tipo_miembro, name: usuario.nombre };
console.log(payload)
const token = this.jwtService.sign(payload); //firma el token
console.log(token)
const data = {
usuario: usuario.nombre,
id: usuario.id_usuario,
id: usuario.id_miembro,
email: usuario.email,
token,
};
+11
View File
@@ -0,0 +1,11 @@
import { IsEmail, MaxLength, MinLength } from "class-validator"
export class LoginMiembroDto {
@IsEmail()
email: string
@MinLength(10)
@MaxLength(15)
password: string
}
+33
View File
@@ -0,0 +1,33 @@
import { PartialType } from '@nestjs/swagger';
import { IsEmail, IsNotEmpty, MaxLength, MinLength } from 'class-validator';
import { LoginUsuarioDto } from './loginUsuario.dto';
export class RegistrarMiembroDto extends PartialType(LoginUsuarioDto) {
@IsNotEmpty()
nombre: string;
@IsNotEmpty()
apellido_paterno: string;
@IsNotEmpty()
apellido_materno: string;
@IsNotEmpty()
id_tipo_miembro: number;
@MinLength(10)
@MaxLength(15)
password: string;
descripcion: string
id_carrera: number
semestre: string
@IsNotEmpty()
cuenta: number
@IsEmail()
email: string;
}