listo auth
This commit is contained in:
parent
85b9709ecb
commit
4417ac9fa1
@ -29,6 +29,7 @@ export class AuthService {
|
|||||||
this.validacionBasica(admin, password);
|
this.validacionBasica(admin, password);
|
||||||
this.validacionOperador(admin);
|
this.validacionOperador(admin);
|
||||||
|
|
||||||
|
// Creo payload apartir de la interface que le corresponde a este tipo de usaurio
|
||||||
const JwtPayload: JwtPayloadAdmin = {
|
const JwtPayload: JwtPayloadAdmin = {
|
||||||
Operador: {
|
Operador: {
|
||||||
id_operador: admin.id_operador,
|
id_operador: admin.id_operador,
|
||||||
@ -39,6 +40,7 @@ export class AuthService {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// "Firmo"/creo el token
|
||||||
return { token: this.jwtService.sign(JwtPayload) };
|
return { token: this.jwtService.sign(JwtPayload) };
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -52,6 +54,7 @@ export class AuthService {
|
|||||||
this.validacionBasica(operador, password);
|
this.validacionBasica(operador, password);
|
||||||
this.validacionOperador(operador);
|
this.validacionOperador(operador);
|
||||||
|
|
||||||
|
// Creo payload apartir de la interface que le corresponde a este tipo de usaurio
|
||||||
const JwtPayload: JwtPayloadOperador = {
|
const JwtPayload: JwtPayloadOperador = {
|
||||||
Operador: {
|
Operador: {
|
||||||
id_operador: operador.id_operador,
|
id_operador: operador.id_operador,
|
||||||
@ -66,6 +69,7 @@ export class AuthService {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// "Firmo"/creo el token
|
||||||
if (operador.tipoUsuario.id_tipo_usuario === 4)
|
if (operador.tipoUsuario.id_tipo_usuario === 4)
|
||||||
JwtPayload.Modulo.id_modulo = modulo.id_modulo;
|
JwtPayload.Modulo.id_modulo = modulo.id_modulo;
|
||||||
return { token: this.jwtService.sign(JwtPayload) };
|
return { token: this.jwtService.sign(JwtPayload) };
|
||||||
@ -76,10 +80,12 @@ export class AuthService {
|
|||||||
return this.usuarioService
|
return this.usuarioService
|
||||||
.findInfoUsuarioByUsuario(usuario)
|
.findInfoUsuarioByUsuario(usuario)
|
||||||
.then((usuario) => {
|
.then((usuario) => {
|
||||||
|
// Sin password = no registrado, valida que este registrado
|
||||||
if (usuario && !usuario.password)
|
if (usuario && !usuario.password)
|
||||||
throw new BadRequestException('Este usuario no ha sido registrado.');
|
throw new BadRequestException('Este usuario no ha sido registrado.');
|
||||||
this.validacionBasica(usuario, password);
|
this.validacionBasica(usuario, password);
|
||||||
|
|
||||||
|
// Creo payload apartir de la interface que le corresponde a este tipo de usaurio
|
||||||
const JwtPayload: JwtPayloadUsuario = {
|
const JwtPayload: JwtPayloadUsuario = {
|
||||||
Usuario: {
|
Usuario: {
|
||||||
id_usuario: usuario.id_usuario,
|
id_usuario: usuario.id_usuario,
|
||||||
@ -91,6 +97,7 @@ export class AuthService {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// "Firmo"/creo el token
|
||||||
return { token: this.jwtService.sign(JwtPayload) };
|
return { token: this.jwtService.sign(JwtPayload) };
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -21,27 +21,37 @@ export class JwtStrategyService extends PassportStrategy(Strategy) {
|
|||||||
private usuarioService: UsuarioService,
|
private usuarioService: UsuarioService,
|
||||||
) {
|
) {
|
||||||
super({
|
super({
|
||||||
|
// Configuración de JWT
|
||||||
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
|
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
|
||||||
secretOrKey: configService.get<string>('AUTH_SECRETKEY'),
|
secretOrKey: configService.get<string>('AUTH_SECRETKEY'),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Función que se ejecuta despues de aceptar un token valido
|
||||||
async validate(
|
async validate(
|
||||||
|
// Payload del JWT que mandó el client
|
||||||
payload: JwtPayloadAdmin | JwtPayloadOperador | JwtPayloadUsuario,
|
payload: JwtPayloadAdmin | JwtPayloadOperador | JwtPayloadUsuario,
|
||||||
) {
|
) {
|
||||||
const user: { modulo?: Modulo; usuario?: Usuario; operador?: Operador } =
|
const user: { modulo?: Modulo; usuario?: Usuario; operador?: Operador } =
|
||||||
{};
|
{};
|
||||||
|
|
||||||
|
// Si el token contiene un objeto Usuario en el
|
||||||
if ('Usuario' in payload)
|
if ('Usuario' in payload)
|
||||||
|
// Buscar a ese usuario en la db y lo asigna al objeto user
|
||||||
await this.usuarioService
|
await this.usuarioService
|
||||||
.findInfoUsuarioById(payload.Usuario.id_usuario)
|
.findInfoUsuarioById(payload.Usuario.id_usuario)
|
||||||
.then((usuario) => (user.usuario = usuario));
|
.then((usuario) => (user.usuario = usuario));
|
||||||
|
// Si el token contiene un objeto Operador en el
|
||||||
else if ('Operador' in payload)
|
else if ('Operador' in payload)
|
||||||
|
// Buscar a ese operador en la db y lo asigna al objeto user
|
||||||
await this.operadorService
|
await this.operadorService
|
||||||
.findInfoOperadorById(payload.Operador.id_operador)
|
.findInfoOperadorById(payload.Operador.id_operador)
|
||||||
.then(async (operador) => {
|
.then(async (operador) => {
|
||||||
|
// Valida que la cuena del operador este activa
|
||||||
if (!operador.activo)
|
if (!operador.activo)
|
||||||
throw new ForbiddenException('Esta cuenta esta desactivada.');
|
throw new ForbiddenException('Esta cuenta esta desactivada.');
|
||||||
|
// Validar que venga en el payload venga con un objeto Modulo en
|
||||||
|
// caso de ser tipo usuario operador y asignarlo al objeto user
|
||||||
if (operador.tipoUsuario.id_tipo_usuario === 4) {
|
if (operador.tipoUsuario.id_tipo_usuario === 4) {
|
||||||
if ('Modulo' in payload)
|
if ('Modulo' in payload)
|
||||||
await this.moduloService
|
await this.moduloService
|
||||||
@ -54,6 +64,8 @@ export class JwtStrategyService extends PassportStrategy(Strategy) {
|
|||||||
}
|
}
|
||||||
user.operador = operador;
|
user.operador = operador;
|
||||||
});
|
});
|
||||||
|
// Este objeto retornado se encuentra en el objeto request
|
||||||
|
// (El ojbeto que recibe toda la información de la petición)
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user