Как проверить USER_CHECKWORD

38
Алексей,
Как проверить USER_CHECKWORD

В базе данных у пользователей есть поле CHECKWORD, но оно не равно той строке, что отправляется пользователю на почту для восстановления пароля. Для проверки нужно провести небольшие манипуляции.

Нужно взять поле CHECKWORD пользователя, вырезать оттуда первые 8 символов и присыпать ими USER_CHECKWORD :) Пример кода ниже:

$userCheckword = htmlspecialcharsbx($_REQUEST['USER_CHECKWORD']);
$dbUser = CUser::GetList(($by="personal_country"), ($order="desc"), array('LOGIN' => htmlspecialcharsbx($_REQUEST['USER_LOGIN'])));
if ($arUser = $dbUser->fetch()){ // данные пользователя по логину
	$salt = substr($arUser["CHECKWORD"], 0, 8); // соль
	if ($arUser["CHECKWORD"] === $salt.md5($salt.$userCheckword)) { // сравнение строки из письма со строкой в БД
		#return true;
	} else {
		#return false;
	}
} else {
	#return false;
}

Кстати, метод \Bitrix\Main\UserTable::getList не возвращает поле CHECKWORD, возможно мне нужно было обновить ядро.

Опубликовано 5 ноября 2020
Комментарии