outers
Version:
outers - a all in one package for your day to day use
133 lines • 6.97 kB
JavaScript
"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