Generate a one-use only link for resetting password and send it to the user.
(
self,
domain_override=None,
subject_template_name="registration/password_reset_subject.txt",
email_template_name="registration/password_reset_email.html",
use_https=False,
token_generator=default_token_generator,
from_email=None,
request=None,
html_email_template_name=None,
extra_email_context=None,
)
| 442 | ) |
| 443 | |
| 444 | def save( |
| 445 | self, |
| 446 | domain_override=None, |
| 447 | subject_template_name="registration/password_reset_subject.txt", |
| 448 | email_template_name="registration/password_reset_email.html", |
| 449 | use_https=False, |
| 450 | token_generator=default_token_generator, |
| 451 | from_email=None, |
| 452 | request=None, |
| 453 | html_email_template_name=None, |
| 454 | extra_email_context=None, |
| 455 | ): |
| 456 | """ |
| 457 | Generate a one-use only link for resetting password and send it to the |
| 458 | user. |
| 459 | """ |
| 460 | email = self.cleaned_data["email"] |
| 461 | if not domain_override: |
| 462 | current_site = get_current_site(request) |
| 463 | site_name = current_site.name |
| 464 | domain = current_site.domain |
| 465 | else: |
| 466 | site_name = domain = domain_override |
| 467 | email_field_name = UserModel.get_email_field_name() |
| 468 | for user in self.get_users(email): |
| 469 | user_email = getattr(user, email_field_name) |
| 470 | user_pk_bytes = force_bytes(UserModel._meta.pk.value_to_string(user)) |
| 471 | context = { |
| 472 | "email": user_email, |
| 473 | "domain": domain, |
| 474 | "site_name": site_name, |
| 475 | "uid": urlsafe_base64_encode(user_pk_bytes), |
| 476 | "user": user, |
| 477 | "token": token_generator.make_token(user), |
| 478 | "protocol": "https" if use_https else "http", |
| 479 | **(extra_email_context or {}), |
| 480 | } |
| 481 | self.send_mail( |
| 482 | subject_template_name, |
| 483 | email_template_name, |
| 484 | context, |
| 485 | from_email, |
| 486 | user_email, |
| 487 | html_email_template_name=html_email_template_name, |
| 488 | ) |
| 489 | |
| 490 | |
| 491 | class SetPasswordForm(SetPasswordMixin, forms.Form): |