dependencies Legend  Declarations  Module  Bootstrap  Providers  Exports cluster_AuthModule cluster_AuthModule_imports cluster_AuthModule_exports cluster_AuthModule_providers UsersModule UsersModule AuthModule AuthModule UsersModule->AuthModule AuthService AuthService AuthModule->AuthService AuthService AuthService AuthService->AuthModule CaslAbilityFactory CaslAbilityFactory CaslAbilityFactory->AuthModule JwtStrategy JwtStrategy JwtStrategy->AuthModule LdapStrategy LdapStrategy LdapStrategy->AuthModule LocalStrategy LocalStrategy LocalStrategy->AuthModule

File

src/auth/auth.module.ts

import { Module } from "@nestjs/common";
import { AuthService } from "./auth.service";
import { UsersModule } from "../users/users.module";
import { PassportModule } from "@nestjs/passport";
import { LocalStrategy } from "./strategies/local.strategy";
import { AuthController } from "./auth.controller";
import { JwtModule } from "@nestjs/jwt";
import { JwtStrategy } from "./strategies/jwt.strategy";
import { LdapStrategy } from "./strategies/ldap.strategy";
import { ConfigModule, ConfigService } from "@nestjs/config";
import { UsersService } from "src/users/users.service";
import { OidcConfig } from "src/config/configuration";
import { BuildOpenIdClient, OidcStrategy } from "./strategies/oidc.strategy";
import { accessGroupServiceFactory } from "./access-group-provider/access-group-service-factory";
import { AccessGroupService } from "./access-group-provider/access-group.service";
import { CaslAbilityFactory } from "src/casl/casl-ability.factory";

const OidcStrategyFactory = {
  provide: "OidcStrategy",
  useFactory: async (
    authService: AuthService,
    configService: ConfigService,
    userService: UsersService,
    accessGroupService: AccessGroupService,
  ) => {
    if (!configService.get<OidcConfig>("oidc")?.issuer) {
      return null;
    }
    const clientBuilder = new BuildOpenIdClient(configService);
    const client = await clientBuilder.build();
    const strategy = new OidcStrategy(
      authService,
      client,
      configService,
      userService,
      accessGroupService,
    );
    return strategy;
  },
  inject: [AuthService, ConfigService, UsersService, AccessGroupService],
};

@Module({
  imports: [
    ConfigModule,
    JwtModule.registerAsync({
      imports: [ConfigModule],
      useFactory: async (configService: ConfigService) => ({
        secret: configService.get<string>("jwt.secret"),
        signOptions: { expiresIn: configService.get<number>("jwt.expiresIn") },
      }),
      inject: [ConfigService],
    }),
    PassportModule.register({
      defaultStrategy: "jwt",
      property: "user",
      session: false,
    }),
    UsersModule,
  ],
  providers: [
    AuthService,
    JwtStrategy,
    LdapStrategy,
    LocalStrategy,
    CaslAbilityFactory,
    OidcStrategyFactory,
    accessGroupServiceFactory,
  ],
  controllers: [AuthController],
  exports: [AuthService, JwtModule, PassportModule],
})
export class AuthModule {}

results matching ""

    No results matching ""