Front-end відновлення пароля у Wordpress
Приступаємо до заключної роботи циклу статей присвяченому роботі з користувачами у фронт-енді сайтів на WordPress. У ній робитимемо механізм відновлення забутого пароля. Отже алгоритм такий: користувач вводить у форму відновлення пароля свій логін або email -> ми форму аяксом у потрібний обробник -> перевіряємо існування користувача з такими даними, запускаємо механізм відновлення та відправляємо йому листа з унікальним посиланням -> при переході за посиланням ми перевіряємо передані дані і якщо всі ок показуємо форму зі зміною пароля -> після відправки форми перевіряємо все ще раз і якщо все змінюємо пароль. Лет'с гоу.
1. Додаємо хуки в route.php
На цей раз ми додамо відразу 2 хуки: перший - обробка запиту на відновлення пароль, другий - обробка самої зміни пароля. Так само відразу створимо потрібні два обробники:/ваш_шаблон/for_users/lost_password.php та/ваш_шаблон/for_users/reset_password.php
Назва функціїreset_password зарезервована ядром WP тому назвемо своюreset_password_front.
2. Створюємо форму для запиту скидання пароля
Як звичайно, я засунув цей код у кастомний шаблон і вибрав його біля звичайної сторінки. Сто перший раз повторю, що форма вирушає аяксом обробником — докладніше тут.
3. Обробка запиту на скидання пароля
Це файл /ваш_шаблон/for_users/lost_password.php
Зверніть увагу, що механізм запису хеша змінився - з версії 4.3 до нього приклеюється ще і time (). Тепер, якщо все пройшло ок, користувачеві відправився лист із посиланням на скидання пароля,/reset-password/ — це url сторінки, до якої я підключив шаблон форми скидання пароля, ви можете зробити інший урл( див. слід пункт).
4. Створюємо форму скиданняпароля
4. Створюємо обробку скидання пароля
Після надсилання форми з попереднього пункти дані будуть оброблені в цьому файлі. (/ваш_шаблон/for_users/reset_password.php)
Ось і все поки що цикл завершено. Можливо, пізніше код буде доповнюватися.
Не забуваємо лайкати і нишпорити, ще ставте запитання.
Цикл статей по роботі з користувачами у фронт-енді сайтів на WordPress:
Вітання! Скажи, будь ласка, а чи є можливість захистити таку форму відновлення, входу та реєстрації на сайті? Поставив собі на сайт, все працює чудово, але як з брутом боротися? Адже все робиться динамічно. Не можу розуму докласти, як захиститись. Хотілося б банити по IP відразу після 3-5раз/год запитів відновлення/невірному паролі/реєстрації і т.д.
Капчу використовувати не варіант.
Привіт, методи захисту є звичайно, перше це поле з сіллю - nonce, воно дозволяє обробляти запити тільки зі сторінки згенерованої вашим вп, бан по IP теж можна прикрутити, але треба продумати чо куди плюс, я думаю, в вп вже має бути стандартний механізм захисту від брут/ддосів, постараюся у вихідні вивчити питання. А чому капча не варіант?
Взагалі погуглил я варіанти, все зводиться до створення додаткової таблиці, яка б запам'ятовувала ip/логін і кількість невдалих спроб, і функції яка б цю таблицю перевіряла. По суті, всі ці функції вже написані в тих численних плагінах, типу wp-limit-login-attempts, думаю можна встановити такий плагін і використовувати функцію перевірки у вашому коді. На жаль зараз писати мою власну велосипедну функцію для цього дуже сильно ліньки, може як небудь у кращі часи доповню.