import { Module } from '@nestjs/common'; import { ScheduleModule } from '@nestjs/schedule'; import { GroupsModule } from '../groups/groups.module'; import { UserModule } from '../user/user.module'; import { LdapConfigService } from './ldap-config.service'; import { LdapSyncScheduler } from './ldap-sync.scheduler'; import { LdapController } from './ldap.controller'; import { LdapService } from './ldap.service'; /** * LDAP Module - Directory sync for user import (AUTH-06). * * Provides per-tenant LDAP configuration (D-18), manual sync (D-14), * auto-sync scheduler (D-14), and configurable field mapping (D-16/D-17). * * GroupsModule is imported so LdapService can call * GroupsService.reassignDefaultBeforeDelete()/ensureDefaultGroup() from * syncBoundGroupsForTenant() (Plan 16-03, D-06) — no cycle: GroupsModule * imports neither LdapModule nor UserModule. * * The bind password is encrypted at rest via CryptoService from the global * CryptoModule — the same provider every other stored credential uses. */ @Module({ imports: [ScheduleModule.forRoot(), UserModule, GroupsModule], controllers: [LdapController], providers: [LdapService, LdapConfigService, LdapSyncScheduler], exports: [LdapService, LdapConfigService], }) export class LdapModule {}