homemanager-be/src/shared/secrets/secrets.providers.ts

29 lines
884 B
TypeScript

import { join } from 'path';
import { readFile } from 'fs/promises';
import { FactoryProvider, ValueProvider } from '@nestjs/common';
export const secretsProviders = [
{
provide: 'PRIVATE_PATH',
useValue: join(process.cwd(), 'private'),
} as ValueProvider<string>,
{
provide: 'JWT_PRIVATE_KEY',
useFactory: async (path: string) => readFile(join(path, 'jwt.private.pem')),
inject: ['PRIVATE_PATH'],
} as FactoryProvider<Buffer>,
{
provide: 'JWT_PUBLIC_KEY',
useFactory: async (path: string) => readFile(join(path, 'jwt.public.pem')),
inject: ['PRIVATE_PATH'],
} as FactoryProvider<Buffer>,
{
provide: 'JWT_JWKS',
useFactory: async (path: string) =>
JSON.parse(
await readFile(join(path, 'jwks.json'), { encoding: 'utf-8' }),
),
inject: ['PRIVATE_PATH'],
} as FactoryProvider<Record<string, unknown>>,
];