Files
IdP/apps/api-gateway/src/app.module.ts
2026-06-29 17:46:50 +03:00

74 lines
4.2 KiB
TypeScript

import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { JwtModule } from '@nestjs/jwt';
import { ClientsModule, Transport } from '@nestjs/microservices';
import { join } from 'node:path';
import { AdminController } from './controllers/admin.controller';
import { AuthController } from './controllers/auth.controller';
import { RbacController } from './controllers/rbac.controller';
import { SecurityController } from './controllers/security.controller';
import { SettingsController } from './controllers/settings.controller';
import { HealthController } from './controllers/health.controller';
import { PublicSettingsController } from './controllers/public-settings.controller';
import { ProfileController } from './controllers/profile.controller';
import { DocumentsController } from './controllers/documents.controller';
import { AddressesController } from './controllers/addresses.controller';
import { OAuthController } from './controllers/oauth.controller';
import { FedcmController } from './controllers/fedcm.controller';
import { WellKnownController, OAuthAuthorizeDiscoveryController } from './controllers/well-known.controller';
import { AdvancedAuthController } from './controllers/advanced-auth.controller';
import { FamilyController } from './controllers/family.controller';
import { ChatController } from './controllers/chat.controller';
import { NotificationsController } from './controllers/notifications.controller';
import { MediaController } from './controllers/media.controller';
import { BotController } from './controllers/bot.controller';
import { AdminBotController } from './controllers/admin-bot.controller';
import { TelegramBotApiController } from './controllers/telegram-bot-api.controller';
import { CoreGrpcService } from './core-grpc.service';
import { AdminGuard, RbacManageGuard, SuperAdminGuard } from './guards/admin.guard';
import { FedcmCookieInterceptor } from './interceptors/fedcm-cookie.interceptor';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
JwtModule.register({}),
ClientsModule.registerAsync([
{
name: 'SSO_CORE',
imports: [ConfigModule],
inject: [ConfigService],
useFactory: (config: ConfigService) => ({
transport: Transport.GRPC,
options: {
package: ['auth', 'admin', 'rbac', 'security', 'profile', 'documents', 'addresses', 'identity', 'media', 'notifications', 'chat', 'bot'],
protoPath: [
join(__dirname, '../../../shared/proto/auth.proto'),
join(__dirname, '../../../shared/proto/admin.proto'),
join(__dirname, '../../../shared/proto/rbac.proto'),
join(__dirname, '../../../shared/proto/security.proto'),
join(__dirname, '../../../shared/proto/profile.proto'),
join(__dirname, '../../../shared/proto/documents.proto'),
join(__dirname, '../../../shared/proto/addresses.proto'),
join(__dirname, '../../../shared/proto/identity.proto'),
join(__dirname, '../../../shared/proto/media.proto'),
join(__dirname, '../../../shared/proto/notifications.proto'),
join(__dirname, '../../../shared/proto/chat.proto'),
join(__dirname, '../../../shared/proto/bot.proto')
],
url: config.get<string>('SSO_CORE_GRPC_URL', 'localhost:50051'),
channelOptions: {
'grpc.keepalive_time_ms': 30000,
'grpc.keepalive_timeout_ms': 10000,
'grpc.keepalive_permit_without_calls': 1,
'grpc.http2.max_pings_without_data': 0
}
}
})
}
])
],
controllers: [AuthController, AdminController, RbacController, SecurityController, SettingsController, PublicSettingsController, HealthController, ProfileController, DocumentsController, AddressesController, OAuthController, FedcmController, WellKnownController, OAuthAuthorizeDiscoveryController, AdvancedAuthController, FamilyController, ChatController, NotificationsController, MediaController, BotController, AdminBotController, TelegramBotApiController],
providers: [CoreGrpcService, AdminGuard, RbacManageGuard, SuperAdminGuard, FedcmCookieInterceptor]
})
export class AppModule {}