X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/605af0880e55eebe3b5db50c97712c9e17448579..ac4ae4e7344835181b3e260d28f2f047b9f6ed07:/src/api/views.py diff --git a/src/api/views.py b/src/api/views.py index 0451c7760..e1ca2e250 100644 --- a/src/api/views.py +++ b/src/api/views.py @@ -2,6 +2,8 @@ # 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 from django.contrib.auth.models import User @@ -247,6 +249,13 @@ class RegisterView(GenericAPIView): }) def post(self, request): + if not settings.FEATURE_API_REGISTER: + return Response( + { + "detail": "Rejestracja aktualnie niedostępna." + }, + status=400 + ) serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) d = serializer.validated_data @@ -326,3 +335,48 @@ class RequestConfirmView(APIView): UserConfirmation.request(user) return Response({}) + +class DeleteAccountView(GenericAPIView): + permission_classes = [IsAuthenticated] + serializer_class = serializers.DeleteAccountSerializer + + def post(self, request): + u = request.user + serializer = self.get_serializer( + data=request.data, + context={'user': u} + ) + serializer.is_valid(raise_exception=True) + d = serializer.validated_data + u.is_active = False + u.save() + return Response({}) + + +class PasswordView(GenericAPIView): + permission_classes = [IsAuthenticated] + serializer_class = serializers.PasswordSerializer + + def post(self, request): + u = request.user + serializer = self.get_serializer( + data=request.data, + context={'user': u} + ) + serializer.is_valid(raise_exception=True) + d = serializer.validated_data + 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({})