Войти в аккаунт пользователя без пароля
Всем привет!
Ситуация следующая: через сниппет Login (стандартный) ранее были зареганы несколько пользователей. Затем регистрация новых пользователей прекратилась. Теперь заказчик хочет, чтобы зареганные клиенты могли входить только по email.
Если отбросить вопросы безопасности, то как это можно сделать?
В сниппете, который начал писать использую конструкцию
Итак, что нужно изменить (если флаг, то какой и где) в процессоре Модх логин, чтобы я мог позволить пользователю автоматически входить в свой аккаунт по email?
Ситуация следующая: через сниппет Login (стандартный) ранее были зареганы несколько пользователей. Затем регистрация новых пользователей прекратилась. Теперь заказчик хочет, чтобы зареганные клиенты могли входить только по email.
Если отбросить вопросы безопасности, то как это можно сделать?
В сниппете, который начал писать использую конструкцию
$user = $modx->getObject('modUser', array(
'username' => $username,
));
$response = $modx->runProcessor('security/login', array(
'username' => $username,
'password' => $password,
'login_context' => 'web',
'add_contexts' => 'web',
'rememberme' => true,
'service' => 'login'
));
Где $username беру из $_POST, а $password временно использую реальный (просто, чтоб проверить, что процессор работает).Итак, что нужно изменить (если флаг, то какой и где) в процессоре Модх логин, чтобы я мог позволить пользователю автоматически входить в свой аккаунт по email?
Комментарии: 8
В принципе, вполне подходит следующий вариант (aka костыль): чтобы юзать стандартный механизм сниппета Логин можно просто в базе у всех пользователей, кроме админа заменить пароль на некий общий мастер-пароль и тупо подставлять его в форме при наборе пользователем своего мыла. Билет в один конец, разумеется и нужен бекап базы клиентов, на случай " Вы знаете, а верните как было". Но поскольку новых клиентов больше через сайт не зарегается то все норм.
Вот здесь изучите второй вариант, который предложил Илья Уткин.
Благодарю, код действительно нужный для сохранения, однако он не совсем по моей задаче.
if (!$modx->user->isAuthenticated('web') && ($user = $modx->getObject('modUser', array('username' => $_POST['username'])))) {
$user->addSessionContext('web');
}
return ;
Александр, благодарю, но я уже пробовал ранее сам подобный код и он не сработал
у меня прекрасно работает
Александр, прошу прощения, указал не тот контекст. Сработало. Спасибо, большое!
if (is_guest()) login($_POST['username']);
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.