1.1.8 • Published 2 days ago

fiscalia_bo-nest-helpers v1.1.8

Weekly downloads
-
License
MIT
Repository
-
Last release
2 days ago

Descripción

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:

  • MS-FILES: Para su uso debe tener la variable de entorno "ENV_SERVICE_MS_FILES_URL='url del entorno de ms-files'"

test con wrk

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

Compilación antes de publicar

$ tsc

Instalación

$ yarn add fiscalia_bo-nest-helpers

importar servicios

import { MsFilesService } from 'fiscalia_bo-nest-helpers/dist/modules/ms-files';

variables de entorno obligatorios

ENV_SERVICE_MS_FILES_URL='https://ms-files.url'

USO DEL MODULO MS-SEGURIDAD

El módulo MsSeguridadModule proporciona una manera fácil de comunicarse con un servicio de seguridad a través de gRPC.

Modulos disponibles

  • MsSeguridadModule

MsSeguridadModule

para utilizar el servicio de seguridad es necesario importar el modulo MsSeguridadModule

Configuración

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.

Uso

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,
      urlRedisCache: process.env.ENV_GRPC_MS_REDIS_CACHE,
    }),
  ],
  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 con process.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

decoradores disponibles para controller

  • @BearerAuthPermision(), decorador auth que realiza 3 verificaciones antes de entrar a un controller.

    • verifica automaticamente que existe token bearer en el header de la peticion
    • verifica que el token se válido
    • Si este decorador recibe permisos por parametro entonces verifica que cumpla con todos los permisos indicados por parametro
  • @AuthUser(), decorador para obtener los datos del token como ser:

    • ci: string;
    • aplicacionId: number;
    • usuarioId: number;
    • msPersonaId: number;
    • perfilPersonaId: number;
    • funcionarioId?: number;
    • oficinaId?: number;
    • municipioId?: number;
    • institucionId?: number;
    • departamentoId?: number;
  • @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',
    };
  }

MsSeguridadConvenioModule

para utilizar el servicio de seguridad es necesario importar el modulo MsSeguridadConvenioModule

Configuración

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.

Uso

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

decoradores disponibles para controller

  • @BearerConvenioPermision, decorador auth que realiza 3 verificaciones antes de entrar a un controller.

    • verifica automaticamente que existe token bearer en el header de la peticion
    • verifica que el token se válido
    • Si este decorador recibe permisos por parametro entonces verifica que cumpla con todos los permisos indicados por parametro
  • @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',
    };
  }

USO DEL SERVICIO MS-REDISz

Antes 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.

Uso

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 || '' }),
  ],
  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
    }
 }

Servicios disponibles

  • MsRedisService

