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 2.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.IncomingRequest = void 0; const Context_1 = require("./Context"); const enums_1 = require("../types/enums"); const config_1 = require("../config"); class IncomingRequest { async handle(factory, route, req, res, params, requestConfig, securityProviders) { const context = await this.buildContext(req, res, params, route); const authentication = await this.authenticate(route.authProvider, context, securityProviders); if (authentication.isAuth) { if (requestConfig.type === enums_1.REQUEST_TYPE.CONTROLLER) { requestConfig.loadedUser = { provider: route.authProvider, user: authentication.user, sessionId: authentication.sessionId, }; } if (context.isValid) { const handler = factory.build(context, requestConfig, route); await handler.run(); } else { context.error.badData('Bad Data', { errors: context.validationErrors, }); } } else if (authentication.securityProvider) { await authentication.securityProvider.forbidden(context); } else { context.error.forbidden(); } } async buildContext(req, res, params, route) { const context = new Context_1.Context(); await context.build(req, res, params, route); return context; } async authenticate(authProvider, context, securityProviders) { var _a; if (!((_a = config_1.config.security) === null || _a === void 0 ? void 0 : _a.enable) || typeof authProvider !== 'string') { return { isAuth: true, }; } const securityProvider = securityProviders.get(authProvider); if (typeof securityProviders === 'undefined') { return { isAuth: false, }; } const authorize = await securityProvider.authorize(context); return { isAuth: authorize.isAuth, user: authorize.user, sessionId: authorize.sessionId, securityProvider, }; } } exports.IncomingRequest = IncomingRequest; //# sourceMappingURL=IncomingRequest.js.map