Вы здесь

Как программно авторизовать пользователя?

0

Общая задача состоит в том чтобы реализовать на сайте сброс пароля по номеру телефона и смс с кодом
идея застряла на этапе ввода пользователем кода из смс.

Допустим пользователь ввел в форму, прошла отправка на сервер, где код сравнился с тем что есть в базе или его хешем (не важно, по ходу разберусь) если все ок, хочу чтобы пользователя перекинуло сразу на страницу настройки своего аккаунта и задания нового пароля то есть:
http://сайт/user/1/edit?pass-reset-token=токенттокентокен
вопрос: как получить токен? (гуглил, функцию получения токена не нашел) в принципе удовлетворит мой интерес к этой задаче... Но..

Потом решил, что страница задания нового пароля содержит слишком много данных, это было бы не очень удобно, если мне нужно сменить только пароль, зачем мне все остальное.

Тогда другой вариант (более удобный) если все ок, хочу чтобы прошла авторизация и меня перекинуло на страницу с формой задания нового пароля состоящую из двух полей:
"парль"
"повторить"
после отправки формы новый пароль сразу же записался в базу.

тогда вопрос такой:
- как пройти авторизацию в случае успеха?
- как получить хеш пароля который я смогу поместить в базу?
по второй части пробовал

$password = 'мойуникальныйпароль';
$hash = user_hash_password($password);
echo $hash;
Версия Drupal: 
7.x
Вопрос задан 30.11.2017 - 07:42

Ответы

0

как пройти авторизацию в случае успеха?

global $user;
$user = user_load(123);
user_login_finalize();

как получить хеш пароля который я смогу поместить в базу?

$hash = user_hash_password($password);
Ответ дан 30.11.2017 - 12:29
Аватар пользователя xandeadx
xandeadx
1471

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

Комментарий оставлен 30.11.2017 - 16:05

не пойму что в ней может быть не так

прочитайте логи и поймёте

Комментарий оставлен 30.11.2017 - 16:08
  1. авторизация проходит так как появляется панель администратора, но кнопок редактирования страниц нет, а доступ по ссылкам admin/* запрещен, пока не сброшу кеш под другим пользователем авторизованным нормально
    скажите, что нужно дописать, чтобы система помнила меня как админа??
  2. решил добавив в функцию require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc');
Комментарий оставлен 30.11.2017 - 19:29