login solo insti activas y nuevo endpoiint
This commit is contained in:
+12
-10
@@ -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.');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user