login solo insti activas y nuevo endpoiint

This commit is contained in:
xXpuma99Xx
2022-07-19 08:25:58 -05:00
parent 0c167a4aab
commit 8df1616c99
4 changed files with 60 additions and 36 deletions
+12 -10
View File
@@ -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.');
}
}
+17
View File
@@ -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({
+8 -6
View File
@@ -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) {
+23 -20
View File
@@ -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) {