
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
fiscalia_bo-nest-helpers
Advanced tools
Helpers para proyectos de NestJS FEG-MP.
Este proyecto esta orientado a la publicación de helpers básicos al momento de iniciar un proyecto nuevo de NESTJS.
De momento se tienen los siguientes servicios:
wrk -t10 -c400 -d15s http://172.27.39.12:3015/v1/application/types
wrk -t10 -c400 -d15s http://172.27.39.12:3015/v1/application/types/tcp
wrk -t10 -c400 -d15s http://172.27.39.12:3015/v1/application/types/grpc
$ tsc
$ yarn add fiscalia_bo-nest-helpers
import { MsFilesService } from 'fiscalia_bo-nest-helpers/dist/modules/ms-files';
ENV_SERVICE_MS_FILES_URL='https://ms-files.url'
MS-SEGURIDAD
El módulo MsSeguridadModule proporciona una manera fácil de comunicarse con un servicio de seguridad a través de gRPC.
para utilizar el servicio de seguridad es necesario importar el modulo MsSeguridadModule
Antes de utilizar el módulo, asegúrese de tener las siguientes variables de entorno configuradas:
ENV_APP_NAME
: el el codigo de la aplicacion registrado en rrhh.ENV_GRPC_MS_SEGURIDAD
: la URL del servidor de seguridad a través de gRPC.ENV_GRPC_MS_REDIS_CACHE
: la URL del servidor de cacheo de redis a través de gRPC.Para utilizar el módulo, primero importe MsSeguridadModule
en su módulo principal:
import { Module } from '@nestjs/common';
import { MsSeguridadModule } from 'fiscalia_bo-nest-helpers/dist/modules/ms-seguridad';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
// Register ms-seguridad module global
MsSeguridadModule.register({
global: true,
applicationCodeTag: process.env.ENV_APP_NAME,
urlSeguridad: process.env.ENV_GRPC_MS_SEGURIDAD,
// parametros redis
urlRedisCache: process.env.ENV_GRPC_MS_REDIS_CACHE,
tcpHostMsRedis: '127.0.0.1',
tcpPortMsRedis: 8000,
// Todos los parametros de redis son opcionales pero necesita o el de grpc o los de tcp para funcionar
tcpHostMsRedis: '127.0.0.1',
tcpPortMsRedis: 8000,
}),
],
controllers: [],
providers: [],
})
export class AppModule {}
NOTA IMPORTANTE: previo al uso del modulO debe importarse el
ConfigModule
de nestjs y configurarlo para uso global
NOTA IMPORTANTE: si se agrega el parametro
applicationCodeTag
en ModuleSeguridad entonces se validara que el el token conprocess.env.ENV_APP_NAME
de la applicacion
En este ejemplo, estamos utilizando el método register para cargar la configuración de forma síncrona
@BearerAuthPermision()
, decorador auth que realiza 3 verificaciones antes de entrar a un controller.
token bearer
en el header de la peticion@AuthUser()
, decorador para obtener los datos del token como ser:
@AuthToken()
, decorador para obtener el token de tipo string
@AuthPermissions()
, decorador para obtener la lista de permisos, devuelve array de string.
ejempos de uso:
// EJEMPLO 1
@Get(':id')
@BearerAuthPermision()
findOne(@Param('id') id: number) {
return this.casosPersonaService.findOne(+id);
}
// EJEMPLO 2
@Post('test-seguridad')
@BearerAuthPermision(['ALGUN_PERMISOS'])
async test(
@Body() body: TokenBody,
@AuthUser() user: UserPayload, // controlador
@AuthToken() token: string,
@AuthPermissions() permissions: string[],
) {
return {
some: 'algo',
};
}
para utilizar el servicio de seguridad es necesario importar el modulo MsSeguridadConvenioModule
Antes de utilizar el módulo, asegúrese de tener las siguientes variables de entorno configuradas:
ENV_GRPC_MS_SEGURIDAD
: la URL del servidor de seguridad a través de gRPC.Para utilizar el módulo, primero importe MsSeguridadConvenioModule
en su módulo principal:
import { Module } from '@nestjs/common';
import { MsSeguridadConvenioModule } from 'fiscalia_bo-nest-helpers/seguridad';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
// Register ms-seguridad-convenio module global
MsSeguridadConvenioModule.register({
global: true,
urlSeguridad: process.env.ENV_GRPC_MS_SEGURIDAD,
}),
],
controllers: [],
providers: [],
})
export class AppModule {}
NOTA IMPORTANTE: previo al uso del modulO debe importarse el
ConfigModule
de nestjs y configurarlo para uso global
En este ejemplo, estamos utilizando el método register para cargar la configuración de forma síncrona
@BearerConvenioPermision
, decorador auth que realiza 3 verificaciones antes de entrar a un controller.
token bearer
en el header de la peticion@GetTokenConvenio()
, decorador para obtener los datos del token:
@ConvenioToken()
, decorador para obtener el token de tipo string
@ConvenioPermissions()
, decorador para obtener la lista de permisos, devuelve array de string.
ejempos de uso:
// EJEMPLO 1
@Get(':id')
@BearerConvenioPermision()
findOne(@Param('id') id: number) {
return {
some: 'retornando servicio sin permiso pero con token valido'
};
}
// EJEMPLO 2
@Post('test-seguridad')
@BearerConvenioPermision(['ALGUN_PERMISOS'])
async test(
@Body() body: TokenBody,
@ConvenioToken() user: UserPayload, // controlador
@AuthToken() token: string,
@GetTokenConvenio() permissions: string[],
) {
return {
some: 'retornando servicio con permiso',
};
}
MS-REDIS
zAntes de utilizar el módulo, asegúrese de tener las siguientes variables de entorno configuradas:
ENV_GRPC_MS_REDIS_CACHE
: la URL del servidor de cacheo de redis a través de gRPC.Para utilizar el módulo, primero importe MsRedisModule
en su módulo principal:
import { Module } from '@nestjs/common';
import { MsRedisModule } from 'fiscalia_bo-nest-helpers/seguridad';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
// Register ms-seguridad module global
MsRedisModule.register({
urlRedisCache: process.env.ENV_GRPC_MS_REDIS_CACHE || '',
tcpHostMsRedis: '127.0.0.1',
tcpPortMsRedis: 8000,
// Todos los parametros de redis son opcionales pero necesita o el de grpc o los de tcp para funcionar
}),
],
controllers: [],
providers: [],
})
export class AppModule {}
Configuracion de Paquete en el archivo my.montroller.ts
import { DatapassInterceptor } from 'ms-redis-cliente'
@Get('/my-rest-api')
//db: es la base de datos en la cual se trabajara es opcional por defecto se guarda en la 0
@SetMetadata("data-cache", {key:"key-name-cache",ttl:15,db:0})
@UseInterceptors(DatapassInterceptor)
/*Configuracion de Res() obligatoria
{ passthrough: true }
Configuracion de Res() obligatoria*/
async myRestApi(@Res({ passthrough: true }) res) {
try {
/*Configuracion de respuesta obligatoria*/
const getResponse = await this.appService.getRestApiTWo()
return getResponse
/*Configuracion de respuesta obligatoria*/
} catch (error) {
/*Configuracion de respuesta de error obligatoria*/
throw error
}
}
aplicacion-name:key_One-key_Two-key_Three-keyAcction
ejemplo de asignacion de key para redis
const keyCache = `ms-seguridad:usuarioId_${usuarioId}-aplicacionId_${aplicacionId}-permisos`;
MS-PERSONAS
El módulo MsPersonasModule proporciona una manera fácil de comunicarse con un servicio de ms-personas a través de http.
para utilizar el servicio de personas es necesario importar el modulo MsPersonasModule
Antes de utilizar el módulo, asegúrese de tener las siguientes variables de entorno configuradas o enviar la variable de entorno definida:
ENV_SERVICE_MS_PERSONAS
: la URL del servidor de seguridad a través de gRPC.Para utilizar el módulo, primero importe MsPersonasModule
en su módulo principal:
import { Module } from '@nestjs/common';
import { MsPersonasModule } from 'fiscalia_bo-nest-helpers/dist/ms-personas';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
// Register ms-personas module global
MsPersonasModule.register({
global: true,
urlMsPersonas: process.env.ENV_SERVICE_MS_PERSONAS,
}),
],
controllers: [],
providers: [],
})
export class AppModule {}
NOTA IMPORTANTE: previo al uso del modulO debe importarse el
ConfigModule
de nestjs y configurarlo para uso global
En este ejemplo, estamos utilizando el método register para cargar la configuración de forma síncrona
MS-RABBITMQ
Configuracion de Paquete en el archivo app.module.ts
import { MsRabbitModule } from 'fiscalia_bo-nest-helpers';
@Module({
imports: [
MsRabbitModule.register({
global: true,
urlRabbit: process.env.ENV_SERVICE_MS_RABBIT_URL,
}),
],
controllers: [],
providers: [],
})
export class AppModule {}
Configuracion para escuchar un canal especifico de rabbit
import { MsRabbitService } from 'fiscalia_bo-nest-helpers';
@Injectable()
export class AppService {
constructor(private readonly msRabbitService: MsRabbitService) {}
async onModuleInit() {
try {
await this.msRabbitService.listenQueueMsRabbit(
{ virtualhost: 'blade_host_virtual', queueListen: 'tasks' },
(error, result) => {
if (error) {
console.error(error);
} else {
console.log('>>>', result);
}
},
);
} catch (error) {
console.error(error);
}
}
}
Propiedad | Valor | Descripcion |
---|---|---|
virtualHost | String (null) | Host Virtual donde creara una conexion, si este se envia null lo creara automaticamete |
queueListen | String (null) | El canal o queue que desea que escuchar y recibir datos |
callback | Function | Campo necesario para pode recibir en el callback los datos transmitidos |
Se pueden utilizar el servicio
Debe realizar la configuracion de Paquete en su archivo my.service.ts
import { RabbitServiceClient } from 'ms-rabbit-cliente';
@Injectable()
export class AppService {
constructor(private rabbitServiceClient: RabbitServiceClient) {}
async MyService() {
await this.msRabbitService.senderQueueMsRabbit(
{ virtualhost: 'blade_host_virtual', queueListen: 'tasks' },
JSON.stringify({ a: 'holamundo' }),
);
}
}
Descripcion de los objecto para envio de datos
Propiedad | Valor | Descripcion |
---|---|---|
virtualHost | String (null) | Host Virtual donde creara una conexion, si este se envia null lo creara automaticamete |
queueListen | String (null) | El canal o queue que desea transmitir datos |
data | String | Campo necesario para enviar datos en formato Json String |
MS-LOGS
Configuracion de Paquete en el archivo app.module.ts
import { MsLogsModule } from 'fiscalia_bo-nest-helpers';
@Module({
imports: [
MsLogsModule.register({
global: true,
urlMsLogs: process.env.ENV_SERVICE_MS_LOGS,
}),
],
controllers: [],
providers: [],
})
export class AppModule {}
Servicios Disponibles para el uso de logs
import { MsLogsService } from 'fiscalia_bo-nest-helpers';
@Injectable()
export class AppService {
constructor(private readonly msLogsService: MsLogsService) {}
async test_services_logs() {
try {
await this.msLogsService.generateLogLogin({
aplicacion: 'jl1',
funcionario_id: 1,
funcionario_ci: '51234124',
funcionario_nombre: 'Javier Contreras Mamani',
dispositivo_ip: '192.168.0.1',
dispositivo_so: 'Windows 11',
dispositivo_navegador: 'Chrome 99',
});
await this.msLogsService.generateLogView({
aplicacion: 'jl2',
apartado: 'caso',
apartado_info_extra: 'cud: 3143233',
tabla_id: 'string',
tabla_nombre: 'vacaciones',
funcionario_id: 1,
funcionario_ci: '51234124',
funcionario_nombre: 'Javier Contreras Mamani',
dispositivo_ip: '192.168.0.1',
dispositivo_so: 'Windows 11',
dispositivo_navegador: 'Chrome 99',
});
await this.msLogsService.generateLogEvents({
aplicacion: 'jl2',
evento: 'editar',
tabla_id: '1001',
tabla_nombre: 'vacaciones',
tabla_pre_cambios: '{id:123,nombre:"misnombre"}',
request: 'PUT /listar/vacaciones',
funcionario_id: 1,
funcionario_ci: '5131343',
funcionario_nombre: 'Javier Contreras Mamani',
dispositivo_ip: '192.168.0.1',
dispositivo_so: 'Windows 11',
dispositivo_navegador: 'Chrome 99',
});
await this.msLogsService.generateLogError({
aplicacion: 'jl2',
evento: 'Listar vacaciones',
tabla_id: 'string',
tabla_nombre: 'vacaciones',
request: 'POST /listar/vacaciones',
error_string_json: 'string',
});
} catch (e) {
console.error(e);
throw e;
}
}
}
FAQs
Helpers y servicios para NestJS
The npm package fiscalia_bo-nest-helpers receives a total of 238 weekly downloads. As such, fiscalia_bo-nest-helpers popularity was classified as not popular.
We found that fiscalia_bo-nest-helpers demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.