aparentemente todo bien

This commit is contained in:
lemuel 2022-10-16 22:45:31 -05:00
parent b32d0a2f4a
commit a177ea884b
5 changed files with 88 additions and 86 deletions

View File

@ -74,18 +74,30 @@ export class AuthService {
loginUsuario(usuario: string, password: string) {
return this.usuarioService
.informacionUsuarioByUsuario(usuario)
.then((data) => {
if (!data.password)
.findInfoUsuarioByUsuario(usuario)
.then((usuario) => {
if (usuario && !usuario.password)
throw new BadRequestException('Este usuario no ha sido registrado.');
if (
!data.usuario ||
!this.bcryptService.comparar(password, data.password)
!usuario ||
!this.bcryptService.comparar(password, usuario.password)
)
throw new BadRequestException(
'Usuario y/o password incorrectos, ingresa unas credenciales válidas.',
);
return { token: this.jwtService.sign(data.usuario) };
const JwtPayload: JwtPayloadUsuario = {
Usuario: {
id_usuario: usuario.id_usuario,
usuario: usuario.usuario,
nombre: usuario.nombre,
tipoUsuario: {
id_tipo_usuario: usuario.tipoUsuario.id_tipo_usuario,
},
},
};
return { token: this.jwtService.sign(JwtPayload) };
});
}

View File

@ -45,7 +45,7 @@ export class InstitucionUsuarioService {
});
}
findFullInfoInstitucionUsuarioAllByIdUsuarioIdInstitucion(
findFullInfoAllByIdUsuarioIdInstitucion(
id_usuario: number,
id_institucion: number,
) {
@ -79,7 +79,7 @@ export class InstitucionUsuarioService {
});
}
findFullInfoInstitucionUsuarioByIdUsuarioIdInstitucionCarrera(
findFullInfoByIdUsuarioIdInstitucionCarrera(
usuario: Usuario,
id_institucion_carrera: number,
) {
@ -109,7 +109,31 @@ export class InstitucionUsuarioService {
});
}
findInfoInstitucionUsuarioByIdUsuarioIdInstitucionCarrera(
findAllByIdUsuarioIdInstitucion(id_usuario: number, id_institucion: number) {
return this.informacionInstitucionUsuarioView
.find({ where: { id_institucion, id_usuario } })
.then((infoInstitucionesUsuario) => {
const institucionesUsuario: InstitucionUsuario[] = [];
for (let i = 0; i < infoInstitucionesUsuario.length; i++)
institucionesUsuario.push(
this.viewToInstitucionUsuario(infoInstitucionesUsuario[i]),
);
return institucionesUsuario;
});
}
findById(id_institucion_usuario: number) {
return this.informacionInstitucionUsuarioView
.findOne({ where: { id_institucion_usuario } })
.then((infoInstitucionUsuario) => {
if (!infoInstitucionUsuario)
throw new ConflictException('No existe este id institución usuario.');
return this.viewToInstitucionUsuario(infoInstitucionUsuario);
});
}
findByIdUsuarioIdInstitucionCarrera(
id_usuario: number,
id_institucion_carrera: number,
) {
@ -120,22 +144,12 @@ export class InstitucionUsuarioService {
);
}
findInfoInstitucionUsuarioById(id_institucion_usuario: number) {
return this.informacionInstitucionUsuarioView
.findOne({ where: { id_institucion_usuario } })
.then((infoInstitucionUsuario) => {
if (!infoInstitucionUsuario)
throw new ConflictException('No existe este id institución usuario.');
return this.viewToInstitucionUsuario(infoInstitucionUsuario);
});
}
save(institucionUsuario: InstitucionUsuario) {
return this.repository.save(institucionUsuario);
}
update(attrs: Partial<InstitucionUsuario>) {
return this.findInfoInstitucionUsuarioById(attrs.id_institucion_usuario)
return this.findById(attrs.id_institucion_usuario)
.then((institucionUsuario) => {
Object.assign(institucionUsuario, attrs);
return this.repository.save(institucionUsuario);
@ -144,18 +158,15 @@ export class InstitucionUsuarioService {
}
updateMulta(id_institucion: number, id_usuario: number, status: boolean) {
return this.informacionInstitucionUsuarioView
.find({ where: { id_institucion, id_usuario } })
.then(async (infoInstitucionesUsuario) => {
for (let i = 0; i < infoInstitucionesUsuario.length; i++)
await this.repository.save(
this.repository.create({
id_institucion_usuario:
infoInstitucionesUsuario[i].id_institucion_usuario,
multa: status,
}),
);
});
return this.findAllByIdUsuarioIdInstitucion(
id_usuario,
id_institucion,
).then(async (institucionesUsuario) => {
for (let i = 0; i < institucionesUsuario.length; i++) {
institucionesUsuario[i].multa = status;
await this.repository.save(institucionesUsuario[i]);
}
});
}
viewToInstitucionUsuario(

View File

@ -272,10 +272,9 @@ export class MultaService {
}
async quitarMulta(id_institucion_usuario: number) {
const institucionUsuario =
await this.institucionUsuarioService.findInfoInstitucionUsuarioById(
id_institucion_usuario,
);
const institucionUsuario = await this.institucionUsuarioService.findById(
id_institucion_usuario,
);
return this.repository
.createQueryBuilder('mu')

View File

@ -417,7 +417,7 @@ export class UploadFileService {
}
if (usuario) {
let existeInstitucionUsuario =
await this.institucionUsuarioService.findInfoInstitucionUsuarioByIdUsuarioIdInstitucionCarrera(
await this.institucionUsuarioService.findByIdUsuarioIdInstitucionCarrera(
usuario.id_usuario,
institucionCarrera.id_institucion_carrera,
);

View File

@ -54,7 +54,7 @@ export class UsuarioService {
}),
)
.then((usuario) =>
// Le asigno la carrera enviada
// Le asigna la carrera enviada
this.institucionUsuarioService.create(institucionCarrera, usuario),
);
}
@ -134,14 +134,15 @@ export class UsuarioService {
throw new NotFoundException('No existe este usuario.');
const instituciones =
await this.institucionUsuarioService.findFullInfoInstitucionUsuarioAllByIdUsuarioIdInstitucion(
await this.institucionUsuarioService.findFullInfoAllByIdUsuarioIdInstitucion(
infoUsuario.id_usuario,
operador.institucion.id_institucion,
);
// Si el array no trae elementos significa que el usurio existe pero no le pertenece a quien pide la info
if (instituciones.length === 0)
throw new ConflictException(
'Este usuario no pertenece a tu institución',
'Este usuario no pertenece a tu institución.',
);
return this.repository.create({
id_usuario: infoUsuario.id_usuario,
@ -186,6 +187,7 @@ export class UsuarioService {
select: {
id_usuario: true,
correo: true,
nombre: true,
password: true,
usuario: true,
tipoUsuario: { id_tipo_usuario: true },
@ -194,49 +196,6 @@ export class UsuarioService {
});
}
informacionUsuarioByUsuario(usuario: string) {
return this.informacionUsuarioView
.find({ where: { usuario } })
.then((data) => {
const instituciones: {
id_institucion_usuario: number;
institucionCarrera: {
id_institucion_carrera: number;
institucion: { id_institucion: number; institucion: string };
carrera: { id_carrera: number; carrera: string };
};
}[] = [];
if (data.length === 0) return { usuario: null, password: null };
for (let i = 0; i < data.length; i++)
if (data[i].activo && !data[i].multa)
instituciones.push({
id_institucion_usuario: data[i].id_institucion_usuario,
institucionCarrera: {
id_institucion_carrera: data[i].id_institucion_carrera,
institucion: {
id_institucion: data[i].id_institucion,
institucion: data[i].institucion,
},
carrera: {
id_carrera: data[i].id_carrera,
carrera: data[i].carrera,
},
},
});
return {
usuario: {
id_usuario: data[0].id_usuario,
nombre: data[0].nombre,
usuario: data[0].usuario,
instituciones,
tipoUsuario: { id_tipo_usuario: data[0].id_tipo_usuario },
},
password: data[0].password,
};
});
}
passwordReset(id_usuario: number) {
// Genero password
const password = this.bcryptService.generarPassword();
@ -250,7 +209,7 @@ export class UsuarioService {
);
// Asigno nueva password
usuario.password = this.bcryptService.encriptar(password);
// Guardo
// Guardar
return this.repository.save(usuario);
})
.then((usuario) =>
@ -275,37 +234,47 @@ export class UsuarioService {
const institucionCarrera = await this.institucionCarreraService.findById(
id_institucion_carrera,
);
// Genero password
const password = this.bcryptService.generarPassword();
let message: string;
// Busco usuario
return this.findInfoUsuarioByUsuario(usuario, rfc)
.then(async (existeUsuario) => {
// Ai no existe o tiene contraseña, es decir que esta registrado, saca error
if (!existeUsuario || existeUsuario.password)
throw new ConflictException(
'Verificar sus datos, cualquier duda asistir al módulo PC PUMA.',
);
return this.institucionUsuarioService.findFullInfoInstitucionUsuarioByIdUsuarioIdInstitucionCarrera(
// Ver si el alumno pertenece a esta carrera
return this.institucionUsuarioService.findFullInfoByIdUsuarioIdInstitucionCarrera(
existeUsuario,
institucionCarrera.id_institucion_carrera,
);
})
.then((institucionUsuario) => {
// Si no tiene correo saca error
if (!institucionUsuario.usuario.correo)
throw new ConflictException(
'Tu institución no te asignó un correo institucional, dirigete al módulo para solucionarlo.',
);
// variable para guardar la posición del @
const arrobaIndex = institucionUsuario.usuario.correo.indexOf('@');
// Mensaje personalizado, blureando el correo al que se va a enviar las credenciales
message = `Se creó correctamente tu cuenta, mandamos un correo a ...${institucionUsuario.usuario.correo.slice(
arrobaIndex - 3,
)} con tus credenciales para acceder a este servicio.`;
// Asignar datos enviados del front y encriptar la password
institucionUsuario.usuario.telefono = telefono;
institucionUsuario.usuario.password =
this.bcryptService.encriptar(password);
// Guardar
return this.repository.save(institucionUsuario.usuario);
})
.then((usuario) =>
// Enviar credenciales al correo
this.nodemailerService.sendEmail({
email: usuario.correo,
subject: 'Credenciales Pc Puma',
@ -323,7 +292,18 @@ export class UsuarioService {
update(operador: Operador, attrs: Partial<Usuario>) {
return this.findInfoUsuarioById(attrs.id_usuario)
.then((usuario) => {
.then(async (usuario) => {
const institucionesUsuario =
await this.institucionUsuarioService.findAllByIdUsuarioIdInstitucion(
usuario.id_usuario,
operador.institucion.id_institucion,
);
// Si el array no trae elementos significa que el usurio existe pero no le pertenece a quien pide la info
if (institucionesUsuario.length === 0)
throw new ConflictException(
'Este usuario no pertenece a tu institución.',
);
Object.assign(usuario, attrs);
return this.repository.save(usuario);
})