UNPKG

mongodb-dynamic-api

Version:

Auto generated CRUD API for MongoDB using NestJS

114 lines 5.88 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var AuthModule_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.AuthModule = void 0; const common_1 = require("@nestjs/common"); const jwt_1 = require("@nestjs/jwt"); const mongoose_1 = require("@nestjs/mongoose"); const passport_1 = require("@nestjs/passport"); const dynamic_api_module_1 = require("../../dynamic-api.module"); const helpers_1 = require("../../helpers"); const services_1 = require("../../services"); const auth_helper_1 = require("./auth.helper"); const strategies_1 = require("./strategies"); let AuthModule = AuthModule_1 = class AuthModule { static forRoot(options, extraImports = []) { const { userEntity, login: { loginField, passwordField, ...login }, register, updateAccount, resetPassword, jwt: { secret, expiresIn }, validationPipeOptions, webSocket, } = this.initializeAuthOptions(options); const { beforeChangePasswordCallback, resetPasswordCallback, changePasswordCallback, emailField, expirationInMinutes, changePasswordAbilityPredicate, } = resetPassword; const resetPasswordOptions = resetPasswordCallback ? { beforeChangePasswordCallback, resetPasswordCallback, changePasswordCallback, emailField, expirationInMinutes, changePasswordAbilityPredicate: changePasswordAbilityPredicate, } : undefined; const AuthController = (0, auth_helper_1.createAuthController)(userEntity, { loginField, passwordField, ...login }, register, validationPipeOptions, resetPasswordOptions, updateAccount); const AuthServiceProvider = (0, auth_helper_1.createAuthServiceProvider)(userEntity, { loginField, passwordField, ...login }, register.callback, resetPasswordOptions, updateAccount.callback, register.beforeSaveCallback, updateAccount.beforeSaveCallback); const LocalStrategyProvider = (0, auth_helper_1.createLocalStrategyProvider)(loginField, passwordField, login.abilityPredicate); const schema = (0, helpers_1.buildSchemaFromEntity)(userEntity); services_1.DynamicApiGlobalStateService.addEntitySchema(userEntity, schema); const gatewayOptions = (0, helpers_1.initializeConfigFromOptions)(webSocket ?? dynamic_api_module_1.DynamicApiModule.state.get('gatewayOptions')); const webSocketsProviders = !gatewayOptions ? [] : [ { provide: auth_helper_1.authGatewayProviderName, useClass: (0, auth_helper_1.createAuthGateway)(userEntity, { loginField, passwordField, additionalFields: login.additionalFields, abilityPredicate: login.abilityPredicate, }, register, validationPipeOptions, resetPasswordOptions, updateAccount, gatewayOptions), }, ]; return { module: AuthModule_1, imports: [ ...extraImports, mongoose_1.MongooseModule.forFeature([ { name: userEntity.name, schema, }, ], dynamic_api_module_1.DynamicApiModule.state.get('connectionName')), passport_1.PassportModule, jwt_1.JwtModule.register({ global: true, secret, signOptions: { expiresIn }, }), ], providers: [ AuthServiceProvider, LocalStrategyProvider, strategies_1.JwtStrategy, services_1.BcryptService, ...webSocketsProviders, ], controllers: [AuthController], }; } static initializeAuthOptions({ userEntity, jwt, login, register, updateAccount, resetPassword, validationPipeOptions, webSocket, }) { return { userEntity: userEntity, jwt: { secret: jwt?.secret ?? 'dynamic-api-jwt-secret', expiresIn: jwt?.expiresIn ?? '1d', }, login: { ...login, loginField: (login?.loginField ?? 'email'), passwordField: (login?.passwordField ?? 'password'), additionalFields: login?.additionalFields ?? [], }, register: { ...register, additionalFields: register?.additionalFields ?? [], protected: register?.protected ?? !!register?.abilityPredicate, }, updateAccount: { ...updateAccount, additionalFieldsToExclude: updateAccount?.additionalFieldsToExclude ?? [], }, resetPassword: { ...resetPassword, emailField: (!resetPassword?.emailField ? 'email' : String(resetPassword.emailField)), expirationInMinutes: resetPassword?.expirationInMinutes ?? 10, }, validationPipeOptions: validationPipeOptions, webSocket, }; } }; exports.AuthModule = AuthModule; exports.AuthModule = AuthModule = AuthModule_1 = __decorate([ (0, common_1.Module)({}) ], AuthModule); //# sourceMappingURL=auth.module.js.map