first commit
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { ConfigService } from '@nestjs/config';
|
||||
import { MongooseModule } from '@nestjs/mongoose';
|
||||
import {
|
||||
IdentityProvider,
|
||||
SessionCache,
|
||||
UserRegistry,
|
||||
} from '@task-stream/api/identity/application';
|
||||
import { UserFactory } from '@task-stream/api/identity/domain';
|
||||
import { MongoUserRegistry } from './mongo/mongo-user.registry';
|
||||
import { UserDocument, UserSchema } from './mongo/user.schema';
|
||||
import { PIREON_CONFIG, PireonConfig } from './pireon/pireon.config';
|
||||
import { PireonIdentityProvider } from './pireon/pireon-identity.provider';
|
||||
import { RedisSessionCache } from './redis/redis-session.cache';
|
||||
|
||||
/** Driven adapters of the identity context: Pireon (HTTP), Redis and MongoDB. */
|
||||
@Module({
|
||||
imports: [
|
||||
MongooseModule.forFeature([
|
||||
{ name: UserDocument.name, schema: UserSchema },
|
||||
]),
|
||||
],
|
||||
providers: [
|
||||
UserFactory,
|
||||
{
|
||||
provide: PIREON_CONFIG,
|
||||
inject: [ConfigService],
|
||||
useFactory: (config: ConfigService): PireonConfig => ({
|
||||
baseUrl: config.getOrThrow<string>('PIREON_BASE_URL'),
|
||||
sessionTtlSeconds: Number(config.get('AUTH_SESSION_TTL_SECONDS', 60)),
|
||||
requestTimeoutMs: Number(config.get('PIREON_TIMEOUT_MS', 5000)),
|
||||
clientId: config.get<string>('PIREON_CLIENT_ID') || undefined,
|
||||
clientSecret: config.get<string>('PIREON_CLIENT_SECRET') || undefined,
|
||||
scopes: String(config.get('PIREON_SCOPES', 'users:read'))
|
||||
.split(/\s+/)
|
||||
.filter(Boolean),
|
||||
passwordGrant:
|
||||
String(config.get('PIREON_PASSWORD_GRANT', 'true')) !== 'false',
|
||||
}),
|
||||
},
|
||||
{ provide: IdentityProvider, useClass: PireonIdentityProvider },
|
||||
{ provide: SessionCache, useClass: RedisSessionCache },
|
||||
{ provide: UserRegistry, useClass: MongoUserRegistry },
|
||||
],
|
||||
exports: [IdentityProvider, SessionCache, UserRegistry],
|
||||
})
|
||||
export class IdentityInfrastructureModule {}
|
||||
Reference in New Issue
Block a user