# sentinel-nest-core

## Description
Librairie destinée aux backs NestJS qui se connectent au serveur Sentinel.<br :>
Elle permet de gérer simplement les permissions d'accès aux APIs et de mettre en place un logger.

## Logger

Le logger est basé sur le paquet `winston` et `winston-daily-rotate-file`.<br />
Les fichiers logs sont dans le répertoire `log`.<br />
ATTENTION : il n'y a pas de gestion de suppression des fichiers actuellement.

### Installation et utilisation

```ts
// constructor
private readonly logger: LoggerAppService,

// méthod
logger.log('text');
logger.warn('text');
logger.debug('text');
logger.verbose('text');
logger.error('text', e);
```

## Permission

L'objectif de cette fonctionnalité et de proposer un guard `@Permission` afin de controller l'accès aux APIs.<br />
Il est développé pour tester le token fourni par Sentinel avec la clé publique transmis également par Snetinel.<br />
Les clés peuvent être renouvelées via le scheduler de Sentinel.

### Installation et utilisation

```ts
//app.module
SentinelCoreModule.forRootAsync({
  useFactory: async (config: ConfigService) => ({
    mode: 'remote',
    apiSentinel: 'http://localhost:3000',
  }),
  inject: [ConfigService],
})

//controller
@Permission('resourceName', 'action')
```