@@ -56,20 +56,20 @@ $.fn.editable.defaults.select2 = {
5656} ) ( ) ;
5757
5858function validatePassword ( password ) {
59- if ( password . length < 10 ) {
60- return "Password has to be at least 10 characters long" ;
61- }
59+ return validatePasswordLength ( password ) &&
60+ validatePasswordCharacterGroups ( password ) ;
61+ }
6262
63+ function validatePasswordLength ( password ) {
64+ return password . length >= 10 ;
65+ }
66+ function validatePasswordCharacterGroups ( password ) {
6367 lower_case = new RegExp ( '[a-z]' ) . test ( password ) ;
6468 upper_case = new RegExp ( '[A-Z]' ) . test ( password ) ;
6569 numbers = new RegExp ( '[0-9]' ) . test ( password ) ;
6670 special = new RegExp ( '[^a-zA-Z0-9]' ) . test ( password ) ;
6771
68- if ( lower_case + upper_case + numbers + special < 3 ) {
69- return "You must have characters from at least 3 character groups (a-z, A-Z, 0-9, special)" ;
70- }
71-
72- return "OK" ;
72+ return ( lower_case + upper_case + numbers + special ) >= 3
7373}
7474
7575$ ( document ) . ready ( function ( ) {
@@ -102,41 +102,56 @@ $(document).ready(function(){
102102 */
103103 $ ( '#password-modal' ) . on ( 'shown' , function ( ) {
104104 $ ( '#password-modal input:visible' ) . first ( ) . focus ( ) ;
105+ $ ( '#password-length' ) . show ( ) ;
106+ $ ( '#password-character-groups' ) . show ( ) ;
107+ $ ( '#passwords-matching' ) . hide ( ) ;
105108 } ) ;
106109
107110 $ ( '#password-modal' ) . on ( 'hide' , function ( ) {
108111 $ ( '#password-new, #password-new-again, #password-current' ) . val ( '' ) ;
109112 $ ( '#password-status, #password-status-again' ) . html ( '' ) ;
110113 $ ( '#password-new-again' ) . change ( ) ;
114+ $ ( '#wrong-password-alert' ) . hide ( ) ;
111115 } ) ;
112116 /* validations */
113117 $ ( '#password-new' ) . bind ( "change paste keyup" , function ( ) {
114- $ ( '#password-status' ) . html ( validatePassword ( $ ( this ) . val ( ) ) ) ;
118+ if ( ! validatePasswordLength ( $ ( this ) . val ( ) ) ) {
119+ $ ( '#password-length' ) . show ( ) ;
120+ } else {
121+ $ ( '#password-length' ) . hide ( ) ;
122+ }
123+ if ( ! validatePasswordCharacterGroups ( $ ( this ) . val ( ) ) ) {
124+ $ ( '#password-character-groups' ) . show ( ) ;
125+ } else {
126+ $ ( '#password-character-groups' ) . hide ( ) ;
127+ }
115128 $ ( '#password-new-again' ) . change ( ) ;
116129 } ) ;
117130
118131 $ ( '#password-new-again' ) . bind ( "change paste keyup" , function ( ) {
119- var state = "No match" ;
120132 if ( $ ( this ) . val ( ) === $ ( '#password-new' ) . val ( ) && $ ( this ) . val ( ) . length > 0 ) {
121- state = "OK" ;
122- if ( validatePassword ( $ ( '#password-new' ) . val ( ) ) === "OK" ) {
133+ $ ( '#passwords-matching' ) . hide ( ) ;
134+ if ( validatePassword ( $ ( '#password-new' ) . val ( ) ) ) {
123135 $ ( '#password-change' ) . removeClass ( 'btn-warning' ) . addClass ( 'btn-success' ) . removeAttr ( 'disabled' ) ;
124136 }
125137 } else {
138+ $ ( '#passwords-matching' ) . show ( ) ;
126139 $ ( '#password-change' ) . removeClass ( 'btn-success' ) . addClass ( 'btn-warning' ) . attr ( 'disabled' , 'disabled' ) ;
127140 }
128141 if ( $ ( this ) . val ( ) . length < 1 ) {
129- state = "" ;
142+ $ ( '#passwords-matching' ) . hide ( ) ;
130143 }
131- $ ( '#password-status-again' ) . html ( state ) ;
132144 } ) ;
133145
134146 /* custom ajax post */
135147 $ ( '#password-change' ) . click ( function ( ) {
136- if ( $ ( '#password-new' ) . val ( ) === $ ( '#password-new-again' ) . val ( ) && validatePassword ( $ ( '#password-new' ) . val ( ) ) === "OK" ) {
148+ if ( $ ( '#password-new' ) . val ( ) === $ ( '#password-new-again' ) . val ( ) && validatePassword ( $ ( '#password-new' ) . val ( ) ) ) {
137149 $ . post ( $ ( this ) . attr ( 'data-url' ) , { 'password' : $ ( '#password-new' ) . val ( ) , 'old_password' : $ ( '#password-current' ) . val ( ) || "" } )
138150 . done ( function ( ) { $ ( '#password-cancel' ) . click ( ) ; } )
139- . fail ( function ( data ) { $ ( '#password-status-again' ) . html ( data . responseText ) ; } ) ;
151+ . fail ( function ( data ) {
152+ $ ( '#wrong-password-alert' ) . html ( data . responseText . replace ( / \" / g, "" ) ) ;
153+ $ ( '#wrong-password-alert' ) . show ( ) ;
154+ } ) ;
140155 } else {
141156 return ;
142157 }
0 commit comments