Merge branch 'pmodulos' of https://repositorio.acatlan.unam.mx/CIDWA/pcpuma_unam_api
This commit is contained in:
commit
507e4fbf2b
@ -7,15 +7,14 @@ import { AuthService } from './auth.service';
|
||||
import { LoginAdminDto } from './dto/input/login-admin.dto';
|
||||
import { LoginOperadorDto } from './dto/input/login-operador.dto';
|
||||
import { LoginUsuarioDto } from './dto/input/login-usuario.dto';
|
||||
import { AuthOperadorOutputDto } from './dto/output/operador.dto';
|
||||
import { AuthUsuarioOutputDto } from './dto/output/usuario.dto';
|
||||
import { AuthTokenOutputDto } from './dto/output/token.dto';
|
||||
|
||||
@Controller('auth')
|
||||
@ApiTags('auth')
|
||||
export class AuthController {
|
||||
constructor(private authService: AuthService) {}
|
||||
|
||||
@Serealize(AuthOperadorOutputDto)
|
||||
@Serealize(AuthTokenOutputDto)
|
||||
@Recaptcha()
|
||||
@Post('login-admin')
|
||||
@ApiOperation({
|
||||
@ -36,7 +35,7 @@ export class AuthController {
|
||||
return this.authService.loginAdmin(body.operador, body.password);
|
||||
}
|
||||
|
||||
@Serealize(AuthOperadorOutputDto)
|
||||
@Serealize(AuthTokenOutputDto)
|
||||
@Recaptcha()
|
||||
@Post('login-operador')
|
||||
@ApiOperation({
|
||||
@ -62,7 +61,7 @@ export class AuthController {
|
||||
);
|
||||
}
|
||||
|
||||
@Serealize(AuthUsuarioOutputDto)
|
||||
@Serealize(AuthTokenOutputDto)
|
||||
@Recaptcha()
|
||||
@Post('login-usuario')
|
||||
@ApiOperation({
|
||||
|
@ -30,7 +30,14 @@ export class AuthService {
|
||||
|
||||
const payload: JwtPayload = {
|
||||
id_operador: operador.id_operador,
|
||||
id_tipo_usuario: operador.tipoUsuario.id_tipo_usuario,
|
||||
nombre: operador.nombre,
|
||||
operador: operador.operador,
|
||||
institucion: operador.institucion
|
||||
? { id_instituion: operador.institucion.id_institucion }
|
||||
: null,
|
||||
tipoUsuario: {
|
||||
id_tipo_usuario: operador.tipoUsuario.id_tipo_usuario,
|
||||
},
|
||||
};
|
||||
|
||||
return { operador, token: this.jwtService.sign(payload) };
|
||||
@ -53,12 +60,19 @@ export class AuthService {
|
||||
);
|
||||
|
||||
const payload: JwtPayload = {
|
||||
id_modulo: modulo.id_modulo,
|
||||
id_operador: operador.id_operador,
|
||||
id_tipo_usuario: operador.tipoUsuario.id_tipo_usuario,
|
||||
id_modulo: modulo.id_modulo,
|
||||
nombre: operador.nombre,
|
||||
operador: operador.operador,
|
||||
institucion: operador.institucion
|
||||
? { id_instituion: operador.institucion.id_institucion }
|
||||
: null,
|
||||
tipoUsuario: {
|
||||
id_tipo_usuario: operador.tipoUsuario.id_tipo_usuario,
|
||||
},
|
||||
};
|
||||
|
||||
return { operador, token: this.jwtService.sign(payload) };
|
||||
return { token: this.jwtService.sign(payload) };
|
||||
});
|
||||
}
|
||||
|
||||
@ -68,9 +82,48 @@ export class AuthService {
|
||||
.then((usuario) => {
|
||||
this.validarLogin(usuario, password);
|
||||
|
||||
const instituciones: {
|
||||
id_institucion_usuario: number;
|
||||
institucionCarrera: {
|
||||
id_institucion_carrera: number;
|
||||
institucion: { id_institucion: number };
|
||||
carrera: { id_carrera: number };
|
||||
};
|
||||
}[] = [];
|
||||
|
||||
for (let i = 0; i < usuario.instituciones.length; i++)
|
||||
if (
|
||||
usuario.instituciones[i].activo &&
|
||||
!usuario.instituciones[i].multa
|
||||
)
|
||||
instituciones.push({
|
||||
id_institucion_usuario:
|
||||
usuario.instituciones[i].id_institucion_usuario,
|
||||
institucionCarrera: {
|
||||
id_institucion_carrera:
|
||||
usuario.instituciones[i].institucionCarrera
|
||||
.id_institucion_carrera,
|
||||
carrera: {
|
||||
id_carrera:
|
||||
usuario.instituciones[i].institucionCarrera.carrera
|
||||
.id_carrera,
|
||||
},
|
||||
institucion: {
|
||||
id_institucion:
|
||||
usuario.instituciones[i].institucionCarrera.institucion
|
||||
.id_institucion,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const payload: JwtPayload = {
|
||||
id_usuario: usuario.id_usuario,
|
||||
id_tipo_usuario: usuario.tipoUsuario.id_tipo_usuario,
|
||||
nombre: usuario.nombre,
|
||||
usuario: usuario.usuario,
|
||||
instituciones: instituciones,
|
||||
tipoUsuario: {
|
||||
id_tipo_usuario: usuario.tipoUsuario.id_tipo_usuario,
|
||||
},
|
||||
};
|
||||
|
||||
return { token: this.jwtService.sign(payload), usuario };
|
||||
|
@ -1,9 +1,26 @@
|
||||
export class JwtPayload {
|
||||
id_tipo_usuario: number;
|
||||
nombre: string;
|
||||
|
||||
tipoUsuario: { id_tipo_usuario: number };
|
||||
|
||||
id_modulo?: number;
|
||||
|
||||
id_operador?: number;
|
||||
|
||||
id_usuario?: number;
|
||||
|
||||
operador?: string;
|
||||
|
||||
usuario?: string;
|
||||
|
||||
institucion?: { id_instituion: number };
|
||||
|
||||
instituciones?: {
|
||||
id_institucion_usuario: number;
|
||||
institucionCarrera: {
|
||||
id_institucion_carrera: number;
|
||||
institucion: { id_institucion: number };
|
||||
carrera: { id_carrera: number };
|
||||
};
|
||||
}[];
|
||||
}
|
||||
|
@ -1,11 +0,0 @@
|
||||
import { Expose, Type } from 'class-transformer';
|
||||
import { OperadorOutputDto } from '../../../operador/dto/output/operador.dto';
|
||||
|
||||
export class AuthOperadorOutputDto {
|
||||
@Expose()
|
||||
@Type(() => OperadorOutputDto)
|
||||
operador;
|
||||
|
||||
@Expose()
|
||||
token;
|
||||
}
|
6
src/auth/dto/output/token.dto.ts
Normal file
6
src/auth/dto/output/token.dto.ts
Normal file
@ -0,0 +1,6 @@
|
||||
import { Expose } from 'class-transformer';
|
||||
|
||||
export class AuthTokenOutputDto {
|
||||
@Expose()
|
||||
token;
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
import { Expose, Type } from 'class-transformer';
|
||||
import { UsuariosOutputDto } from '../../../usuario/dto/output/usuarios.dto';
|
||||
|
||||
export class AuthUsuarioOutputDto {
|
||||
@Expose()
|
||||
token;
|
||||
|
||||
@Expose()
|
||||
@Type(() => UsuariosOutputDto)
|
||||
usuario;
|
||||
}
|
@ -19,9 +19,9 @@ export class BcryptService {
|
||||
}
|
||||
|
||||
generarPassword = () => {
|
||||
const length = 8;
|
||||
const length = 10;
|
||||
const charset =
|
||||
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
||||
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-@#$%&=?¿*()/_-';
|
||||
let password = '';
|
||||
|
||||
for (let i = 0; i < length; i++)
|
||||
|
@ -98,10 +98,6 @@ export class UsuarioService {
|
||||
/* Falta conexión a soap */
|
||||
if (existeUsuario.password)
|
||||
throw new ConflictException('Ya fue regisrado este número de cuenta.');
|
||||
// if (!existeUsuario.activo)
|
||||
// throw new ConflictException(
|
||||
// 'No se puede registar con este número de cuenta por que se encuentra desactivado.',
|
||||
// );
|
||||
return this.institucionUsuarioService.findByUsuarioInstitucionCarrera(
|
||||
existeUsuario,
|
||||
institucionCarrera,
|
||||
@ -116,28 +112,28 @@ export class UsuarioService {
|
||||
id_institucion,
|
||||
1,
|
||||
);
|
||||
const query = this.repository
|
||||
|
||||
return 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 && rfc = :rfc', { usuario, rfc });
|
||||
|
||||
return query.getOne().then((usuario) => {
|
||||
if (!usuario) throw new NotFoundException('No existe este usuario.');
|
||||
if (usuario.password)
|
||||
throw new ConflictException(
|
||||
'Ya fue regisrado este número de trabajador.',
|
||||
.where('usuario = :usuario && rfc = :rfc', { usuario, rfc })
|
||||
.getOne()
|
||||
.then((usuario) => {
|
||||
if (!usuario) throw new NotFoundException('No existe este usuario.');
|
||||
if (usuario.password)
|
||||
throw new ConflictException(
|
||||
'Ya fue regisrado este número de trabajador.',
|
||||
);
|
||||
return this.institucionUsuarioService.findByUsuarioInstitucionCarrera(
|
||||
usuario,
|
||||
institucionCarrera,
|
||||
'trabajador',
|
||||
);
|
||||
return this.institucionUsuarioService.findByUsuarioInstitucionCarrera(
|
||||
usuario,
|
||||
institucionCarrera,
|
||||
'trabajador',
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async findAll(filtros: {
|
||||
|
Loading…
Reference in New Issue
Block a user