diff --git a/src/auth/auth.service.ts b/src/auth/auth.service.ts index db6fbfa..41ad57d 100644 --- a/src/auth/auth.service.ts +++ b/src/auth/auth.service.ts @@ -25,6 +25,8 @@ export class AuthService { loginAdmin(admin: string, password: string) { return this.operadorService.findAdmin(admin, false).then((operador) => { this.validarLogin(operador, password); + if (!operador.activo) + throw new ConflictException('Esta cuenta se encuentra desactivada.'); const payload: JwtPayload = { id_operador: operador.id_operador, @@ -54,16 +56,18 @@ export class AuthService { } loginUsuario(usuario: string, password: string) { - return this.usuarioService.findByUsuario(usuario, false).then((usuario) => { - this.validarLogin(usuario, password); + return this.usuarioService + .findByUsuario(usuario, false, false, true) + .then((usuario) => { + this.validarLogin(usuario, password); - const payload: JwtPayload = { - id_usuario: usuario.id_usuario, - id_tipo_usuario: usuario.tipoUsuario.id_tipo_usuario, - }; + const payload: JwtPayload = { + id_usuario: usuario.id_usuario, + id_tipo_usuario: usuario.tipoUsuario.id_tipo_usuario, + }; - return { token: this.jwtService.sign(payload), usuario }; - }); + return { token: this.jwtService.sign(payload), usuario }; + }); } validarLogin(usuarioOperador: Usuario | Operador, password: string) { @@ -74,7 +78,5 @@ export class AuthService { throw new UnauthorizedException( 'Usuario y/o password incorrectos, trata de nuevo.', ); - if (!usuarioOperador.activo) - throw new ConflictException('Esta cuenta se encuentra desactivada.'); } } diff --git a/src/modulo/modulo.controller.ts b/src/modulo/modulo.controller.ts index 687a4b5..e9d9bd6 100644 --- a/src/modulo/modulo.controller.ts +++ b/src/modulo/modulo.controller.ts @@ -72,6 +72,23 @@ export class ModuloController { ); } + @Serealize(ModuloOutputDto) + @Get('modulos-activos') + @ApiOperation({ + description: 'Endpoint que retorna todos los módulos de una institución.', + }) + @ApiQuery({ + description: 'Id de la institución.', + name: 'id_institucion', + type: 'string', + }) + modulosActivos(@Query() query: IdInstitucionDto) { + return this.moduloService.findAllByIdInstitucion( + parseInt(query.id_institucion), + true, + ); + } + @Put() @UseGuards(AuthGuard('jwt')) @ApiOperation({ diff --git a/src/modulo/modulo.service.ts b/src/modulo/modulo.service.ts index 44c29c0..71dca26 100644 --- a/src/modulo/modulo.service.ts +++ b/src/modulo/modulo.service.ts @@ -49,11 +49,11 @@ export class ModuloService { }); } - findAllByIdInstitucion(id_institucion: number) { + findAllByIdInstitucion(id_institucion: number, activos = false) { return this.institucionService .findById(id_institucion) - .then((institucion) => - this.repository + .then((institucion) => { + const query = this.repository .createQueryBuilder('m') .innerJoinAndSelect( 'm.institucion', @@ -62,9 +62,11 @@ export class ModuloService { { id_institucion: institucion.id_institucion }, ) .orderBy('i.institucion') - .orderBy('m.modulo') - .getMany(), - ); + .orderBy('m.modulo'); + + if (activos) query.andWhere('m.activo = 1'); + return query.getMany(); + }); } findById(id_modulo: number) { diff --git a/src/usuario/usuario.service.ts b/src/usuario/usuario.service.ts index 4a64ae3..1dd9042 100644 --- a/src/usuario/usuario.service.ts +++ b/src/usuario/usuario.service.ts @@ -15,6 +15,7 @@ import { InstitucionUsuarioService } from '../institucion-usuario/institucion-us import { NodemailerService } from '../nodemailer/nodemailer.service'; import { SoapClientService } from '../soap-client/soap-client.service'; import { TipoUsuarioService } from '../tipo-usuario/tipo-usuario.service'; +import { query } from 'express'; @Injectable() export class UsuarioService { @@ -194,26 +195,28 @@ export class UsuarioService { }); } - findByUsuario(usuario: string, validarNoExiste = true, password = false) { - return this.repository - .findOne({ - join: { - alias: 'u', - innerJoinAndSelect: { - is: 'u.instituciones', - ic: 'is.institucionCarrera', - c: 'ic.carrera', - i: 'ic.institucion', - n: 'c.nivel', - }, - }, - where: { usuario }, - }) - .then((usuario) => { - if (validarNoExiste && (!usuario || (password && !usuario.password))) - throw new NotFoundException('No existe este usuario.'); - return usuario; - }); + findByUsuario( + usuario: string, + validarNoExiste = true, + password = false, + activos = false, + ) { + const query = this.repository + .createQueryBuilder('u') + .innerJoinAndSelect('u.instituciones', 'is') + .innerJoinAndSelect('u.tipoUsuario', 'tu') + .innerJoinAndSelect('is.institucionCarrera', 'ic') + .innerJoinAndSelect('ic.carrera', 'c') + .innerJoinAndSelect('ic.institucion', 'i') + .innerJoinAndSelect('c.nivel', 'n') + .where('usuario = :usuario', { usuario }); + + if (activos) query.andWhere('is.activo = 1'); + return query.getOne().then((usuario) => { + if (validarNoExiste && (!usuario || (password && !usuario.password))) + throw new NotFoundException('No existe este usuario.'); + return usuario; + }); } passwordReset(id_usuario: number) {