84 lines
2.8 KiB
TypeScript
84 lines
2.8 KiB
TypeScript
import { Module, Scope } from '@nestjs/common';
|
|
import { RefreshTokenInterceptor, SessionModule } from './core/sessions';
|
|
import { APP_FILTER, APP_GUARD, APP_INTERCEPTOR } from '@nestjs/core';
|
|
import { HttpExceptionFilter, TransformInterceptor } from './core/response';
|
|
import { ApmModule } from './core/apm';
|
|
import { CONNECTION_NAME } from './core/strings/constants/base.constants';
|
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
import { ConfigModule } from '@nestjs/config';
|
|
import { UserPrivilegeModule } from './modules/user-related/user-privilege/user-privilege.module';
|
|
import { CqrsModule } from '@nestjs/cqrs';
|
|
import { CouchModule } from './modules/configuration/couch/couch.module';
|
|
import { UserPrivilegeModels } from './modules/user-related/user-privilege/constants';
|
|
import { RolesGuard } from './core/guards/domain/roles.guard';
|
|
import { PrivilegeService } from './core/guards/domain/services/privilege.service';
|
|
import { UserModel } from './modules/user-related/user/data/models/user.model';
|
|
import { AuthModule } from './modules/configuration/auth/auth.module';
|
|
import { UserModule } from './modules/user-related/user/user.module';
|
|
import { LogModel } from './modules/configuration/log/data/models/log.model';
|
|
import { ErrorLogModel } from './modules/configuration/log/data/models/error-log.model';
|
|
import { LogModule } from './modules/configuration/log/log.module';
|
|
|
|
@Module({
|
|
imports: [
|
|
ApmModule.register(),
|
|
ConfigModule.forRoot({
|
|
isGlobal: true,
|
|
}),
|
|
TypeOrmModule.forRoot({
|
|
name: CONNECTION_NAME.DEFAULT,
|
|
type: 'postgres',
|
|
host: process.env.DEFAULT_DB_HOST,
|
|
port: parseInt(process.env.DEFAULT_DB_PORT),
|
|
username: process.env.DEFAULT_DB_USER,
|
|
password: process.env.DEFAULT_DB_PASS,
|
|
database: process.env.DEFAULT_DB_NAME,
|
|
entities: [
|
|
...UserPrivilegeModels,
|
|
UserModel,
|
|
LogModel,
|
|
ErrorLogModel,
|
|
],
|
|
synchronize: false,
|
|
}),
|
|
CqrsModule,
|
|
SessionModule,
|
|
AuthModule,
|
|
CouchModule,
|
|
LogModule,
|
|
|
|
UserModule,
|
|
UserPrivilegeModule,
|
|
],
|
|
controllers: [],
|
|
providers: [
|
|
PrivilegeService,
|
|
/**
|
|
* By default all request from client will protect by JWT
|
|
* if there is some endpoint/function that does'nt require authentication
|
|
* please add `@Unprotected()` decorator to the function
|
|
*/
|
|
{
|
|
provide: APP_GUARD,
|
|
scope: Scope.REQUEST,
|
|
useClass: RolesGuard,
|
|
},
|
|
{
|
|
provide: APP_INTERCEPTOR,
|
|
scope: Scope.REQUEST,
|
|
useClass: RefreshTokenInterceptor,
|
|
},
|
|
{
|
|
provide: APP_INTERCEPTOR,
|
|
scope: Scope.REQUEST,
|
|
useClass: TransformInterceptor,
|
|
},
|
|
{
|
|
provide: APP_FILTER,
|
|
scope: Scope.REQUEST,
|
|
useClass: HttpExceptionFilter,
|
|
},
|
|
],
|
|
})
|
|
export class AppModule {}
|