Nomenclatura de asignacion de key para redis

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`;

USO DEL MODULO MS-PERSONAS

El módulo MsPersonasModule proporciona una manera fácil de comunicarse con un servicio de ms-personas a través de http.

Modulos disponibles

  • MsPersonasModule

Servicios disponibles

  • MsPersonasService

para utilizar el servicio de personas es necesario importar el modulo MsPersonasModule

Configuración

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.

Uso

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

USO DEL MODULO 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.log(error);
          } else {
            console.log('>>>', result);
          }
        },
      );
    } catch (error) {
      console.log(error);
    }
  }
}

Parametros para utilizar el metodo listenQueueMsRabbit

PropiedadValorDescripcion
virtualHostString (null)Host Virtual donde creara una conexion, si este se envia null lo creara automaticamete
queueListenString (null)El canal o queue que desea que escuchar y recibir datos
callbackFunctionCampo necesario para pode recibir en el callback los datos transmitidos

Parametros para utilizar el metodo senderQueueMsRabbit

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

PropiedadValorDescripcion
virtualHostString (null)Host Virtual donde creara una conexion, si este se envia null lo creara automaticamete
queueListenString (null)El canal o queue que desea transmitir datos
dataStringCampo necesario para enviar datos en formato Json String

USO DEL MODULO 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.log(e);
      throw e;
    }
  }
}
1.1.8

2 days ago

1.1.7

2 days ago

1.1.6

5 days ago

1.1.2

5 days ago

1.1.1

12 days ago

1.1.5

12 days ago

1.1.4

12 days ago

1.1.3

12 days ago

1.1.0

18 days ago

1.0.38

18 days ago

1.0.33

19 days ago

1.0.37

18 days ago

1.0.36

18 days ago

1.0.35

18 days ago

1.0.34

19 days ago

1.0.32

19 days ago

1.0.30

19 days ago

1.0.29

22 days ago

0.2.73

1 month ago

0.2.72

1 month ago

1.0.26

1 month ago

1.0.25

1 month ago

1.0.28

1 month ago

1.0.27

1 month ago

1.0.24

1 month ago

1.0.23

1 month ago

1.0.22

1 month ago

1.0.19

1 month ago

1.0.21

1 month ago

1.0.20

1 month ago

1.0.18

1 month ago

1.0.17

1 month ago

1.0.16

1 month ago

1.0.15

1 month ago

1.0.9

1 month ago

1.0.8

1 month ago

1.0.11

1 month ago

1.0.10

1 month ago

1.0.14

1 month ago

1.0.13

1 month ago

1.0.12

1 month ago

1.0.2

1 month ago

1.0.1

1 month ago

1.0.7

1 month ago

1.0.6

1 month ago

1.0.5

1 month ago

0.2.71

2 months ago

0.2.70

2 months ago

0.2.69

2 months ago

0.2.68

2 months ago

0.2.67

2 months ago

0.2.66

2 months ago

0.2.65

2 months ago

0.2.64

2 months ago

0.2.63

2 months ago

0.2.62

2 months ago

0.2.61

2 months ago

0.2.60

2 months ago

0.2.59

3 months ago

0.2.58

3 months ago

0.2.57

3 months ago

0.2.56

3 months ago

0.2.55

3 months ago

0.2.54

3 months ago

0.2.52

3 months ago

0.2.53

3 months ago

0.2.51

4 months ago

0.2.50

4 months ago

0.2.49

5 months ago

0.2.48

5 months ago

0.2.47

5 months ago

0.2.46

5 months ago

0.2.41

5 months ago

0.2.45

5 months ago

0.2.44

5 months ago

0.2.43

5 months ago

0.2.42

5 months ago

0.2.40

5 months ago

0.2.27

5 months ago

0.2.26

5 months ago

0.2.25

5 months ago

0.2.24

5 months ago

0.2.23

6 months ago

0.2.22

6 months ago

0.2.21

6 months ago

0.2.20

6 months ago

0.2.19

6 months ago

0.2.18

6 months ago

0.2.17

6 months ago

0.2.16

6 months ago

0.2.15

6 months ago

0.2.14

6 months ago

0.2.13

6 months ago

0.2.12

7 months ago

0.2.11

7 months ago

0.2.10

7 months ago

0.1.98

7 months ago

0.1.99

7 months ago

0.2.39

5 months ago

0.2.30

5 months ago

0.2.38

5 months ago

0.2.37

5 months ago

0.2.36

5 months ago

0.2.35

5 months ago

0.2.34

5 months ago

0.2.33

5 months ago

0.2.32

5 months ago

0.2.31

5 months ago

0.2.1

7 months ago

0.2.29

5 months ago

0.2.28

5 months ago

0.2.7

7 months ago

0.2.6

7 months ago

0.2.9

7 months ago

0.2.8

7 months ago

0.1.100

7 months ago

0.2.3

7 months ago

0.2.2

7 months ago

0.2.5

7 months ago

0.2.4

7 months ago

0.1.96

7 months ago

0.1.97

7 months ago

0.1.92

8 months ago

0.1.93

7 months ago

0.1.94

7 months ago

0.1.95

7 months ago

0.1.85

8 months ago

0.1.86

8 months ago

0.1.87

8 months ago

0.1.80

8 months ago

0.1.81

8 months ago

0.1.82

8 months ago

0.1.83

8 months ago

0.1.84

8 months ago

0.1.74

8 months ago

0.1.75

8 months ago

0.1.76

8 months ago

0.1.77

8 months ago

0.1.78

8 months ago

0.1.79

8 months ago

0.1.71

8 months ago

0.1.72

8 months ago

0.1.73

8 months ago

0.1.70

9 months ago

0.1.68

9 months ago

0.1.69

9 months ago

0.1.52

10 months ago

0.1.53

10 months ago

0.1.54

10 months ago

0.1.55

10 months ago

0.1.56

10 months ago

0.1.57

10 months ago

0.1.58

10 months ago

0.1.59

10 months ago

0.1.50

11 months ago

0.1.51

10 months ago

0.1.49

11 months ago

0.1.43

11 months ago

0.1.44

11 months ago

0.1.45

11 months ago

0.1.46

11 months ago

0.1.47

11 months ago

0.1.48

11 months ago

0.1.63

10 months ago

0.1.64

10 months ago

0.1.65

10 months ago

0.1.66

9 months ago

0.1.67

9 months ago

0.1.60

10 months ago

0.1.61

10 months ago

0.1.62

10 months ago

0.0.40

12 months ago

0.1.10

12 months ago

0.1.11

12 months ago

0.1.12

12 months ago

0.1.13

12 months ago

0.1.14

12 months ago

0.1.15

11 months ago

0.0.37

12 months ago

0.0.38

12 months ago

0.0.39

12 months ago

0.1.41

11 months ago

0.0.30

12 months ago

0.0.31

12 months ago

0.0.32

12 months ago

0.0.34

12 months ago

0.0.35

12 months ago

0.0.36

12 months ago

0.1.40

11 months ago

0.1.0

12 months ago

0.1.2

12 months ago

0.1.1

12 months ago

0.1.38

11 months ago

0.1.8

12 months ago

0.0.26

12 months ago

0.1.39

11 months ago

0.1.7

12 months ago

0.0.27

12 months ago

0.0.28

12 months ago

0.1.9

12 months ago

0.0.29

12 months ago

0.1.4

12 months ago

0.1.3

12 months ago

0.1.6

12 months ago

0.1.5

12 months ago

0.1.30

11 months ago

0.1.31

11 months ago

0.1.32

11 months ago

0.1.33

11 months ago

0.1.34

11 months ago

0.1.35

11 months ago

0.1.36

11 months ago

0.0.24

12 months ago

0.1.37

11 months ago

0.0.25

12 months ago

0.1.27

11 months ago

0.1.28

11 months ago

0.1.29

11 months ago

0.1.20

11 months ago

0.1.21

11 months ago

0.1.22

11 months ago

0.1.23

11 months ago

0.1.24

11 months ago

0.1.25

11 months ago

0.1.26

11 months ago

0.1.16

11 months ago

0.1.17

11 months ago

0.1.18

11 months ago

0.1.19

11 months ago

0.0.20

1 year ago

0.0.21

1 year ago

0.0.22

1 year ago

0.0.23

1 year ago

0.0.15

1 year ago

0.0.16

1 year ago

0.0.17

1 year ago

0.0.18

1 year ago

0.0.19

1 year ago

0.0.10

1 year ago

0.0.11

1 year ago

0.0.12

1 year ago

0.0.13

1 year ago

0.0.14

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago