Index: trunk/core/kernel/utility/formatters/password_formatter.php =================================================================== diff -u -r6428 -r7391 --- trunk/core/kernel/utility/formatters/password_formatter.php (.../password_formatter.php) (revision 6428) +++ trunk/core/kernel/utility/formatters/password_formatter.php (.../password_formatter.php) (revision 7391) @@ -10,7 +10,13 @@ if( isset( $field_options['verify_field'] ) ) { $add_fields = Array(); - $options = Array('master_field' => $field_name, 'formatter'=>'kPasswordFormatter'); + $options = Array('master_field' => $field_name, 'formatter' => 'kPasswordFormatter'); + if (isset($field_options['encryption_method'])) { + $options['encryption_method'] = $field_options['encryption_method']; + } + if (isset($field_options['salt'])) { + $options['salt'] = $field_options['salt']; + } $add_fields[ $field_options['verify_field'] ] = $options; $add_fields[$field_name.'_plain'] = Array('type'=>'string', 'error_field'=>$field_name); @@ -49,15 +55,16 @@ $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('') ) + if( $object->GetDBField($password_field) != $this->EncryptPassword('', $salt) ) { if ($options['encryption_method'] == 'plain') return $value; return $this->EncryptPassword($value); @@ -90,12 +97,15 @@ if($value == '') return $object->GetDBField($field_name); if ($options['encryption_method'] == 'plain') return $value; - return $this->EncryptPassword($value); + return $this->EncryptPassword($value, $salt); } function EncryptPassword($value, $salt=null) { - if (!isset($salt)) return md5($value); + if (!isset($salt) || !$salt) { + // if empty salt, assume, that it's not passed at all + return md5($value); + } return md5(md5($value).$salt); } } \ No newline at end of file