Name
global.PwdDefaultAutoGenPassword
Description
Password generate extension. Generates password from a random word and 4 digits
Script
var PwdDefaultAutoGenPassword = Class.create();
PwdDefaultAutoGenPassword.prototype = {
category: 'password_reset.extension.password_generator', // DO NOT REMOVE THIS LINE!
CHAR_LENGTH : 7,
MAX_CHAR_REPETATION_LENGTH : 2,
REG_EX_LOWER_CASE : /[a-z]/,
REG_EX_UPPER_CASE : /[A-Z]/,
initialize: function() {},
/*
* Returns an auto-generated string password
*
* @param params.credentialStoreId The sys-id of the calling password-reset process (table: pwd_process)
* @return An auto-generated string password.
*/
process: function(params) {
return this.generatePassword();
},
/*
* function generatePassword
*
* returns a string with a randomaly generated password
*/
generatePassword: function() {
var pwd = this._generateString(this.CHAR_LENGTH);
// Add random 4 digits (with no 3-digit repeats and not 3-digit sequences)
var digitsStr = "";
var prevDigit = -2;
var incrDigit = false;
var decrDigit = false;
var sameDigit = false;
for (i = 0; i < 4; i++) {
var digit;
do {
digit = GlideSecureRandomUtil.getSecureRandomIntBound(10);
} while ((sameDigit && (digit == prevDigit)) ||
(incrDigit && (digit == prevDigit + 1)) ||
(decrDigit && (digit == prevDigit - 1)));
sameDigit = (digit == prevDigit);
incrDigit = (digit == prevDigit + 1);
decrDigit = (digit == prevDigit - 1);
digitsStr += digit;
prevDigit = digit;
}
pwd += digitsStr;
// Add a random special charecter:
var specialCaracters = "!@#$%&*?+-=";
pwd += specialCaracters.charAt(GlideSecureRandomUtil.getSecureRandomIntBound(specialCaracters.length));
return pwd;
},
_getRandomString: function(length) {
var result = '';
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
var charactersLength = characters.length;
for (var i = 0; i < length; i++) {
result += characters.charAt(GlideSecureRandomUtil.getSecureRandomIntBound(charactersLength));
}
return result;
},
_generateString: function(length) {
var password = '';
do {
password = this._getRandomString(length);
} while (!this._isPasswordValid(password));
return password;
},
_isPasswordValid: function(password) {
return this.REG_EX_LOWER_CASE.test(password) && this.REG_EX_UPPER_CASE.test(password) && this._checkRepetitionOfChars(password);
},
_checkRepetitionOfChars: function(password) {
var passwordLowerCase = password.toLowerCase();
var map = {};
for (i = 0; i < passwordLowerCase.length; i++) {
if (map[passwordLowerCase[i]] == null)
map[passwordLowerCase[i]] = 1;
else
map[passwordLowerCase[i]] = map[passwordLowerCase[i]] + 1;
}
for (var key in map) {
if (map[key] > this.MAX_CHAR_REPETATION_LENGTH)
return false;
}
return true;
},
type: 'PwdDefaultAutoGenPassword'
};
Sys ID
33143893bf110100710071a7bf0739ba