Общая задача состоит в том чтобы реализовать на сайте сброс пароля по номеру телефона и смс с кодом
идея застряла на этапе ввода пользователем кода из смс.
Допустим пользователь ввел в форму, прошла отправка на сервер, где код сравнился с тем что есть в базе или его хешем (не важно, по ходу разберусь) если все ок, хочу чтобы пользователя перекинуло сразу на страницу настройки своего аккаунта и задания нового пароля то есть:
http://сайт/user/1/edit?pass-reset-token=токенттокентокен
вопрос: как получить токен? (гуглил, функцию получения токена не нашел) в принципе удовлетворит мой интерес к этой задаче... Но..
Потом решил, что страница задания нового пароля содержит слишком много данных, это было бы не очень удобно, если мне нужно сменить только пароль, зачем мне все остальное.
Тогда другой вариант (более удобный) если все ок, хочу чтобы прошла авторизация и меня перекинуло на страницу с формой задания нового пароля состоящую из двух полей:
"парль"
"повторить"
после отправки формы новый пароль сразу же записался в базу.
тогда вопрос такой:
- как пройти авторизацию в случае успеха?
- как получить хеш пароля который я смогу поместить в базу?
по второй части пробовал
<?php
$password = 'мойуникальныйпароль';
$hash = user_hash_password($password);
echo $hash;
?>
в ответ 500 ошибка
Комментарии
Стандартный механизм уже реализует токен его хранение и вход с mail, Вам только надо sms отправить одновременно с mail.
Дичь задвигаешь)))
Это априори стандартное поведение в подобных кейсах.
Сам механизм, собственно, следующий:
1. Вводим номер телефона, отправляем на сервер
2. Генерируем код для смс, сохраняем куда-нить юзера по номеру телефону, код для смс и флаг использования
3. Вводим код из смс в форму (номер телефона в скрытом поле), отправляем на сервак
4. Проверяем на сервере последнюю запись из номера телефона, код и флаг использования, если всё ок, то hook_user_login и редиректим на свою кастомную форму смены пароля.
5. Профит
а что насчет кастомной формы?
ввели новый пароль, он прошел через функцию
<?php
$password = 'мойуникальныйпароль';
$hash = user_hash_password($password);
echo $hash;
?>
вот вставил код в блок на сайте, по-хорошему, я должен увидеть хеш но вижу 500 ошибку, в чем дело не пойму.
В блоках использовать return надо.
А причина в логах сервера, имхо, password.inc нужно подгрузить
require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc');
Да, помогло, то что надо
,