diff --git a/config/env/default.js b/config/env/default.js index a3e8c5e8..9aeb343e 100644 --- a/config/env/default.js +++ b/config/env/default.js @@ -46,5 +46,15 @@ module.exports = { fileSize: 1 * 1024 * 1024 // Max file size in bytes (1 MB) } } + }, + shared: { + owasp: { + allowPassphrases: true, + maxLength: 128, + minLength: 10, + minPhraseLength: 20, + minOptionalTestsToPass: 4 + } } + }; diff --git a/modules/core/server/controllers/core.server.controller.js b/modules/core/server/controllers/core.server.controller.js index ed9b0440..c4a8973c 100644 --- a/modules/core/server/controllers/core.server.controller.js +++ b/modules/core/server/controllers/core.server.controller.js @@ -1,12 +1,13 @@ 'use strict'; -var validator = require('validator'); +var validator = require('validator'), + path = require('path'), + config = require(path.resolve('./config/config')); /** * Render the main application page */ exports.renderIndex = function (req, res) { - var safeUserObject = null; if (req.user) { safeUserObject = { @@ -24,7 +25,8 @@ exports.renderIndex = function (req, res) { } res.render('modules/core/server/views/index', { - user: JSON.stringify(safeUserObject) + user: JSON.stringify(safeUserObject), + sharedConfig: JSON.stringify(config.shared) }); }; diff --git a/modules/core/server/views/layout.server.view.html b/modules/core/server/views/layout.server.view.html index d7327245..13c822f4 100644 --- a/modules/core/server/views/layout.server.view.html +++ b/modules/core/server/views/layout.server.view.html @@ -65,6 +65,12 @@ {{#each jsFiles}}{{/each}} + + + {{#if livereload}} diff --git a/modules/users/client/services/password-validator.client.service.js b/modules/users/client/services/password-validator.client.service.js index d1635586..3c330bcc 100644 --- a/modules/users/client/services/password-validator.client.service.js +++ b/modules/users/client/services/password-validator.client.service.js @@ -24,7 +24,7 @@ } function getPopoverMsg() { - var popoverMsg = 'Please enter a passphrase or password with 10 or more characters, numbers, lowercase, uppercase, and special characters.'; + var popoverMsg = 'Please enter a passphrase or password with ' + owaspPasswordStrengthTest.configs.minLength + ' or more characters, numbers, lowercase, uppercase, and special characters.'; return popoverMsg; } diff --git a/modules/users/server/config/strategies/local.js b/modules/users/server/config/strategies/local.js index 9caa9091..a458e8d7 100644 --- a/modules/users/server/config/strategies/local.js +++ b/modules/users/server/config/strategies/local.js @@ -22,7 +22,7 @@ module.exports = function () { } if (!user || !user.authenticate(password)) { return done(null, false, { - message: 'Invalid username or password' + message: 'Invalid username or password (' + (new Date()).toLocaleTimeString() + ')' }); } diff --git a/modules/users/server/models/user.server.model.js b/modules/users/server/models/user.server.model.js index 0797faa4..16c3546e 100644 --- a/modules/users/server/models/user.server.model.js +++ b/modules/users/server/models/user.server.model.js @@ -4,12 +4,17 @@ * Module dependencies */ var mongoose = require('mongoose'), + path = require('path'), + config = require(path.resolve('./config/config')), Schema = mongoose.Schema, crypto = require('crypto'), validator = require('validator'), generatePassword = require('generate-password'), owasp = require('owasp-password-strength-test'); +owasp.config(config.shared.owasp); + + /** * A Validation function for local strategy properties */