UNPKG

outers

Version:

outers - a all in one package for your day to day use

133 lines 6.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Middleware_Constant_1 = require("../../Config/Constant/Middleware.Constant"); // Import X-Powered-By Header // Import Interfaces const outer_1 = require("../../Config/outer"); // Import red from outers // Main Function function default_1(BrowserNames, BrowserVersions, StatusCode, ErrorMessage, Reverse) { if (BrowserNames.length === 0) throw new Error("BrowserNames array cannot be empty"); // Throw Error if AllowedURLs array is empty return (Request, Response, Next) => { var _a; const ReverseParams = Reverse !== null && Reverse !== void 0 ? Reverse : false; // Set Reverse to false if it is undefined let BrowserIsAllowed = false; // Set BrowserIsAllowed to false let BrowserVersionIsAllowed = false; // Set BrowserVersionIsAllowed to false // Change Response X-Powered-By Header & Server Header Response.setHeader("X-Powered-By", (0, Middleware_Constant_1.XPoweredBy)()); // Set X-Powered-By Header Response.setHeader("Server", (0, Middleware_Constant_1.ServerName)()); // Set Server Header // Check if Request has Headers if (!Request.headers) { return outer_1.Serve.JSON({ response: Response, status: false, statusCode: outer_1.StatusCodes.BAD_REQUEST, Title: "Bad Request", message: "No headers provided", data: null, cookieData: undefined, contentType: "application/json", }); } // Get User Agent & Browser Name & Version const UserAgent = (_a = Request.get("User-Agent")) !== null && _a !== void 0 ? _a : "chrome"; // Get User Agent const BrowserVersion = UserAgent.split(" ")[1]; // Get Browser Version // Check if User Agent is available in Array or not BrowserIsAllowed = BrowserNames.some((name) => { const regex = new RegExp(name, "i"); // Create a Regular Expression for Browser Name to match return regex.test(UserAgent); // Check if User Agent is Allowed or not }); // Check if Browser Version is available in Array or not if (BrowserVersions) { BrowserVersionIsAllowed = BrowserVersions.some((version) => { const regex = new RegExp(version, "i"); // Create a Regular Expression for Browser Version to match return regex.test(BrowserVersion); // Check if Browser Version is Allowed or not }); } // Check if Browser is allowed or not if (ReverseParams === false) { if (BrowserVersion.length !== 0) { if (BrowserIsAllowed === true && BrowserVersionIsAllowed === true) { Next(); // Next Middleware } else { // Handle the case when no match is found outer_1.Serve.JSON({ response: Response, status: false, Title: "Browser & its Version Not Allowed to Access", statusCode: StatusCode !== null && StatusCode !== void 0 ? StatusCode : outer_1.StatusCodes.NOT_ACCEPTABLE, message: ErrorMessage !== null && ErrorMessage !== void 0 ? ErrorMessage : "You are not allowed to access this server from this browser and its version.", data: { BlockedBrowser: UserAgent, }, cookieData: undefined, }); // Serve JSON // You may choose to send an error response or redirect the user to an error page } } else { if (BrowserIsAllowed === true) { Next(); // Next Middleware } else { // Handle the case when no match is found outer_1.Serve.JSON({ response: Response, status: false, Title: "Browser Not Allowed to Access", statusCode: StatusCode !== null && StatusCode !== void 0 ? StatusCode : outer_1.StatusCodes.NOT_ACCEPTABLE, contentType: "application/json", message: ErrorMessage !== null && ErrorMessage !== void 0 ? ErrorMessage : "You are not allowed to access this server from this browser.", data: { BlockedBrowser: UserAgent, }, cookieData: undefined, }); // Serve JSON // You may choose to send an error response or redirect the user to an error page } } } else { if (BrowserVersion.length !== 0) { if (BrowserIsAllowed === false && BrowserVersionIsAllowed === false) { Next(); // Next Middleware } else { outer_1.Serve.JSON({ response: Response, status: false, Title: "Browser & its Version Not Allowed to Access", statusCode: StatusCode !== null && StatusCode !== void 0 ? StatusCode : outer_1.StatusCodes.NOT_ACCEPTABLE, contentType: "application/json", message: ErrorMessage !== null && ErrorMessage !== void 0 ? ErrorMessage : "You are not allowed to access this server from this browser and its version.", data: { BlockedBrowser: UserAgent, }, cookieData: undefined, }); // Serve JSON } } else { if (BrowserIsAllowed === false) { Next(); // Next Middleware } else { outer_1.Serve.JSON({ response: Response, status: false, Title: "Browser Not Allowed to Access", statusCode: StatusCode !== null && StatusCode !== void 0 ? StatusCode : outer_1.StatusCodes.NOT_ACCEPTABLE, contentType: "application/json", message: ErrorMessage !== null && ErrorMessage !== void 0 ? ErrorMessage : "You are not allowed to access this server from this browser.", data: { BlockedBrowser: UserAgent, }, cookieData: undefined, }); // Serve JSON } } } }; } exports.default = default_1; //# sourceMappingURL=Base.middleware.js.map