mirror of
				https://github.com/privacyguides/privacyguides.org.git
				synced 2025-11-04 05:17:57 +00:00 
			
		
		
		
	modularized random number generation logic
This commit is contained in:
		@@ -1,29 +1,35 @@
 | 
			
		||||
var passwordGenerator = (function() {
 | 
			
		||||
  return {
 | 
			
		||||
    generatePassword: function (options) {
 | 
			
		||||
      var uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXTZ";
 | 
			
		||||
      var lowercase = "abcdefghiklmnopqrstuvwxyz";
 | 
			
		||||
      var numbers = "0123456789";
 | 
			
		||||
      var punct = ".,-/#!$%^&*;:{}=-_`~()]";
 | 
			
		||||
      var candidates = '';
 | 
			
		||||
      if (options.includeUppercaseChars) {
 | 
			
		||||
        candidates += uppercase;
 | 
			
		||||
      }
 | 
			
		||||
      if (options.includeLowercaseChars) {
 | 
			
		||||
        candidates += lowercase;
 | 
			
		||||
      }
 | 
			
		||||
      if (options.includeNumbers) {
 | 
			
		||||
        candidates += numbers;
 | 
			
		||||
      }
 | 
			
		||||
      if (options.includePunctuationChars) {
 | 
			
		||||
        candidates += punct;
 | 
			
		||||
      }
 | 
			
		||||
      var result = "";
 | 
			
		||||
      for (var i = 0; i < options.passwordLength; i++) {
 | 
			
		||||
        var randomNum = Math.floor(Math.random() * candidates.length);
 | 
			
		||||
        result += candidates.substring(randomNum, randomNum + 1);
 | 
			
		||||
      }
 | 
			
		||||
      return result;
 | 
			
		||||
  var generateRandomNum = function (max) {
 | 
			
		||||
    return Math.floor(Math.random() * max);
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  var generatePassword = function (options) {
 | 
			
		||||
    var uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXTZ";
 | 
			
		||||
    var lowercase = "abcdefghiklmnopqrstuvwxyz";
 | 
			
		||||
    var numbers = "0123456789";
 | 
			
		||||
    var punct = ".,-/#!$%^&*;:{}=-_`~()]";
 | 
			
		||||
    var candidates = '';
 | 
			
		||||
    if (options.includeUppercaseChars) {
 | 
			
		||||
      candidates += uppercase;
 | 
			
		||||
    }
 | 
			
		||||
    if (options.includeLowercaseChars) {
 | 
			
		||||
      candidates += lowercase;
 | 
			
		||||
    }
 | 
			
		||||
    if (options.includeNumbers) {
 | 
			
		||||
      candidates += numbers;
 | 
			
		||||
    }
 | 
			
		||||
    if (options.includePunctuationChars) {
 | 
			
		||||
      candidates += punct;
 | 
			
		||||
    }
 | 
			
		||||
    var result = "";
 | 
			
		||||
    for (var i = 0; i < options.passwordLength; i++) {
 | 
			
		||||
      var randomNum = generateRandomNum(candidates.length);
 | 
			
		||||
      result += candidates.substring(randomNum, randomNum + 1);
 | 
			
		||||
    }
 | 
			
		||||
    return result;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  return {
 | 
			
		||||
    generatePassword: generatePassword
 | 
			
		||||
  };
 | 
			
		||||
})();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user