После смены пароля через CUser::Update вход по CUser::Login на 20 минут перестает работать. Что делать?
В проекте делали кастомную авторизацию сами.
надо было дать пользователю возможность на выбор авторизовываться и менять пароль по (email/phone) и наткнулись на следующую проблему:
При смене пароля на новый методом CUser::Update
в таблице b_user_auth_action создается запись на этого пользователя с текущем временем (ACTION = logout ACTION_DATE= текущее время)
видимо пока от данного времени не пройдет определенный промежуток указанный где то в настройках
функция входа в систему CUser::Login ведет себя странным образом:
При не верных данных логин/пароль она отдает ошибку что данные введены не верно а при верных отдает результат что пользователь удачно авторизован НО самой авторизации не происходит (по видимому в сессию не записываются данные или куки не создаются)
Решил следующем образом:
просто при смене пароля очищаю данные по данному пользователю в данной таблице
UserAuthActionTable::deleteByFilter(['USER_ID'=>$user['ID']]);
Надеюсь меня тут поругают и ответят как надо было побороть эту проблему.
Как уже написали выше, передавайте CONFIRM_PASSWORD
и добавьте третий параметр CUser::Update($id, $fields, false) – это отключит добавление записи в AuthAction