Skip to content

Commit 971072a

Browse files
committed
Add sensitive_post_parameters decorator to several views
1 parent ce58da5 commit 971072a

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

rest_auth/registration/views.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
from django.utils.translation import ugettext_lazy as _
21
from django.conf import settings
2+
from django.utils.decorators import method_decorator
3+
from django.utils.translation import ugettext_lazy as _
4+
from django.views.decorators.debug import sensitive_post_parameters
35

46
from rest_framework.views import APIView
57
from rest_framework.response import Response
@@ -15,20 +17,27 @@
1517
from rest_auth.app_settings import (TokenSerializer,
1618
JWTSerializer,
1719
create_token)
20+
from rest_auth.models import TokenModel
1821
from rest_auth.registration.serializers import (SocialLoginSerializer,
1922
VerifyEmailSerializer)
23+
from rest_auth.utils import jwt_encode
2024
from rest_auth.views import LoginView
21-
from rest_auth.models import TokenModel
2225
from .app_settings import RegisterSerializer
2326

24-
from rest_auth.utils import jwt_encode
27+
sensitive_post_parameters_m = method_decorator(
28+
sensitive_post_parameters('password1', 'password2')
29+
)
2530

2631

2732
class RegisterView(CreateAPIView):
2833
serializer_class = RegisterSerializer
2934
permission_classes = (AllowAny, )
3035
token_model = TokenModel
3136

37+
@sensitive_post_parameters_m
38+
def dispatch(self, *args, **kwargs):
39+
return super(RegisterView, self).dispatch(*args, **kwargs)
40+
3241
def get_response_data(self, user):
3342
if allauth_settings.EMAIL_VERIFICATION == \
3443
allauth_settings.EmailVerificationMethod.MANDATORY:

rest_auth/views.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
from django.conf import settings
66
from django.contrib.auth import get_user_model
77
from django.core.exceptions import ObjectDoesNotExist
8+
from django.utils.decorators import method_decorator
89
from django.utils.translation import ugettext_lazy as _
10+
from django.views.decorators.debug import sensitive_post_parameters
911

1012
from rest_framework import status
1113
from rest_framework.views import APIView
@@ -21,6 +23,12 @@
2123
from .models import TokenModel
2224
from .utils import jwt_encode
2325

26+
sensitive_post_parameters_m = method_decorator(
27+
sensitive_post_parameters(
28+
'password', 'old_password', 'new_password1', 'new_password2'
29+
)
30+
)
31+
2432

2533
class LoginView(GenericAPIView):
2634
"""
@@ -36,6 +44,10 @@ class LoginView(GenericAPIView):
3644
serializer_class = LoginSerializer
3745
token_model = TokenModel
3846

47+
@sensitive_post_parameters_m
48+
def dispatch(self, *args, **kwargs):
49+
return super(LoginView, self).dispatch(*args, **kwargs)
50+
3951
def process_login(self):
4052
django_login(self.request, self.user)
4153

@@ -176,6 +188,10 @@ class PasswordResetConfirmView(GenericAPIView):
176188
serializer_class = PasswordResetConfirmSerializer
177189
permission_classes = (AllowAny,)
178190

191+
@sensitive_post_parameters_m
192+
def dispatch(self, *args, **kwargs):
193+
return super(PasswordResetConfirmView, self).dispatch(*args, **kwargs)
194+
179195
def post(self, request):
180196
serializer = self.get_serializer(data=request.data)
181197
serializer.is_valid(raise_exception=True)
@@ -195,6 +211,10 @@ class PasswordChangeView(GenericAPIView):
195211
serializer_class = PasswordChangeSerializer
196212
permission_classes = (IsAuthenticated,)
197213

214+
@sensitive_post_parameters_m
215+
def dispatch(self, *args, **kwargs):
216+
return super(PasswordChangeView, self).dispatch(*args, **kwargs)
217+
198218
def post(self, request):
199219
serializer = self.get_serializer(data=request.data)
200220
serializer.is_valid(raise_exception=True)

0 commit comments

Comments
 (0)