[Решено] Периодически слетает пароль

Главные вкладки

Аватар пользователя lohness lohness 22 ноября 2014 в 19:47

Здравствуйте. Есть сайт на Drupal 7 + Ubercart 3. На нем включена регистрация пользователей, но в настройках выставлено, что учетную запись активирует администратор. Есть самописный модуль, в котором происходит программная активация пользователей. После активации пользователю приходит письмо с ссылкой для установки пароля- этот функционал работает как часы.
Но был замечен баг, что иногда после того, как пользователь задал себе пароль, вышел с сайта и пытается снова войти пароль не подходит. Я не могу понять, в чем может быть проблема, т.к. она проявляется не всегда.

Что мне следует проверить? Когда еще друпал может изменить пароль? Единственный случай, как я понимаю это если заблокировать пользователя, а потом снова активировать, но в моей случае пользователи не получают никаких писем, просто не могут авторизоваться.

Комментарии

Аватар пользователя lohness lohness 23 ноября 2014 в 16:44

Проблема решена.
В user_save() передавался объект пользователя целиком, из-за чего друпал считал, что пароль сменился

$user = user_load_by_mail($email);
/*
   изменения каких-нибуть данных в $user
*/

// поскольку $user->pass установлен пароль - он изменится. Для фикса достаточно сделать перед сохранением unset($user->pass):
user_save((object) array('uid' => $user->uid), (array) $user);