Source code for jwt_allauth.password_change.views

from django.contrib.auth import get_user_model
from django.utils.translation import gettext_lazy as _
from rest_framework.generics import GenericAPIView
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.throttling import UserRateThrottle

from jwt_allauth.app_settings import PasswordChangeSerializer
from jwt_allauth.utils import sensitive_post_parameters_m


[docs] class PasswordChangeView(GenericAPIView): """ Calls Django Auth SetPasswordForm save method. Accepts the following POST parameters: new_password1, new_password2 Returns the success/fail message. """ serializer_class = PasswordChangeSerializer permission_classes = (IsAuthenticated,) throttle_classes = [UserRateThrottle]
[docs] @sensitive_post_parameters_m def dispatch(self, *args, **kwargs): return super(PasswordChangeView, self).dispatch(*args, **kwargs)
[docs] def post(self, request): # Load the user in the request request.user = get_user_model().objects.get(id=self.request.user.id) serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) serializer.save() return Response({"detail": _("New password has been saved.")})