aparentemente todo bien
This commit is contained in:
parent
b32d0a2f4a
commit
a177ea884b
@ -74,18 +74,30 @@ export class AuthService {
|
|||||||
|
|
||||||
loginUsuario(usuario: string, password: string) {
|
loginUsuario(usuario: string, password: string) {
|
||||||
return this.usuarioService
|
return this.usuarioService
|
||||||
.informacionUsuarioByUsuario(usuario)
|
.findInfoUsuarioByUsuario(usuario)
|
||||||
.then((data) => {
|
.then((usuario) => {
|
||||||
if (!data.password)
|
if (usuario && !usuario.password)
|
||||||
throw new BadRequestException('Este usuario no ha sido registrado.');
|
throw new BadRequestException('Este usuario no ha sido registrado.');
|
||||||
if (
|
if (
|
||||||
!data.usuario ||
|
!usuario ||
|
||||||
!this.bcryptService.comparar(password, data.password)
|
!this.bcryptService.comparar(password, usuario.password)
|
||||||
)
|
)
|
||||||
throw new BadRequestException(
|
throw new BadRequestException(
|
||||||
'Usuario y/o password incorrectos, ingresa unas credenciales válidas.',
|
'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) };
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ export class InstitucionUsuarioService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
findFullInfoInstitucionUsuarioAllByIdUsuarioIdInstitucion(
|
findFullInfoAllByIdUsuarioIdInstitucion(
|
||||||
id_usuario: number,
|
id_usuario: number,
|
||||||
id_institucion: number,
|
id_institucion: number,
|
||||||
) {
|
) {
|
||||||
@ -79,7 +79,7 @@ export class InstitucionUsuarioService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
findFullInfoInstitucionUsuarioByIdUsuarioIdInstitucionCarrera(
|
findFullInfoByIdUsuarioIdInstitucionCarrera(
|
||||||
usuario: Usuario,
|
usuario: Usuario,
|
||||||
id_institucion_carrera: number,
|
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_usuario: number,
|
||||||
id_institucion_carrera: 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) {
|
save(institucionUsuario: InstitucionUsuario) {
|
||||||
return this.repository.save(institucionUsuario);
|
return this.repository.save(institucionUsuario);
|
||||||
}
|
}
|
||||||
|
|
||||||
update(attrs: Partial<InstitucionUsuario>) {
|
update(attrs: Partial<InstitucionUsuario>) {
|
||||||
return this.findInfoInstitucionUsuarioById(attrs.id_institucion_usuario)
|
return this.findById(attrs.id_institucion_usuario)
|
||||||
.then((institucionUsuario) => {
|
.then((institucionUsuario) => {
|
||||||
Object.assign(institucionUsuario, attrs);
|
Object.assign(institucionUsuario, attrs);
|
||||||
return this.repository.save(institucionUsuario);
|
return this.repository.save(institucionUsuario);
|
||||||
@ -144,18 +158,15 @@ export class InstitucionUsuarioService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
updateMulta(id_institucion: number, id_usuario: number, status: boolean) {
|
updateMulta(id_institucion: number, id_usuario: number, status: boolean) {
|
||||||
return this.informacionInstitucionUsuarioView
|
return this.findAllByIdUsuarioIdInstitucion(
|
||||||
.find({ where: { id_institucion, id_usuario } })
|
id_usuario,
|
||||||
.then(async (infoInstitucionesUsuario) => {
|
id_institucion,
|
||||||
for (let i = 0; i < infoInstitucionesUsuario.length; i++)
|
).then(async (institucionesUsuario) => {
|
||||||
await this.repository.save(
|
for (let i = 0; i < institucionesUsuario.length; i++) {
|
||||||
this.repository.create({
|
institucionesUsuario[i].multa = status;
|
||||||
id_institucion_usuario:
|
await this.repository.save(institucionesUsuario[i]);
|
||||||
infoInstitucionesUsuario[i].id_institucion_usuario,
|
}
|
||||||
multa: status,
|
});
|
||||||
}),
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
viewToInstitucionUsuario(
|
viewToInstitucionUsuario(
|
||||||
|
@ -272,10 +272,9 @@ export class MultaService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async quitarMulta(id_institucion_usuario: number) {
|
async quitarMulta(id_institucion_usuario: number) {
|
||||||
const institucionUsuario =
|
const institucionUsuario = await this.institucionUsuarioService.findById(
|
||||||
await this.institucionUsuarioService.findInfoInstitucionUsuarioById(
|
id_institucion_usuario,
|
||||||
id_institucion_usuario,
|
);
|
||||||
);
|
|
||||||
|
|
||||||
return this.repository
|
return this.repository
|
||||||
.createQueryBuilder('mu')
|
.createQueryBuilder('mu')
|
||||||
|
@ -417,7 +417,7 @@ export class UploadFileService {
|
|||||||
}
|
}
|
||||||
if (usuario) {
|
if (usuario) {
|
||||||
let existeInstitucionUsuario =
|
let existeInstitucionUsuario =
|
||||||
await this.institucionUsuarioService.findInfoInstitucionUsuarioByIdUsuarioIdInstitucionCarrera(
|
await this.institucionUsuarioService.findByIdUsuarioIdInstitucionCarrera(
|
||||||
usuario.id_usuario,
|
usuario.id_usuario,
|
||||||
institucionCarrera.id_institucion_carrera,
|
institucionCarrera.id_institucion_carrera,
|
||||||
);
|
);
|
||||||
|
@ -54,7 +54,7 @@ export class UsuarioService {
|
|||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
.then((usuario) =>
|
.then((usuario) =>
|
||||||
// Le asigno la carrera enviada
|
// Le asigna la carrera enviada
|
||||||
this.institucionUsuarioService.create(institucionCarrera, usuario),
|
this.institucionUsuarioService.create(institucionCarrera, usuario),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -134,14 +134,15 @@ export class UsuarioService {
|
|||||||
throw new NotFoundException('No existe este usuario.');
|
throw new NotFoundException('No existe este usuario.');
|
||||||
|
|
||||||
const instituciones =
|
const instituciones =
|
||||||
await this.institucionUsuarioService.findFullInfoInstitucionUsuarioAllByIdUsuarioIdInstitucion(
|
await this.institucionUsuarioService.findFullInfoAllByIdUsuarioIdInstitucion(
|
||||||
infoUsuario.id_usuario,
|
infoUsuario.id_usuario,
|
||||||
operador.institucion.id_institucion,
|
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)
|
if (instituciones.length === 0)
|
||||||
throw new ConflictException(
|
throw new ConflictException(
|
||||||
'Este usuario no pertenece a tu institución',
|
'Este usuario no pertenece a tu institución.',
|
||||||
);
|
);
|
||||||
return this.repository.create({
|
return this.repository.create({
|
||||||
id_usuario: infoUsuario.id_usuario,
|
id_usuario: infoUsuario.id_usuario,
|
||||||
@ -186,6 +187,7 @@ export class UsuarioService {
|
|||||||
select: {
|
select: {
|
||||||
id_usuario: true,
|
id_usuario: true,
|
||||||
correo: true,
|
correo: true,
|
||||||
|
nombre: true,
|
||||||
password: true,
|
password: true,
|
||||||
usuario: true,
|
usuario: true,
|
||||||
tipoUsuario: { id_tipo_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) {
|
passwordReset(id_usuario: number) {
|
||||||
// Genero password
|
// Genero password
|
||||||
const password = this.bcryptService.generarPassword();
|
const password = this.bcryptService.generarPassword();
|
||||||
@ -250,7 +209,7 @@ export class UsuarioService {
|
|||||||
);
|
);
|
||||||
// Asigno nueva password
|
// Asigno nueva password
|
||||||
usuario.password = this.bcryptService.encriptar(password);
|
usuario.password = this.bcryptService.encriptar(password);
|
||||||
// Guardo
|
// Guardar
|
||||||
return this.repository.save(usuario);
|
return this.repository.save(usuario);
|
||||||
})
|
})
|
||||||
.then((usuario) =>
|
.then((usuario) =>
|
||||||
@ -275,37 +234,47 @@ export class UsuarioService {
|
|||||||
const institucionCarrera = await this.institucionCarreraService.findById(
|
const institucionCarrera = await this.institucionCarreraService.findById(
|
||||||
id_institucion_carrera,
|
id_institucion_carrera,
|
||||||
);
|
);
|
||||||
|
// Genero password
|
||||||
const password = this.bcryptService.generarPassword();
|
const password = this.bcryptService.generarPassword();
|
||||||
let message: string;
|
let message: string;
|
||||||
|
|
||||||
|
// Busco usuario
|
||||||
return this.findInfoUsuarioByUsuario(usuario, rfc)
|
return this.findInfoUsuarioByUsuario(usuario, rfc)
|
||||||
.then(async (existeUsuario) => {
|
.then(async (existeUsuario) => {
|
||||||
|
// Ai no existe o tiene contraseña, es decir que esta registrado, saca error
|
||||||
if (!existeUsuario || existeUsuario.password)
|
if (!existeUsuario || existeUsuario.password)
|
||||||
throw new ConflictException(
|
throw new ConflictException(
|
||||||
'Verificar sus datos, cualquier duda asistir al módulo PC PUMA.',
|
'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,
|
existeUsuario,
|
||||||
institucionCarrera.id_institucion_carrera,
|
institucionCarrera.id_institucion_carrera,
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
.then((institucionUsuario) => {
|
.then((institucionUsuario) => {
|
||||||
|
// Si no tiene correo saca error
|
||||||
if (!institucionUsuario.usuario.correo)
|
if (!institucionUsuario.usuario.correo)
|
||||||
throw new ConflictException(
|
throw new ConflictException(
|
||||||
'Tu institución no te asignó un correo institucional, dirigete al módulo para solucionarlo.',
|
'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('@');
|
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(
|
message = `Se creó correctamente tu cuenta, mandamos un correo a ...${institucionUsuario.usuario.correo.slice(
|
||||||
arrobaIndex - 3,
|
arrobaIndex - 3,
|
||||||
)} con tus credenciales para acceder a este servicio.`;
|
)} con tus credenciales para acceder a este servicio.`;
|
||||||
|
// Asignar datos enviados del front y encriptar la password
|
||||||
institucionUsuario.usuario.telefono = telefono;
|
institucionUsuario.usuario.telefono = telefono;
|
||||||
institucionUsuario.usuario.password =
|
institucionUsuario.usuario.password =
|
||||||
this.bcryptService.encriptar(password);
|
this.bcryptService.encriptar(password);
|
||||||
|
// Guardar
|
||||||
return this.repository.save(institucionUsuario.usuario);
|
return this.repository.save(institucionUsuario.usuario);
|
||||||
})
|
})
|
||||||
.then((usuario) =>
|
.then((usuario) =>
|
||||||
|
// Enviar credenciales al correo
|
||||||
this.nodemailerService.sendEmail({
|
this.nodemailerService.sendEmail({
|
||||||
email: usuario.correo,
|
email: usuario.correo,
|
||||||
subject: 'Credenciales Pc Puma',
|
subject: 'Credenciales Pc Puma',
|
||||||
@ -323,7 +292,18 @@ export class UsuarioService {
|
|||||||
|
|
||||||
update(operador: Operador, attrs: Partial<Usuario>) {
|
update(operador: Operador, attrs: Partial<Usuario>) {
|
||||||
return this.findInfoUsuarioById(attrs.id_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);
|
Object.assign(usuario, attrs);
|
||||||
return this.repository.save(usuario);
|
return this.repository.save(usuario);
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user