import { DynamicModule, Module, Provider } from '@nestjs/common'; import { AuthService } from './auth.service'; import { LocalStrategy } from './local.strategy'; import { JwtStrategy } from './jwt.strategy'; import { PassportModule } from '@nestjs/passport'; import { JwtModule } from '@nestjs/jwt'; import { AuthController } from './auth/auth.controller'; import { UsersCrudController } from 'kkk-lib/auth/users/users-crud.controller'; import { UsersService } from 'kkk-lib/auth/users/users.service'; import { UserTypeCrudService } from 'kkk-lib/auth/users/user-type-crud/user-type-crud.service'; import { DepartsCrudService } from 'kkk-lib/auth/users/departs-crud/departs-crud.service'; import { UsersCrudService } from 'kkk-lib/auth/users/users-crud/users-crud.service'; import { UsersController } from 'kkk-lib/auth/users/users.controller'; import { UserTypeCrudController } from 'kkk-lib/auth/users/user-type-crud/user-type-crud.controller'; import { DepartsCrudController } from 'kkk-lib/auth/users/departs-crud/departs-crud.controller'; import { TypeOrmModule } from '@nestjs/typeorm'; import { PUserType } from 'kkk-lib/auth/entity/p-user-type.entity'; import { PDepart } from 'kkk-lib/auth/entity/p-depart'; import { PUser } from 'kkk-lib/auth/entity/p-user.entity'; import { PGroup } from 'kkk-lib/auth/entity/p-group'; import { PGroupService } from 'kkk-lib/auth/users/p-group.service'; import { PGroupCrudService } from 'kkk-lib/auth/users/group-crud/group-crud.service'; import { GroupCrudController } from 'kkk-lib/auth/users/group-crud/group-crud.controller'; import { GroupService } from 'kkk-lib/auth/users/group.service'; import * as jwt from 'jsonwebtoken'; import { DepartService } from 'kkk-lib/auth/depart/depart.service'; import { UserTypeService } from 'kkk-lib/auth/user-type/user-type.service'; import { PAccessory } from 'kkk-lib/auth/entity/p-accessory.entity'; import { PUserPasswordRelEntity } from 'kkk-lib/auth/entity/p-user-password-rel.entity'; import { EmailService } from 'kkk-lib/auth/email.service'; @Module({ providers: [], }) export class AuthModule { static secretOrKey = ''; static subSys = false; static manageName = ''; static emailConfig = { // 这个地方是一个smtp服务器地址,一般都是smtp + xxx 比如网易地址 smtp.163.com host: 'smtp.qq.com', port: 465, secure: true, auth: { user: '', // 邮箱账号 pass: '', // 授权码或密码 }, // resetpassword 跳转地址 href: '', }; static register(options: { secret: string; expiresIn: string; manageName?: string; subSys?: boolean; emailConfig?: any; }): DynamicModule { this.secretOrKey = options.secret; if (options.subSys) { this.subSys = options.subSys; } if (options.manageName) { this.manageName = options.manageName; } else { this.manageName = '管理员'; } if (options.emailConfig) { this.emailConfig = options.emailConfig; } return { module: AuthModule, imports: [ PassportModule.register({ defaultStrategy: 'jwt' }), JwtModule.register({ secret: options.secret, signOptions: { expiresIn: options.expiresIn }, // verifyOptions: {algorithms: ['HS256']}, 默认HS256 }), TypeOrmModule.forFeature([ PUser, PDepart, PUserType, PGroup, PAccessory, PUserPasswordRelEntity, ]), ], providers: [ AuthService, LocalStrategy, JwtStrategy, UsersService, GroupService, UsersCrudService, DepartsCrudService, UserTypeCrudService, PGroupService, PGroupCrudService, DepartService, UserTypeService, EmailService, ], exports: [ AuthService, UsersService, GroupService, UsersCrudService, DepartsCrudService, UserTypeCrudService, PGroupService, PGroupCrudService, EmailService, ], controllers: [ AuthController, UsersCrudController, GroupCrudController, UsersController, DepartsCrudController, UserTypeCrudController, ], }; } }