import {DynamicModule, HttpModule, Module} from '@nestjs/common'; import {AuthorizationGuard} from './authorization.guard'; import {PermissionGuardService} from './services'; import {ApiService} from './communication-manager/http'; import {RedisModule} from '../../database/redis'; import {AuthorizationGuardProvider} from './providers'; import {AclGuardService, AuthorizationGuardService} from './services'; import {apiServiceFactory, aclGuardServiceFactory, permissionGuardServiceFactory} from './factory'; export interface AuthorizationGuardModuleConfig { accountProjectRoleUrl: string; userProjectResourceAclUrl: string; projectPermissionUrl: string; aclByIdUrl: string; systemPermissionUrl: string; } @Module({}) export class AuthorizationGuardModule { static register(options: AuthorizationGuardModuleConfig): DynamicModule { return { module: AuthorizationGuardModule, imports: [ HttpModule, RedisModule ], providers: [ AuthorizationGuard, ApiService, AuthorizationGuardProvider, AuthorizationGuardService, apiServiceFactory(options), aclGuardServiceFactory(options), permissionGuardServiceFactory(options) ], exports: [AuthorizationGuard, PermissionGuardService, ApiService, AuthorizationGuardProvider, AclGuardService, AuthorizationGuardService ], } } }