|
1 | 1 | from datetime import timedelta |
| 2 | + |
| 3 | +from django.conf import settings |
2 | 4 | from django.contrib.auth import get_user_model |
3 | | -from django.core.exceptions import ValidationError |
4 | 5 | from django.contrib.auth.password_validation import validate_password, get_password_validators |
5 | | -from django.utils.translation import gettext_lazy as _ |
| 6 | +from django.core.exceptions import ValidationError |
6 | 7 | from django.utils import timezone |
7 | | -from django.conf import settings |
8 | | -from rest_framework import status, exceptions |
| 8 | +from django.utils.translation import gettext_lazy as _ |
| 9 | +from rest_framework import exceptions |
9 | 10 | from rest_framework.generics import GenericAPIView |
10 | 11 | from rest_framework.response import Response |
| 12 | +from rest_framework.viewsets import GenericViewSet |
11 | 13 |
|
12 | | -from django_rest_passwordreset.serializers import EmailSerializer, PasswordTokenSerializer, ResetTokenSerializer |
13 | 14 | from django_rest_passwordreset.models import ResetPasswordToken, clear_expired, get_password_reset_token_expiry_time, \ |
14 | 15 | get_password_reset_lookup_field |
| 16 | +from django_rest_passwordreset.serializers import EmailSerializer, PasswordTokenSerializer, ResetTokenSerializer |
15 | 17 | from django_rest_passwordreset.signals import reset_password_token_created, pre_password_reset, post_password_reset |
16 | 18 |
|
17 | 19 | User = get_user_model() |
|
22 | 24 | 'ResetPasswordRequestToken', |
23 | 25 | 'reset_password_validate_token', |
24 | 26 | 'reset_password_confirm', |
25 | | - 'reset_password_request_token' |
| 27 | + 'reset_password_request_token', |
| 28 | + 'ResetPasswordValidateTokenViewSet', |
| 29 | + 'ResetPasswordConfirmViewSet', |
| 30 | + 'ResetPasswordRequestTokenViewSet' |
26 | 31 | ] |
27 | 32 |
|
28 | 33 | HTTP_USER_AGENT_HEADER = getattr(settings, 'DJANGO_REST_PASSWORDRESET_HTTP_USER_AGENT_HEADER', 'HTTP_USER_AGENT') |
@@ -156,6 +161,35 @@ def post(self, request, *args, **kwargs): |
156 | 161 | return Response({'status': 'OK'}) |
157 | 162 |
|
158 | 163 |
|
| 164 | +class ResetPasswordValidateTokenViewSet(ResetPasswordValidateToken, GenericViewSet): |
| 165 | + """ |
| 166 | + An Api ViewSet which provides a method to verify that a token is valid |
| 167 | + """ |
| 168 | + |
| 169 | + def create(self, request, *args, **kwargs): |
| 170 | + return super(ResetPasswordValidateTokenViewSet, self).post(request, *args, **kwargs) |
| 171 | + |
| 172 | + |
| 173 | +class ResetPasswordConfirmViewSet(ResetPasswordConfirm, GenericViewSet): |
| 174 | + """ |
| 175 | + An Api ViewSet which provides a method to reset a password based on a unique token |
| 176 | + """ |
| 177 | + |
| 178 | + def create(self, request, *args, **kwargs): |
| 179 | + return super(ResetPasswordConfirmViewSet, self).post(request, *args, **kwargs) |
| 180 | + |
| 181 | + |
| 182 | +class ResetPasswordRequestTokenViewSet(ResetPasswordRequestToken, GenericViewSet): |
| 183 | + """ |
| 184 | + An Api ViewSet which provides a method to request a password reset token based on an e-mail address |
| 185 | +
|
| 186 | + Sends a signal reset_password_token_created when a reset token was created |
| 187 | + """ |
| 188 | + |
| 189 | + def create(self, request, *args, **kwargs): |
| 190 | + return super(ResetPasswordRequestTokenViewSet, self).post(request, *args, **kwargs) |
| 191 | + |
| 192 | + |
159 | 193 | reset_password_validate_token = ResetPasswordValidateToken.as_view() |
160 | 194 | reset_password_confirm = ResetPasswordConfirm.as_view() |
161 | 195 | reset_password_request_token = ResetPasswordRequestToken.as_view() |
0 commit comments