Skip to content

Commit

Permalink
Updated dev dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
asabzposh committed Feb 6, 2019
1 parent 0cc8865 commit 061ee28
Show file tree
Hide file tree
Showing 6 changed files with 1,362 additions and 2,116 deletions.
14 changes: 14 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"parserOptions": {
"ecmaVersion": 2017
},

"env": {
"es6": true
},
"plugins": ["prettier"],
"rules": {
"prettier/prettier": "error"
},
"extends": ["plugin:prettier/recommended"]
}
9 changes: 9 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"trailingComma": "none",
"tabWidth": 4,
"semi": true,
"singleQuote": true,
"bracketSpacing": true,
"arrowParens": "always",
"endOfLine": "auto"
}
70 changes: 41 additions & 29 deletions lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,12 @@ const Caja = require('sanitizer');
const Joi = require('joi');
const _ = require('lodash');

plugin.whiteRegex = new RegExp(/^[\s\f\n\r\t\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff\x09\x0a\x0b\x0c\x0d\x20\xa0]+$/);
plugin.whiteRegex = new RegExp(
/^[\s\f\n\r\t\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff\x09\x0a\x0b\x0c\x0d\x20\xa0]+$/
);

// Sanitize using the Caja sanitizer
plugin.sanitize = (obj) => {

const keys = Object.keys(obj);

for (let i = 0; i < keys.length; ++i) {
Expand All @@ -25,7 +26,6 @@ plugin.sanitize = (obj) => {

// Remove white space characters
plugin.removeWhitespace = (obj) => {

const keys = Object.keys(obj);

for (let i = 0; i < keys.length; ++i) {
Expand All @@ -39,7 +39,6 @@ plugin.removeWhitespace = (obj) => {

// Remove null, empty and undefined
plugin.removeNonExistent = (obj) => {

const keys = Object.keys(obj);

for (let i = 0; i < keys.length; ++i) {
Expand All @@ -53,7 +52,6 @@ plugin.removeNonExistent = (obj) => {

// Escape $ sign for mongodb query
plugin.escapeDollarSign = (obj) => {

const keys = Object.keys(obj);

for (let i = 0; i < keys.length; ++i) {
Expand All @@ -67,7 +65,6 @@ plugin.escapeDollarSign = (obj) => {

// Remove $ sign for mongodb query
plugin.removeDollarSign = (obj) => {

const keys = Object.keys(obj);

for (let i = 0; i < keys.length; ++i) {
Expand All @@ -81,7 +78,6 @@ plugin.removeDollarSign = (obj) => {

// Escape {} sign for mongodb query
plugin.escapeCurlyBracket = (obj) => {

const keys = Object.keys(obj);

for (let i = 0; i < keys.length; ++i) {
Expand All @@ -95,7 +91,6 @@ plugin.escapeCurlyBracket = (obj) => {

// Remove curly brackets for mongodb query
plugin.removeCurlyBracket = (obj) => {

const keys = Object.keys(obj);

for (let i = 0; i < keys.length; ++i) {
Expand All @@ -109,43 +104,43 @@ plugin.removeCurlyBracket = (obj) => {

// Original Object
plugin.original = (obj) => {

return obj;
};

plugin.avert = (obj, options, firstPass, secondPass) => {

let cleansed = obj;
if (cleansed && Object.keys(cleansed).length) {
if (options[firstPass]) {
cleansed = plugin.sanitize(cleansed);
}

cleansed = options.genericCustomSanitizer(cleansed);
cleansed = options[secondPass](cleansed);
if (options.removeWhitespace) {
cleansed = plugin.removeWhitespace(cleansed);
}

if (options.removeNonExistent) {
cleansed = plugin.removeNonExistent(cleansed);
}

if (options.removeDollarSign) {
cleansed = plugin.removeDollarSign(cleansed);
}
else if (options.escapeDollarSign) {
} else if (options.escapeDollarSign) {
cleansed = plugin.escapeDollarSign(cleansed);
}

if (options.removeCurlyBracket) {
cleansed = plugin.removeCurlyBracket(cleansed);
}
else if (options.escapeCurlyBracket) {
} else if (options.escapeCurlyBracket) {
cleansed = plugin.escapeCurlyBracket(cleansed);
}
}

return cleansed;
};

plugin.schema = Joi.object().keys({

// boolean parameters
removeWhitespace: Joi.boolean().optional(),
removeNonExistent: Joi.boolean().optional(),
Expand All @@ -166,7 +161,6 @@ plugin.schema = Joi.object().keys({
});

plugin.defaults = {

// boolean parameters
removeWhitespace: false,
removeNonExistent: false,
Expand All @@ -188,29 +182,47 @@ plugin.defaults = {
};

plugin.register = async (server, options) => {

try {
await plugin.schema.validate(options);
}
catch (err) {
} catch (err) {
return err;
}

const serverSettings = await Hoek.applyToDefaults(plugin.defaults, options);

server.ext('onPostAuth', (request, h) => {

if (request.route.settings.plugins.avert === false) {
return h.continue;
}

if (request.payload || Object.keys(request.params).length || Object.keys(request.query).length) {

request.route.settings.plugins._avert = Hoek.applyToDefaults(serverSettings, request.route.settings.plugins.avert || {});

request.query = plugin.avert(request.query, request.route.settings.plugins._avert, 'avertQuery', 'queryCustomSanitizer');
request.params = plugin.avert(request.params, request.route.settings.plugins._avert, 'avertParams', 'paramCustomSanitizer');
request.payload = plugin.avert(request.payload, request.route.settings.plugins._avert, 'avertPayload', 'payloadCustomSanitizer');
if (
request.payload ||
Object.keys(request.params).length ||
Object.keys(request.query).length
) {
request.route.settings.plugins._avert = Hoek.applyToDefaults(
serverSettings,
request.route.settings.plugins.avert || {}
);

request.query = plugin.avert(
request.query,
request.route.settings.plugins._avert,
'avertQuery',
'queryCustomSanitizer'
);
request.params = plugin.avert(
request.params,
request.route.settings.plugins._avert,
'avertParams',
'paramCustomSanitizer'
);
request.payload = plugin.avert(
request.payload,
request.route.settings.plugins._avert,
'avertPayload',
'payloadCustomSanitizer'
);
}

return h.continue;
Expand All @@ -220,6 +232,6 @@ plugin.register = async (server, options) => {
module.exports = {
register: plugin.register,
name: 'avert',
version: '1.0.0',
pkg : plugin.package
version: '1.0.4',
pkg: plugin.package
};
Loading

0 comments on commit 061ee28

Please sign in to comment.