From afe44ab68a7655d301d30411b3f53b6d91268bfe Mon Sep 17 00:00:00 2001 From: liuyi Date: Mon, 23 Jun 2025 08:31:26 +0800 Subject: [PATCH] add user module and jwt --- src/modules/user/user.module.ts | 42 +++++++++++++++++++++++++++++++-- src/options.ts | 5 +++- 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/src/modules/user/user.module.ts b/src/modules/user/user.module.ts index 309e84a..0ce612b 100644 --- a/src/modules/user/user.module.ts +++ b/src/modules/user/user.module.ts @@ -1,4 +1,42 @@ -import { Module } from '@nestjs/common'; +import { DynamicModule, Module } from '@nestjs/common'; + +import { PassportModule } from '@nestjs/passport'; + +import { Configure } from '@/modules/config/configure'; + +import { DatabaseModule } from '@/modules/database/database.module'; +import { addEntities, addSubscribers } from '@/modules/database/utils'; + +import * as entities from './entities'; +import * as guards from './guards'; +import * as interceptors from './interceptors'; +import * as repositories from './repositories'; +import * as services from './services'; +import * as strategies from './strategies'; +import * as subscribers from './subscribers'; @Module({}) -export class UserModule {} +export class UserModule { + static async forRoot(configure: Configure): Promise { + return { + module: UserModule, + imports: [ + PassportModule, + services.TokenService.JwtModuleFactory(configure), + await addEntities(configure, Object.values(entities)), + DatabaseModule.forRepository(Object.values(repositories)), + ], + providers: [ + ...Object.values(interceptors), + ...Object.values(services), + ...Object.values(strategies), + ...Object.values(guards), + ...(await addSubscribers(configure, Object.values(subscribers))), + ], + exports: [ + ...Object.values(services), + DatabaseModule.forRepository(Object.values(repositories)), + ], + }; + } +} diff --git a/src/options.ts b/src/options.ts index a563394..883d20f 100644 --- a/src/options.ts +++ b/src/options.ts @@ -7,6 +7,9 @@ import { FastifyAdapter, NestFastifyApplication } from '@nestjs/platform-fastify import { existsSync } from 'fs-extra'; import { isNil } from 'lodash'; +import { JwtAuthGuard } from '@/modules/user/guards'; +import { UserModule } from '@/modules/user/user.module'; + import * as configs from './config'; import { ContentModule } from './modules/content/content.module'; import { CreateOptions } from './modules/core/types'; @@ -16,7 +19,6 @@ import { MeiliModule } from './modules/meilisearch/meili.module'; import { Restful } from './modules/restful/restful'; import { RestfulModule } from './modules/restful/restful.module'; import { ApiConfig } from './modules/restful/types'; -import { JwtAuthGuard } from './modules/user/guards/jwt.auth.guard'; export const createOptions: CreateOptions = { commands: () => [...Object.values(dbCommands)], @@ -26,6 +28,7 @@ export const createOptions: CreateOptions = { await MeiliModule.forRoot(configure), await RestfulModule.forRoot(configure), await ContentModule.forRoot(configure), + await UserModule.forRoot(configure), ], globals: { guard: JwtAuthGuard }, builder: async ({ configure, BootModule }) => {