-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathauth.module.ts
49 lines (47 loc) · 1.59 KB
/
auth.module.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { PassportModule } from '@nestjs/passport';
import { JwtModule } from '@nestjs/jwt';
import { AuditModule } from '../audit/audit.module';
import { JwtStrategy } from './jwt.strategy';
import { PersistenceModule } from '../persistence/persistence.module';
import { AuthController } from './auth.controller';
import { OidcStrategy, buildOpenIdClient } from './oidc.strategy';
import { SessionSerializer } from './session.serializer';
import { AuthService } from './auth.service';
import { BrokerOidcAuthGuard } from './broker-oidc-auth.guard';
import { BrokerJwtAuthGuard } from './broker-jwt-auth.guard';
const OidcStrategyFactory = {
provide: 'OidcStrategy',
useFactory: async (authService: AuthService) => {
const client = await buildOpenIdClient(); // secret sauce! build the dynamic client before injecting it into the strategy for use in the constructor super call.
const strategy = new OidcStrategy(authService, client);
return strategy;
},
inject: [AuthService],
};
/**
* The auth module enables user login using OIDC.
*/
@Module({
imports: [
AuditModule,
ConfigModule,
PersistenceModule,
PassportModule.register({ session: true, defaultStrategy: 'oidc' }),
JwtModule.register({
secret: 'secret',
}),
],
providers: [
BrokerOidcAuthGuard,
BrokerJwtAuthGuard,
JwtStrategy,
SessionSerializer,
OidcStrategyFactory,
AuthService,
],
controllers: [AuthController],
exports: [BrokerOidcAuthGuard, BrokerJwtAuthGuard],
})
export class AuthModule {}