34 lines
882 B
TypeScript
34 lines
882 B
TypeScript
import type { Provider } from '@nestjs/common'
|
|
|
|
import { PASSPORT_OPTIONS } from './constants'
|
|
import type { PassportAsyncOptions, PassportOptions } from './interfaces'
|
|
|
|
export function createPassportOptionsProvider(
|
|
options: PassportOptions
|
|
): Provider {
|
|
return {
|
|
provide: PASSPORT_OPTIONS,
|
|
useValue: Object.freeze({ ...options })
|
|
}
|
|
}
|
|
|
|
export function createPassportAsyncOptionsProvider(
|
|
options: PassportAsyncOptions
|
|
): Provider {
|
|
return {
|
|
provide: PASSPORT_OPTIONS,
|
|
useFactory: async (...args: any[]) => {
|
|
const resolved = await options.useFactory!(...args)
|
|
|
|
if (!resolved || typeof resolved.secretKey !== 'string') {
|
|
throw new Error(
|
|
'[Passport Module] "secretKey" обязателен для заполнения и должен быть строкой.'
|
|
)
|
|
}
|
|
|
|
return Object.freeze({ ...resolved })
|
|
},
|
|
inject: options.inject ?? []
|
|
}
|
|
}
|