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
JavaScript
;
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