diff --git a/programmer/templates/password_reset_confirm.html b/programmer/templates/password_reset_confirm.html new file mode 100644 index 0000000..cb02a7c --- /dev/null +++ b/programmer/templates/password_reset_confirm.html @@ -0,0 +1,24 @@ +{% extends 'programmer/base.html' %} +{% load django_bootstrap5 %} + +{% block content %} + + +
+ {% if validlink %} +
+ {% csrf_token %} + {% bootstrap_form form %} + +
+ {% else %} +
+

Ссылка для восстановления пароля недействительна. Возможно, она уже была использована.

+

Запросите восстановление пароля заново.

+
+ {% endif %} +
+{% endblock %} \ No newline at end of file diff --git a/programmer/templates/password_reset_subject.txt b/programmer/templates/password_reset_subject.txt new file mode 100644 index 0000000..15282df --- /dev/null +++ b/programmer/templates/password_reset_subject.txt @@ -0,0 +1 @@ +Восстановление пароля на сайте {{ site_name }} \ No newline at end of file diff --git a/programmer/templates/programmer/login.html b/programmer/templates/programmer/login.html index 6d02de2..70e43b7 100644 --- a/programmer/templates/programmer/login.html +++ b/programmer/templates/programmer/login.html @@ -21,5 +21,8 @@

Нет аккаунта? Зарегистрироваться

+

+ Забыли пароль? +

{% endblock %} \ No newline at end of file diff --git a/programmer/templates/programmer/password_reset.html b/programmer/templates/programmer/password_reset.html new file mode 100644 index 0000000..0777869 --- /dev/null +++ b/programmer/templates/programmer/password_reset.html @@ -0,0 +1,21 @@ +{% extends 'programmer/base.html' %} +{% load django_bootstrap5 %} + +{% block content %} + + +
+
+ {% csrf_token %} + {% bootstrap_form form %} + +
+
+

+ Вспомнили пароль? Войти +

+
+{% endblock %} \ No newline at end of file diff --git a/programmer/templates/programmer/password_reset_complete.html b/programmer/templates/programmer/password_reset_complete.html new file mode 100644 index 0000000..63c9228 --- /dev/null +++ b/programmer/templates/programmer/password_reset_complete.html @@ -0,0 +1,12 @@ +{% extends 'programmer/base.html' %} + +{% block content %} + + +
+ Войти +
+{% endblock %} \ No newline at end of file diff --git a/programmer/templates/programmer/password_reset_done.html b/programmer/templates/programmer/password_reset_done.html new file mode 100644 index 0000000..c7bc644 --- /dev/null +++ b/programmer/templates/programmer/password_reset_done.html @@ -0,0 +1,14 @@ +{% extends 'programmer/base.html' %} + +{% block content %} + + +
+

Мы отправили вам инструкцию по восстановлению пароля на указанный email.

+

Если письмо не пришло, проверьте папку «Спам» или убедитесь, что вы ввели правильный адрес.

+ Вернуться к входу +
+{% endblock %} \ No newline at end of file diff --git a/programmer/templates/programmer/password_reset_email.html b/programmer/templates/programmer/password_reset_email.html new file mode 100644 index 0000000..3f32d88 --- /dev/null +++ b/programmer/templates/programmer/password_reset_email.html @@ -0,0 +1,15 @@ +{% load i18n %} +{% autoescape off %} +Здравствуйте! + +Вы получили это письмо, потому что запросили восстановление пароля на сайте {{ site_name }}. + +Для сброса пароля перейдите по ссылке ниже: + +{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %} + +Если вы не запрашивали восстановление пароля, просто проигнорируйте это письмо. + +С уважением, +Команда {{ site_name }} +{% endautoescape %} \ No newline at end of file diff --git a/programmer/urls.py b/programmer/urls.py index 960c02a..3ecf762 100644 --- a/programmer/urls.py +++ b/programmer/urls.py @@ -38,6 +38,28 @@ urlpatterns = [ path('profile/callbacks/', views.my_callbacks, name='my_callbacks'), path('profile/comments/', views.my_comments, name='my_comments'), path('profile/notifications/', views.notification_settings, name='notification_settings'), + path('password-reset/', + auth_views.PasswordResetView.as_view( + template_name='programmer/password_reset.html', + email_template_name='programmer/password_reset_email.html', + subject_template_name='programmer/password_reset_subject.txt' + ), + name='password_reset'), + path('password-reset/done/', + auth_views.PasswordResetDoneView.as_view( + template_name='programmer/password_reset_done.html' + ), + name='password_reset_done'), + path('password-reset///', + auth_views.PasswordResetConfirmView.as_view( + template_name='programmer/password_reset_confirm.html' + ), + name='password_reset_confirm'), + path('password-reset/complete/', + auth_views.PasswordResetCompleteView.as_view( + template_name='programmer/password_reset_complete.html' + ), + name='password_reset_complete'), ]