Index: branches/5.0.x/core/units/users/users_event_handler.php =================================================================== diff -u -r12159 -r12296 --- branches/5.0.x/core/units/users/users_event_handler.php (.../users_event_handler.php) (revision 12159) +++ branches/5.0.x/core/units/users/users_event_handler.php (.../users_event_handler.php) (revision 12296) @@ -1,6 +1,6 @@ _makePasswordRequired($event); + $email_as_login = $this->Application->ConfigValue('Email_As_Login'); $object =& $event->getObject(); if (!$this->checkBanRules($object)) { @@ -1816,6 +1818,50 @@ return !$found; } + + /** + * Makes password required for new users + * + * @param kEvent $event + */ + function OnPreCreate(&$event) + { + parent::OnPreCreate($event); + + if ($event->status == erSUCCESS) { + $this->_makePasswordRequired($event); + } + } + + /** + * Makes password required for new users + * + * @param kEvent $event + */ + function OnNew(&$event) + { + parent::OnNew($event); + + if ($event->status == erSUCCESS) { + $this->_makePasswordRequired($event); + } + } + + /** + * Makes password required for new users + * + * @param kEvent $event + */ + function _makePasswordRequired(&$event) + { + $object =& $event->getObject(); + /* @var $object kDBItem */ + + $required_fields = Array ('Password', 'Password_plain', 'VerifyPassword', 'VerifyPassword_plain'); + foreach ($required_fields as $required_field) { + $object->setRequired($required_field); + } + } } ?> \ No newline at end of file Index: branches/5.0.x/core/admin_templates/incs/form_blocks.tpl =================================================================== diff -u -r12270 -r12296 --- branches/5.0.x/core/admin_templates/incs/form_blocks.tpl (.../form_blocks.tpl) (revision 12270) +++ branches/5.0.x/core/admin_templates/incs/form_blocks.tpl (.../form_blocks.tpl) (revision 12296) @@ -171,8 +171,18 @@ - + + + Index: branches/5.0.x/core/admin_templates/users/users_edit.tpl =================================================================== diff -u -r12117 -r12296 --- branches/5.0.x/core/admin_templates/users/users_edit.tpl (.../users_edit.tpl) (revision 12117) +++ branches/5.0.x/core/admin_templates/users/users_edit.tpl (.../users_edit.tpl) (revision 12296) @@ -50,13 +50,6 @@ a_toolbar.DisableButton('prev'); - - addLoadEvent( - function() { - // fixes Firefox 2.0+ bug will password autocomplete - document.getElementById('').value = ''; - } - ); Index: branches/5.0.x/core/admin_templates/users/admins_edit.tpl =================================================================== diff -u -r12117 -r12296 --- branches/5.0.x/core/admin_templates/users/admins_edit.tpl (.../admins_edit.tpl) (revision 12117) +++ branches/5.0.x/core/admin_templates/users/admins_edit.tpl (.../admins_edit.tpl) (revision 12296) @@ -51,13 +51,6 @@ a_toolbar.DisableButton('prev'); - - addLoadEvent( - function() { - // fixes Firefox 2.0+ bug will password autocomplete - document.getElementById('').value = ''; - } - ); Index: branches/5.0.x/core/kernel/utility/formatters/password_formatter.php =================================================================== diff -u -r12279 -r12296 --- branches/5.0.x/core/kernel/utility/formatters/password_formatter.php (.../password_formatter.php) (revision 12279) +++ branches/5.0.x/core/kernel/utility/formatters/password_formatter.php (.../password_formatter.php) (revision 12296) @@ -1,6 +1,6 @@ $field_name, 'formatter' => 'kPasswordFormatter'); - if (isset($field_options['encryption_method'])) { - $options['encryption_method'] = $field_options['encryption_method']; + if ( isset( $field_options['verify_field'] ) ) { + $add_fields = Array (); + $options = Array ('master_field' => $field_name, 'formatter' => 'kPasswordFormatter'); + + $copy_options = Array ('encryption_method', 'salt', 'required', 'skip_empty'); + foreach ($copy_options as $copy_option) { + if (array_key_exists($copy_option, $field_options)) { + $options[$copy_option] = $field_options[$copy_option]; + } } - if (isset($field_options['salt'])) { - $options['salt'] = $field_options['salt']; - } - if (isset($field_options['required'])) { - $options['required'] = $field_options['required']; - } + $add_fields[ $field_options['verify_field'] ] = $options; $add_fields[$field_name.'_plain'] = Array('type'=>'string', 'error_field'=>$field_name); @@ -57,46 +55,44 @@ { $options = $object->GetFieldOptions($field_name); - $fields = Array('master_field','verify_field'); - $fields_set = true; $flip_count = 0; - while($flip_count < 2) - { - if( getArrayValue($options,$fields[0]) ) - { + $fields_set = true; + $fields = Array ('master_field', 'verify_field'); + + // 1. collect values from both Password and VerifyPassword fields + while ($flip_count < 2) { + if ( getArrayValue($options, $fields[0]) ) { $object->SetDBField($field_name.'_plain', $value); - if( !getArrayValue($object->Fields[ $options[ $fields[0] ] ], $fields[1].'_set') ) - { + + if ( !getArrayValue($object->Fields[ $options[ $fields[0] ] ], $fields[1].'_set') ) { $object->Fields[ $options[ $fields[0] ] ][$fields[1].'_set'] = true; } $password_field = $options[ $fields[0] ]; $verify_field = $field_name; } + $fields = array_reverse($fields); $flip_count++; } $salt = isset($object->Fields[$password_field]['salt']) ? $object->Fields[$password_field]['salt'] : ''; - if( getArrayValue($object->Fields[$password_field], 'verify_field_set') && getArrayValue($object->Fields[$verify_field], 'master_field_set') ) - { - $new_password = $object->GetDBField($password_field.'_plain'); - $verify_password = $object->GetDBField($verify_field.'_plain'); - if($new_password == '' && $verify_password == '') - { - if( $object->GetDBField($password_field) != $this->EncryptPassword('', $salt) ) { + if (getArrayValue($object->Fields[$password_field], 'verify_field_set') && getArrayValue($object->Fields[$verify_field], 'master_field_set')) { + $new_password = $object->GetDBField($password_field . '_plain'); + $verify_password = $object->GetDBField($verify_field . '_plain'); + + if ($new_password == '' && $verify_password == '') { + // both passwords are empty -> keep old password + if ($object->GetDBField($password_field) != $this->EncryptPassword('', $salt)) { if ($options['encryption_method'] == 'plain') { return $value; } return $this->EncryptPassword($value); } else { - $object->Fields[$password_field.'_plain']['required'] = true; - $object->Fields[$verify_field.'_plain']['required'] = true; - - return null; + return $value; } } @@ -112,9 +108,15 @@ $object->SetError($password_field, 'passwords_min_length', $error_msg); } } - if($value == '') return $object->GetDBField($field_name); - if ($options['encryption_method'] == 'plain') return $value; + if ($value == '') { + return $object->GetDBField($field_name); + } + + if ($options['encryption_method'] == 'plain') { + return $value; + } + return $this->EncryptPassword($value, $salt); }