summaryrefslogtreecommitdiffstats
path: root/dist/js/bootstrap-strength-meter.js
diff options
context:
space:
mode:
Diffstat (limited to 'dist/js/bootstrap-strength-meter.js')
-rw-r--r--dist/js/bootstrap-strength-meter.js408
1 files changed, 193 insertions, 215 deletions
diff --git a/dist/js/bootstrap-strength-meter.js b/dist/js/bootstrap-strength-meter.js
index e975ffc..e7ec1c8 100644
--- a/dist/js/bootstrap-strength-meter.js
+++ b/dist/js/bootstrap-strength-meter.js
@@ -9,125 +9,92 @@
"use strict";// jshint ;_;
var StrengthMeter = {
- core: {
- /**
- * Get options for score.
- */
- getScoreOptions: function(settings) {
- var options = [];
-
- for (var i = 0; i < settings.dictionaries.length; i++) {
- options[options.length] = {
- type: 'dictionary',
- dictionary: settings.dictionaries[i]
- };
-
- options[options.length] = {
- type: 'leet',
- dictionary: settings.dictionaries[i]
- };
- }
-
- for (var i = 0; i < settings.keyboards.length; i++) {
- options[options.length] = {
- type: 'keyboard',
- dictionary: settings.keyboards[i]
- };
- }
-
- options[options.length] = {
- type: 'repitition'
- };
-
- options[options.length] = {
- type: 'sequences'
- };
-
- options[options.length] = {
- type: 'dates'
- };
-
- return options;
- }
- },
progressBar: function(input, options) {
var defaults = {
container: input.parent(),
- base: 120,
+ base: 80,
hierarchy: {
'0': 'progress-bar-danger',
- '40': 'progress-bar-warning',
- '60': 'progress-bar-success'
+ '25': 'progress-bar-warning',
+ '50': 'progress-bar-success'
},
- dictionaries: [
-
- ],
- keyboards: [
-
- ]
- },
-
- settings = $.extend({}, defaults, options),
-
- template = '<div class="progress"><div class="progress-bar" role="progressbar" aria-valuemax="100" aria-valuemin="0" aria-valuenow="0"></div></div>',
-
- progress,
-
- progressBar,
-
- core = {
-
- /**
- * Initialize the plugin.
- */
- init: function() {
- progress = settings.container.append($(template));
- progressBar = $('.progress-bar', progress);
- input.on('keyup', core.keyup)
- .keyup();
- },
-
- /**
- * Update progress abr accordning
- */
- update: function(value) {
- var width = Math.floor(value/settings.base*100);
-
- if (width > 100) {
- width = 100;
- }
-
- progressBar
- .attr('area-valuenow', width)
- .css('width', width + '%');
-
- for (var value in settings.hierarchy) {
- if (width > value) {
- progressBar
- .removeClass()
- .addClass('progress-bar')
- .addClass(settings.hierarchy[value]);
- }
- }
- },
+ passwordScore: {
+ options: [],
+ append: true
+ }
+ };
- /**
- * Binding on keydown for updateing the progrssbar.
- */
- keyup: function(event) {
- var password = $(event.target).val()
- var value = 0;
+ var settings = $.extend(true, {}, defaults, options);
+
+ if (typeof options === 'object' && 'hierarchy' in options) {
+ settings.hierarchy = options.hierarchy;
+ }
+
+ var template = '<div class="progress"><div class="progress-bar" role="progressbar"></div></div>';
+ var progress;
+ var progressBar;
+
+ var core = {
+
+ /**
+ * Initialize the plugin.
+ */
+ init: function() {
+ progress = settings.container.append($(template));
+ progressBar = $('.progress-bar', progress);
+
+ progressBar.attr('aria-valuemin', 0)
+ .attr('aria-valuemay', 100);
+
+ input.on('keyup', core.keyup)
+ .keyup();
+ },
- if (password.length > 0) {
- var score = new Score(password);
- value = score.calculateEntropyScore(StrengthMeter.core.getScoreOptions(settings));
+ /**
+ * Update progress bar.
+ *
+ * @param {string} value
+ */
+ update: function(value) {
+ var width = Math.floor((value/settings.base)*100);
+
+ if (width > 100) {
+ width = 100;
+ }
+
+ progressBar
+ .attr('area-valuenow', width)
+ .css('width', width + '%');
+
+ for (var value in settings.hierarchy) {
+ if (width > value) {
+ progressBar
+ .removeClass()
+ .addClass('progress-bar')
+ .addClass(settings.hierarchy[value]);
}
+ }
+ },
- core.update(value);
- },
- };
+ /**
+ * Event binding on password input.
+ *
+ * @param {Object} event
+ */
+ keyup: function(event) {
+ var password = $(event.target).val();
+ var value = 0;
+
+ if (password.length > 0) {
+ var score = new Score(password);
+ value = score.calculateEntropyScore(settings.passwordScore.options, settings.passwordScore.append);
+ }
+
+ core.update(value);
+ }
+ };
core.init();
},
@@ -139,62 +106,68 @@
hierarchy: {
'0': ['text-danger', 'ridiculus'],
'10': ['text-danger', 'very weak'],
- '30': ['text-warning', 'weak'],
- '50': ['text-warning', 'good'],
- '70': ['text-success', 'strong'],
- '100': ['text-success', 'very strong'],
+ '20': ['text-warning', 'weak'],
+ '30': ['text-warning', 'good'],
+ '40': ['text-success', 'strong'],
+ '50': ['text-success', 'very strong']
},
- dictionaries: [
-
- ],
- keyboards: [
-
- ]
- },
-
- settings = $.extend({}, defaults, options),
+ passwordScore: {
+ options: [],
+ append: true
+ }
+ };
- core = {
+ var settings = $.extend(true, {}, defaults, options);
+
+ if (typeof options === 'object' && 'hierarchy' in options) {
+ settings.hierarchy = options.hierarchy;
+ }
- /**
- * Initialize the plugin.
- */
- init: function() {
- input.on('keyup', core.keyup)
- .keyup();
- },
+ var core = {
- /**
- * Update progress abr accordning
- */
- update: function(value) {
- for (var border in settings.hierarchy) {
- if (value >= border) {
- var text = settings.hierarchy[border][1];
- var color = settings.hierarchy[border][0];
-
- settings.container.text(text)
- .removeClass()
- .addClass(color);
- }
- }
- },
-
- /**
- * Binding on keydown for updateing the progrssbar.
- */
- keyup: function(event) {
- var password = $(event.target).val()
- var value = 0;
+ /**
+ * Initialize the plugin.
+ */
+ init: function() {
+ input.on('keyup', core.keyup)
+ .keyup();
+ },
- if (password.length > 0) {
- var score = new Score(password);
- value = score.calculateEntropyScore(StrengthMeter.core.getScoreOptions(settings));
- }
+ /**
+ * Update text element.
+ *
+ * @param {string} value
+ */
+ update: function(value) {
+ for (var border in settings.hierarchy) {
+ if (value >= border) {
+ var text = settings.hierarchy[border][1];
+ var color = settings.hierarchy[border][0];
+
+ settings.container.text(text)
+ .removeClass()
+ .addClass(color);
+ }
+ }
+ },
- core.update(value);
- },
- };
+ /**
+ * Event binding on input element.
+ *
+ * @param {Object} event
+ */
+ keyup: function(event) {
+ var password = $(event.target).val();
+ var value = 0;
+
+ if (password.length > 0) {
+ var score = new Score(password);
+ value = score.calculateEntropyScore(settings.passwordScore.options, settings.passwordScore.append);
+ }
+
+ core.update(value);
+ }
+ };
core.init();
},
@@ -205,80 +178,85 @@
hierarchy: {
'0': 'ridiculus',
'10': 'very weak',
- '30': 'weak',
- '50': 'good',
- '70': 'string',
- '100': 'very strong',
+ '20': 'weak',
+ '30': 'good',
+ '40': 'string',
+ '50': 'very strong'
},
- dictionaries: [
-
- ],
- keyboards: [
-
- ]
- },
-
- settings = $.extend({}, defaults, options),
+ tooltip: {
+ placement: 'right'
+ },
+ passwordScore: {
+ options: [],
+ append: true
+ }
+ };
- core = {
+ var settings = $.extend(true, {}, defaults, options);
+
+ if (typeof options === 'object' && 'hierarchy' in options) {
+ settings.hierarchy = options.hierarchy;
+ }
- /**
- * Initialize the plugin.
- */
- init: function() {
- input.tooltip({
- title: ''
- });
-
- input.on('keyup', core.keyup)
- .keyup();
- },
+ var core = {
- /**
- * Update progress abr accordning
- */
- update: function(value) {
- for (var border in settings.hierarchy) {
- if (value >= border) {
- var text = settings.hierarchy[border];
-
- input.attr('data-original-title', text)
- .tooltip('show');
- }
- }
- },
+ /**
+ * Initialize the plugin.
+ */
+ init: function() {
+ input.tooltip(settings.tooltip);
- /**
- * Binding on keydown for updateing the progrssbar.
- */
- keyup: function(event) {
- var password = $(event.target).val()
- var value = 0;
+ input.on('keyup', core.keyup)
+ .keyup();
+ },
- if (password.length > 0) {
- var score = new Score(password);
- value = score.calculateEntropyScore(StrengthMeter.core.getScoreOptions(settings));
- }
+ /**
+ * Update tooltip.
+ *
+ * @param {string} value
+ */
+ update: function(value) {
+ for (var border in settings.hierarchy) {
+ if (value >= border) {
+ var text = settings.hierarchy[border];
+
+ input.attr('data-original-title', text)
+ .tooltip('show');
+ }
+ }
+ },
- core.update(value);
- },
- };
+ /**
+ * Event binding on input element.
+ *
+ * @param {Object} event
+ */
+ keyup: function(event) {
+ var password = $(event.target).val();
+ var value = 0;
+
+ if (password.length > 0) {
+ var score = new Score(password);
+ value = score.calculateEntropyScore(settings.passwordScore.options, settings.passwordScore.append);
+ }
+
+ core.update(value);
+ }
+ };
core.init();
- },
- }
+ }
+ };
$.fn.strengthMeter = function(type, options) {
- if (type === undefined) {
- return;
- }
+ type = (type === undefined) ? 'tooltip' : type;
if (!type in StrengthMeter) {
return;
}
- var instance = this.data('strengthMeter'),
- elem = this;
+ var instance = this.data('strengthMeter');
+ var elem = this;
return elem.each(function() {
var strengthMeter;