Viewing File: /usr/local/cpanel/share/libraries/cjt2/src/util/passwordGenerator.js
/*
# cjt/utils/passwordGenerator.js Copyright(c) 2020 cPanel, L.L.C.
# All rights reserved.
# copyright@cpanel.net http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited
*/
/* global define: false */
define(["lodash"], function(_) {
var MINIMUM_LENGTH = 5;
var MAXIMUM_LENGTH = 18;
var DEFAULT_OPTIONS = {
length: 12,
uppercase: true,
lowercase: true,
numbers: true,
symbols: true
};
var CHARACTER_SETS = {
uppercase: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
lowercase: "abcdefghijklmnopqrstuvwxyz",
numbers: "0123456789",
symbols: "!@#$%^&*()-_=+{}[];,.?~"
};
var _buildCharacterSet = function(options) {
var chars = "";
if (options.uppercase) {
chars += CHARACTER_SETS.uppercase;
}
if (options.lowercase) {
chars += CHARACTER_SETS.lowercase;
}
if (options.numbers) {
chars += CHARACTER_SETS.numbers;
}
if (options.symbols) {
chars += CHARACTER_SETS.symbols;
}
return chars;
};
return {
MINIMUM_LENGTH: MINIMUM_LENGTH,
MAXIMUM_LENGTH: MAXIMUM_LENGTH,
DEFAULT_OPTIONS: DEFAULT_OPTIONS,
CHARACTER_SETS: CHARACTER_SETS,
generate: function(options) {
if (!options) {
options = {};
}
// Set the defaults
_.defaults(options, DEFAULT_OPTIONS);
// Validate the types of characters
if (!options.uppercase && !options.lowercase && !options.numbers && !options.symbols) {
throw "invalid options, you must select at lest one character set to generate from.";
}
// Validate the length and adjust as needed.
if (_.isUndefined(options.length) || !_.isNumber(options.length) || options.length < MINIMUM_LENGTH) {
options.length = DEFAULT_OPTIONS.length;
} else if (options.length > MAXIMUM_LENGTH) {
options.length = MAXIMUM_LENGTH;
}
var chars = _buildCharacterSet(options);
// generate the password
var password = "";
for (var i = 0; i < options.length; i++) {
var index = Math.floor(Math.random() * chars.length);
password += chars.substring(index, index + 1);
}
return password;
},
_buildCharacterSet: _buildCharacterSet
};
});
Back to Directory
File Manager