Всем привет!
Настраивал сегодня у себя отправку писем с активацией аккаунта,
и случайно смоделировал сбой отправки письма с сайта)
Пользователь успешно создался, но письмо Не пришло…
Первым делом я решил войти на сайт, что конечно же не получилось ..
Второе, по логике — это попытался восстановить пароль.
Письмо успешно отправилось, но смысла в восстановлении пароля нет, так как
учетная запись попросту не активирована…
Плюс ко всему повторно на этот же почтовый ящик зарегистрироваться система не дает ...
… Для пользователя все плохо… Или новый ящик заводить или админу писать…
время потеряно… нервы тоже ..
Решил доделать немного систему восстановления пароля, что бы она сама решала, что делать :
или письмо на смену пароля слать
или письмо с активацией послать
В общем решение простое и вмешательство будет всего в один файл:
components\registration\frontend.php
нужно найти условие :
и сразу после добавить:
Все. Теперь если активация не пройдена (только в этом случае!),
пользователь введя емайл в поле восстановления пароля, получит подсказку и письмо на почту в придачу.
В письме будет новая ссылка на Активацию, а так же прописан Логин и новый сгенерированный Пароль.
… Плюс попутно почистится таблица активаций в базе от устаревших записей…
вроде мелочь, а приятно )
Настраивал сегодня у себя отправку писем с активацией аккаунта,
и случайно смоделировал сбой отправки письма с сайта)
Пользователь успешно создался, но письмо Не пришло…
Первым делом я решил войти на сайт, что конечно же не получилось ..
Второе, по логике — это попытался восстановить пароль.
Письмо успешно отправилось, но смысла в восстановлении пароля нет, так как
учетная запись попросту не активирована…
Плюс ко всему повторно на этот же почтовый ящик зарегистрироваться система не дает ...
… Для пользователя все плохо… Или новый ящик заводить или админу писать…
время потеряно… нервы тоже ..
Решил доделать немного систему восстановления пароля, что бы она сама решала, что делать :
или письмо на смену пароля слать
или письмо с активацией послать
В общем решение простое и вмешательство будет всего в один файл:
components\registration\frontend.php
нужно найти условие :
if(!$usr) { cmsCore::addSessionMessage($_LANG['ADRESS'].' "'.$email.'" '.$_LANG['NOT_IN_OUR_BASE'], 'error'); cmsCore::redirectBack(); }
elseif($usr['is_locked'] && !$usr['is_logged_once']) { $usrid = $usr['id']; $inDB->query("DELETE FROM cms_users_activate WHERE user_id = '$usrid'"); $inDB->query("UPDATE cms_users SET password = '{$pasmd}' WHERE id = '$usrid'"); $model->sendActivationNotice($pas, $usrid); $pas = null; $pasmd = null; cmsCore::addSessionMessage('Вам повторно выслана инструкция по активации аккаунта Новая ссылка активации будет действовать в течении 3х дней Новый пароль указан в инструкции Если активация не происходит, обратитесь пожалуйста к Администратору сайта', 'info'); $inDB->query("DELETE FROM cms_users_activate WHERE DATEDIFF(NOW(), pubdate) > 3"); cmsUser::clearCsrfToken(); cmsCore::redirectBack(); }
Все. Теперь если активация не пройдена (только в этом случае!),
пользователь введя емайл в поле восстановления пароля, получит подсказку и письмо на почту в придачу.
В письме будет новая ссылка на Активацию, а так же прописан Логин и новый сгенерированный Пароль.
… Плюс попутно почистится таблица активаций в базе от устаревших записей…
вроде мелочь, а приятно )
Реклама #
eoleg 11 лет назад #
это должно быть в дистрибутиве
lokanaft 11 лет назад #
KS 11 лет назад #
По хорошему на восстановление пароля тоже проверку нужно ставить..
Хотя с другой стороны, баном чаще пользуются ..
lokanaft 11 лет назад #
KS 11 лет назад #
А блокировка аккаунта оч хороша там где инвайты.
Роман 11 лет назад #
KS 11 лет назад #
При смене пароля на заблокированном аккаунте
предупреждение (без принуждений)):
после строки :
KS 11 лет назад #
Константин Г. 11 лет назад #
Александр 8 лет назад #
if(!$usr || $usr['is_locked'] || $usr['is_deleted']) {
и что бы заработало пришлось из нее убрать || $usr['is_locked'] - верно или есть подводные камни?
з.ы. это надо включать в коробку...