From ac4ae4e7344835181b3e260d28f2f047b9f6ed07 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Wed, 19 Nov 2025 13:46:28 +0100 Subject: [PATCH] Password reset --- src/api/serializers.py | 4 ++++ src/api/urls.py | 1 + src/api/views.py | 13 +++++++++++++ 3 files changed, 18 insertions(+) diff --git a/src/api/serializers.py b/src/api/serializers.py index 6806e91d7..8d160b0e4 100644 --- a/src/api/serializers.py +++ b/src/api/serializers.py @@ -73,3 +73,7 @@ class PasswordSerializer(serializers.Serializer): if not u.check_password(value): raise serializers.ValidationError("Password incorrect.") return value + + +class ResetPasswordSerializer(serializers.Serializer): + email = serializers.EmailField() diff --git a/src/api/urls.py b/src/api/urls.py index d4dc0eed5..558ed9c18 100644 --- a/src/api/urls.py +++ b/src/api/urls.py @@ -17,6 +17,7 @@ urlpatterns1 = [ path('me/', views.UserView.as_view()), path('deleteAccount/', views.DeleteAccountView.as_view()), path('password/', views.PasswordView.as_view()), + path('password-reset/', views.ResetPasswordView.as_view()), path('', include('catalogue.api.urls2')), path('', include('social.api.urls2')), diff --git a/src/api/views.py b/src/api/views.py index 5a77bd8fe..e1ca2e250 100644 --- a/src/api/views.py +++ b/src/api/views.py @@ -2,6 +2,7 @@ # Copyright © Fundacja Wolne Lektury. See NOTICE for more information. # from time import time +from allauth.account.forms import ResetPasswordForm from django.conf import settings from django.contrib.auth import authenticate from django.contrib.auth.decorators import login_required @@ -367,3 +368,15 @@ class PasswordView(GenericAPIView): u.set_password(d['new_password']) u.save() return Response({}) + + +class ResetPasswordView(GenericAPIView): + serializer_class = serializers.ResetPasswordSerializer + + def post(self, request): + serializer = serializers.ResetPasswordSerializer(data=request.data) + serializer.is_valid(raise_exception=True) + form = ResetPasswordForm({"email": serializer.validated_data['email']}) + form.is_valid() + form.save(request) + return Response({}) -- 2.20.1