Fixed reset password after switching to dj-rest-auth (#52)
parent
a912a445bc
commit
02a2965e04
@ -0,0 +1,48 @@
|
||||
# Copyright (C) 2022 CVAT.ai Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
from django.contrib.sites.shortcuts import get_current_site
|
||||
from django.contrib.auth import get_user_model
|
||||
|
||||
from allauth.account.forms import default_token_generator
|
||||
from allauth.account.utils import user_pk_to_url_str
|
||||
from allauth.account.adapter import get_adapter
|
||||
from dj_rest_auth.forms import AllAuthPasswordResetForm
|
||||
|
||||
UserModel = get_user_model()
|
||||
|
||||
class ResetPasswordFormEx(AllAuthPasswordResetForm):
|
||||
def save(self, request=None, domain_override=None,
|
||||
email_template_prefix='authentication/password_reset_key',
|
||||
use_https=False, token_generator=default_token_generator,
|
||||
extra_email_context=None, **kwargs):
|
||||
|
||||
"""
|
||||
Generate a one-use only link for resetting password and send it to the
|
||||
user.
|
||||
"""
|
||||
email = self.cleaned_data["email"]
|
||||
if not domain_override:
|
||||
current_site = get_current_site(request)
|
||||
site_name = current_site.name
|
||||
domain = current_site.domain
|
||||
else:
|
||||
site_name = domain = domain_override
|
||||
email_field_name = UserModel.get_email_field_name()
|
||||
for user in self.users:
|
||||
user_email = getattr(user, email_field_name)
|
||||
context = {
|
||||
'email': user_email,
|
||||
'domain': domain,
|
||||
'site_name': site_name,
|
||||
'uid': user_pk_to_url_str(user),
|
||||
'user': user,
|
||||
'token': token_generator.make_token(user),
|
||||
'protocol': 'https' if use_https else 'http',
|
||||
**(extra_email_context or {}),
|
||||
}
|
||||
|
||||
get_adapter(request).send_mail(email_template_prefix, email, context)
|
||||
|
||||
return self.cleaned_data['email']
|
||||
@ -0,0 +1,24 @@
|
||||
{% load i18n %}{% autoescape off %}
|
||||
{% blocktrans %}
|
||||
<p>
|
||||
You're receiving this email because you requested a password reset for your user account at {{ site_name }}.
|
||||
</p>
|
||||
{% endblocktrans %}
|
||||
|
||||
{% trans "Please go to the following page and choose a new password:" %}
|
||||
{% block reset_link %}
|
||||
<p>
|
||||
<a href="{{ protocol }}://{{ domain }}/auth/password/reset/confirm?uid={{ uid }}&token={{ token }}">{{ protocol }}://{{ domain }}/auth/password/reset/confirm?uid={{ uid }}&token={{ token }}</a>
|
||||
</p>
|
||||
{% endblock %}
|
||||
<p>
|
||||
{% trans "Your username, in case you've forgotten:" %} {{ user.get_username }}
|
||||
</p>
|
||||
|
||||
{% trans "Thanks for using our site!" %}
|
||||
|
||||
<p>
|
||||
{% blocktrans %}The {{ site_name }} team{% endblocktrans %}
|
||||
</p>
|
||||
|
||||
{% endautoescape %}
|
||||
@ -0,0 +1,4 @@
|
||||
{% load i18n %}
|
||||
{% autoescape off %}
|
||||
{% blocktrans %}Password Reset E-mail{% endblocktrans %}
|
||||
{% endautoescape %}
|
||||
Loading…
Reference in New Issue