SocialEngine: обновить пароль с помощью Zend_Db_Table_Row_Abstract :: save () - PullRequest
0 голосов
/ 15 сентября 2018

Я звоню save() на элемент базы данных после присвоения значения $item->password.Проблема в том, что он странным образом обновляет поле базы данных.Строка, отличная от того, что я назначаю, сохраняется.Проверьте код:

    if ($password == $passwordConfirm && $password != NULL) {
        //Save the password in db
        $settings = Engine_Api::_()->getApi('settings', 'core');
        $staticSalt = $settings->getSetting('core.secret', 'staticSalt');
        $user = Engine_Api::_()->getItemTable('user')->fetchRow(['phone_number=?' => $this->session->phone, 'account_recovery=?' => $this->session->recoveryCode]);
        $userSalt = $user->salt;
        $dbPassword = md5($staticSalt . $password . $userSalt);
        $user->password = $dbPassword;
        $user->save();
        $this->view->form->addNotice(Zend_Registry::get('Zend_Translate')->_('Password updated'));
        echo  $this->session->recoveryCode  . ', ' . $staticSalt . '  . ' . $password . ' . ' . $userSalt . ' dbpassword:  ' . $dbPassword . ', ' . $user->password;
    }

Вывод эха:

 41d53c78ace54bef39a4d22749447a8f, 06eebbd766133fda10c526e9fad2da6c84df0597 . a@a.com . 4826122 dbpassword: c2cec82096e9b89a22961cf5f70be639, 06af9074fbd95452c2a01603ec54cb58   

Вы видите, что рассчитанный пароль, который я считаю правильным, отличается от пароля, сохраненного в базе данных,Есть ли какие-то особые соображения, которые я должен иметь в виду перед вызовом save(), например приведение значения или что-то еще?

Я только что узнал, что мне не нужно вызывать save() для обновления таблицы базы данных.На самом деле, вызов save() после присвоения значения столбцу сохраняет странное значение.Я попытался закомментировать save и затем прочитать значение.На этот раз столбец пароля корректно обновляется с вычисленным паролем.Но, опять же, моя проблема в том, что пароль не может быть использован для входа в систему.Например, если пароль пользователя, который я использую для расчета пароля базы данных, равен abcdabcd, я не могу войти в учетную запись с этим паролем.Возможно, я что-то упускаю из-за того, как выполняется аутентификация пользователя в SocialEngine.

...