UNPKG

zents

Version:

ZenTS is a Node.js & TypeScript MVC-Framework for building rich web applications, released as free and open-source software under the MIT License. It is designed for building web applications with modern tools and design patterns.

64 lines 3.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SecurityProviderLoader = void 0; const CookieSecurityStrategy_1 = require("./strategies/CookieSecurityStrategy"); const HeaderSecurityStrategy_1 = require("./strategies/HeaderSecurityStrategy"); const HybridSecurityStrategy_1 = require("./strategies/HybridSecurityStrategy"); const SecurityProvider_1 = require("./SecurityProvider"); const SecurityProviderOptions_1 = require("./SecurityProviderOptions"); const SecurityResponse_1 = require("./SecurityResponse"); const SessionStoreAdapterFactory_1 = require("./SessionStoreAdapterFactory"); const config_1 = require("../config/config"); const isObject_1 = require("../utils/isObject"); const logger_1 = require("../log/logger"); class SecurityProviderLoader { load(entities, databaseContainer) { const adapterFactory = new SessionStoreAdapterFactory_1.SessionStoreAdapterFactory(databaseContainer); const providers = new Map(); if (!isObject_1.isObject(config_1.config.security) || !config_1.config.security.enable) { return providers; } for (const providerConfig of config_1.config.security.providers) { const options = new SecurityProviderOptions_1.SecurityProviderOptions(providerConfig, this.getEntities(entities, providerConfig)); if (providers.has(options.name)) { logger_1.log.warn(`Security provider "${options.name}" is already registered!`); continue; } const response = new SecurityResponse_1.SecurityResponse(options); const adapter = adapterFactory.build(options); const provider = new SecurityProvider_1.SecurityProvider(options, response, adapter, this.getSecurityStrategy(), databaseContainer); providers.set(options.name, provider); } return providers; } getEntities(entities, providerConfig) { var _a, _b; const user = typeof providerConfig.entity === 'string' ? entities.get(providerConfig.entity.toLowerCase()) : null; let dbStore; if (((_a = providerConfig.store) === null || _a === void 0 ? void 0 : _a.type) === 'database') { dbStore = entities.get((_b = providerConfig.store) === null || _b === void 0 ? void 0 : _b.entity.toLowerCase()); } return { user, dbStore, }; } getSecurityStrategy() { var _a, _b; let securityStrategy; if (((_a = config_1.config.security) === null || _a === void 0 ? void 0 : _a.strategy) === 'header') { securityStrategy = new HeaderSecurityStrategy_1.HeaderSecurityStrategy(); } else if (((_b = config_1.config.security) === null || _b === void 0 ? void 0 : _b.strategy) === 'hybrid') { securityStrategy = new HybridSecurityStrategy_1.HybridSecurityStrategy(); } else { securityStrategy = new CookieSecurityStrategy_1.CookieSecurityStrategy(); } return securityStrategy; } } exports.SecurityProviderLoader = SecurityProviderLoader; //# sourceMappingURL=SecurityProviderLoader.js.map