Index: units/users/users_config.php =================================================================== --- units/users/users_config.php (revision 15527) +++ units/users/users_config.php (working copy) @@ -489,19 +489,11 @@ 'error_msgs' => Array ( 'required' => '!lu_ferror_forgotpw_nodata!', 'unknown_username' => '!lu_ferror_unknown_username!', - 'reset_denied' => '!lu_ferror_reset_denied!', + 'unknown_email' => '!lu_ferror_unknown_email!', + 'reset_denied' => '!lu_ferror_reset_denied!', ), - 'default' => '' + 'required' => 1, 'default' => '' ), - 'ForgotEmail' => Array ( - 'type' => 'string', - 'error_msgs' => Array ( - 'required' => '!lu_ferror_forgotpw_nodata!', - 'unknown_email' => '!lu_ferror_unknown_email!', - 'reset_denied' => '!lu_ferror_reset_denied!', - ), - 'default' => '' - ), ), ), Index: units/users/users_event_handler.php =================================================================== --- units/users/users_event_handler.php (revision 15569) +++ units/users/users_event_handler.php (working copy) @@ -851,56 +851,43 @@ $field_values = $this->getSubmittedFields($event); $object->SetFieldsFromHash($field_values, $this->getRequestProtectedFields($field_values)); - $user_object = $this->Application->recallObject('u.tmp', null, Array('skip_autoload' => true)); - /* @var $user_object UsersItem */ + $user = $this->Application->recallObject('u.tmp', null, Array ('skip_autoload' => true)); + /* @var $user UsersItem */ $found = $allow_reset = false; - $username = $object->GetDBField('ForgotLogin'); - $email = $object->GetDBField('ForgotEmail'); + $email_or_username = $object->GetDBField('ForgotLogin'); + $is_email = strpos($email_or_username, '@') !== false; - if ( strlen($username) ) { - $user_object->Load($username, 'Username'); + if ( strlen($email_or_username) ) { + $user->Load($email_or_username, $is_email ? 'Email' : 'Username'); } - elseif ( strlen($email) ) { - $user_object->Load($email, 'Email'); - } - if ( $user_object->isLoaded() ) { + if ( $user->isLoaded() ) { $min_pwd_reset_delay = $this->Application->ConfigValue('Users_AllowReset'); - $found = ($user_object->GetDBField('Status') == STATUS_ACTIVE) && strlen( $user_object->GetDBField('Password') ); + $found = ($user->GetDBField('Status') == STATUS_ACTIVE) && strlen($user->GetDBField('Password')); - if ( !$user_object->GetDBField('PwResetConfirm') ) { + if ( !$user->GetDBField('PwResetConfirm') ) { // no reset made -> allow $allow_reset = true; } else { // reset made -> wait N minutes, then allow - $allow_reset = adodb_mktime() > $user_object->GetDBField('PwRequestTime') + $min_pwd_reset_delay; + $allow_reset = TIMENOW > $user->GetDBField('PwRequestTime') + $min_pwd_reset_delay; } } - if ($found && $allow_reset) { - $this->Application->EmailEventUser('USER.PSWDC', $user_object->GetID()); + if ( $found && $allow_reset ) { + $this->Application->EmailEventUser('USER.PSWDC', $user->GetID()); $event->redirect = $this->Application->GetVar('template_success'); - return ; + return; } - if ( !strlen($username) && !strlen($email) ) { - $object->SetError('ForgotLogin', 'required'); - $object->SetError('ForgotEmail', 'required'); + if ( strlen($email_or_username) ) { + $object->SetError('ForgotLogin', $found ? 'reset_denied' : ($is_email ? 'unknown_email' : 'unknown_username')); } - else { - if ( strlen($username) ) { - $object->SetError('ForgotLogin', $found ? 'reset_denied' : 'unknown_username'); - } - if ( strlen($email) ) { - $object->SetError('ForgotEmail', $found ? 'reset_denied' : 'unknown_email'); - } - } - - if ( !$object->ValidateField('ForgotLogin') || !$object->ValidateField('ForgotEmail') ) { + if ( !$object->ValidateField('ForgotLogin') ) { $event->status = kEvent::erFAIL; } }