mirror of
				https://github.com/janeczku/calibre-web
				synced 2025-10-30 23:03:02 +00:00 
			
		
		
		
	Improved js password strength check
Improved check of CJK-Characters
This commit is contained in:
		| @@ -9,6 +9,7 @@ | ||||
|     "wordSequences": "Das Passwort enthält Buchstabensequenzen", | ||||
|     "wordLowercase": "Bitte mindestens einen Kleinbuchstaben verwenden", | ||||
|     "wordUppercase": "Bitte mindestens einen Großbuchstaben verwenden", | ||||
|     "word": "Bitte mindestens einen Buchstaben verwenden", | ||||
|     "wordOneNumber": "Bitte mindestens eine Ziffern verwenden", | ||||
|     "wordOneSpecialChar": "Bitte mindestens ein Sonderzeichen verwenden", | ||||
|     "errorList": "Fehler:", | ||||
|   | ||||
| @@ -8,6 +8,7 @@ | ||||
|     "wordRepetitions": "Too many repetitions", | ||||
|     "wordSequences": "Your password contains sequences", | ||||
|     "wordLowercase": "Use at least one lowercase character", | ||||
|     "word": "Use at least one character", | ||||
|     "wordUppercase": "Use at least one uppercase character", | ||||
|     "wordOneNumber": "Use at least one number", | ||||
|     "wordOneSpecialChar": "Use at least one special character", | ||||
|   | ||||
| @@ -144,13 +144,13 @@ try { | ||||
|  | ||||
|     validation.wordTwoCharacterClasses = function(options, word, score) { | ||||
|         var specialCharRE = new RegExp( | ||||
|             '(.' + options.rules.specialCharClass + ')' | ||||
|             '(.' + options.rules.specialCharClass + ')', 'u' | ||||
|         ); | ||||
|  | ||||
|         if ( | ||||
|             word.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/) || | ||||
|             (word.match(/([a-zA-Z])/) && word.match(/([0-9])/)) || | ||||
|             (word.match(specialCharRE) && word.match(/[a-zA-Z0-9_]/)) | ||||
|             word.match(/(\p{Ll}.*\p{Lu})|(\p{Lu}.*\p{Ll})/u) || | ||||
|             (word.match(/(\p{Letter})/u) && word.match(/([0-9])/)) || | ||||
|             (word.match(specialCharRE) && word.match(/[\p{Letter}0-9_]/u)) | ||||
|         ) { | ||||
|             return score; | ||||
|         } | ||||
| @@ -202,11 +202,15 @@ try { | ||||
|     }; | ||||
|  | ||||
|     validation.wordLowercase = function(options, word, score) { | ||||
|         return word.match(/[a-z]/) && score; | ||||
|         return word.match(/\p{Ll}/u) && score; | ||||
|     }; | ||||
|  | ||||
|     validation.wordUppercase = function(options, word, score) { | ||||
|         return word.match(/[A-Z]/) && score; | ||||
|         return word.match(/\p{Lu}/u) && score; | ||||
|     }; | ||||
|  | ||||
|     validation.word = function(options, word, score) { | ||||
|         return word.match(/\p{Letter}/u) && score; | ||||
|     }; | ||||
|  | ||||
|     validation.wordOneNumber = function(options, word, score) { | ||||
| @@ -218,7 +222,7 @@ try { | ||||
|     }; | ||||
|  | ||||
|     validation.wordOneSpecialChar = function(options, word, score) { | ||||
|         var specialCharRE = new RegExp(options.rules.specialCharClass); | ||||
|         var specialCharRE = new RegExp(options.rules.specialCharClass, 'u'); | ||||
|         return word.match(specialCharRE) && score; | ||||
|     }; | ||||
|  | ||||
| @@ -228,27 +232,27 @@ try { | ||||
|                 options.rules.specialCharClass + | ||||
|                 '.*' + | ||||
|                 options.rules.specialCharClass + | ||||
|                 ')' | ||||
|                 ')', 'u' | ||||
|         ); | ||||
|  | ||||
|         return word.match(twoSpecialCharRE) && score; | ||||
|     }; | ||||
|  | ||||
|     validation.wordUpperLowerCombo = function(options, word, score) { | ||||
|         return word.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/) && score; | ||||
|         return word.match(/(\p{Ll}.*\p{Lu})|(\p{Lu}.*\p{Ll})/u) && score; | ||||
|     }; | ||||
|  | ||||
|     validation.wordLetterNumberCombo = function(options, word, score) { | ||||
|         return word.match(/([a-zA-Z])/) && word.match(/([0-9])/) && score; | ||||
|         return word.match(/([\p{Letter}])/u) && word.match(/([0-9])/) && score; | ||||
|     }; | ||||
|  | ||||
|     validation.wordLetterNumberCharCombo = function(options, word, score) { | ||||
|         var letterNumberCharComboRE = new RegExp( | ||||
|             '([a-zA-Z0-9].*' + | ||||
|             '([\p{Letter}0-9].*' + | ||||
|                 options.rules.specialCharClass + | ||||
|                 ')|(' + | ||||
|                 options.rules.specialCharClass + | ||||
|                 '.*[a-zA-Z0-9])' | ||||
|                 '.*[\p{Letter}0-9])', 'u' | ||||
|         ); | ||||
|  | ||||
|         return word.match(letterNumberCharComboRE) && score; | ||||
| @@ -341,6 +345,7 @@ defaultOptions.rules.scores = { | ||||
|     wordTwoCharacterClasses: 2, | ||||
|     wordRepetitions: -25, | ||||
|     wordLowercase: 1, | ||||
|     word: 1, | ||||
|     wordUppercase: 3, | ||||
|     wordOneNumber: 3, | ||||
|     wordThreeNumbers: 5, | ||||
| @@ -361,6 +366,7 @@ defaultOptions.rules.activated = { | ||||
|     wordTwoCharacterClasses: true, | ||||
|     wordRepetitions: true, | ||||
|     wordLowercase: true, | ||||
|     word: true, | ||||
|     wordUppercase: true, | ||||
|     wordOneNumber: true, | ||||
|     wordThreeNumbers: true, | ||||
| @@ -372,7 +378,7 @@ defaultOptions.rules.activated = { | ||||
|     wordIsACommonPassword: true | ||||
| }; | ||||
| defaultOptions.rules.raisePower = 1.4; | ||||
| defaultOptions.rules.specialCharClass = "(?=.*?[^A-Za-z\s0-9])"; //'[!,@,#,$,%,^,&,*,?,_,~]'; | ||||
| defaultOptions.rules.specialCharClass = "(?=.*?[^\\p{Letter}\\s0-9])"; //'[!,@,#,$,%,^,&,*,?,_,~]'; | ||||
| // List taken from https://github.com/danielmiessler/SecLists (MIT License) | ||||
| defaultOptions.rules.commonPasswords = [ | ||||
|     '123456', | ||||
|   | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -38,22 +38,20 @@ $(document).ready(function() { | ||||
|                 showVerdicts: false, | ||||
|             } | ||||
|             options.rules= { | ||||
|                 specialCharClass: "(?=.*?[^A-Za-z\\s0-9])", | ||||
|                 specialCharClass: "(?=.*?[^\\p{Letter}\\s0-9])", | ||||
|                 activated: { | ||||
|                     wordNotEmail: false, | ||||
|                     wordMinLength: $('#password').data("min"), | ||||
|                     // wordMaxLength: false, | ||||
|                     // wordInvalidChar: true, | ||||
|                     wordSimilarToUsername: false, | ||||
|                     wordSequences: false, | ||||
|                     wordTwoCharacterClasses: false, | ||||
|                     wordRepetitions: false, | ||||
|                     wordLowercase: $('#password').data("lower") === "True" ? true : false, | ||||
|                     wordUppercase: $('#password').data("upper") === "True" ? true : false, | ||||
|                     word: $('#password').data("word") === "True" ? true : false, | ||||
|                     wordOneNumber: $('#password').data("number") === "True" ? true : false, | ||||
|                     wordThreeNumbers: false, | ||||
|                     wordOneSpecialChar: $('#password').data("special") === "True" ? true : false, | ||||
|                     // wordTwoSpecialChar: true, | ||||
|                     wordUpperLowerCombo: false, | ||||
|                     wordLetterNumberCombo: false, | ||||
|                     wordLetterNumberCharCombo: false | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Ozzie Isaacs
					Ozzie Isaacs