|
1 | | -from django.utils.decorators import method_decorator |
2 | | -from django.views.decorators.debug import sensitive_post_parameters |
3 | | -from rest_framework.response import Response |
4 | | -from rest_framework.generics import CreateAPIView |
5 | | -from rest_framework import status |
6 | | -from allauth.account.utils import complete_signup |
7 | | -from allauth.account import app_settings as allauth_settings |
8 | | -from rest_auth.models import TokenModel |
9 | | -from rest_auth.views import LoginView |
10 | | -from rest_auth.registration.app_settings import RegisterSerializer, register_permission_classes |
11 | | -from django.contrib.auth.models import User |
12 | | - |
13 | | -sensitive_post_parameters_m = method_decorator( |
14 | | - sensitive_post_parameters('password1', 'password2') |
15 | | -) |
16 | | - |
17 | | - |
18 | | -class RegisterView(CreateAPIView): |
19 | | - serializer_class = RegisterSerializer |
20 | | - permission_classes = register_permission_classes() |
21 | | - token_model = TokenModel |
22 | | - |
23 | | - @sensitive_post_parameters_m |
24 | | - def dispatch(self, *args, **kwargs): |
25 | | - return super(RegisterView, self).dispatch(*args, **kwargs) |
26 | | - |
27 | | - def create(self, request, *args, **kwargs): |
28 | | - serializer = self.get_serializer(data=request.data) |
29 | | - serializer.is_valid(raise_exception=True) |
30 | | - user = self.perform_create(serializer) |
31 | | - headers = self.get_success_headers(serializer.data) |
32 | | - content = { |
33 | | - "details": "Registered" |
34 | | - } |
35 | | - return Response(content, |
36 | | - status=status.HTTP_201_CREATED, |
37 | | - headers=headers) |
38 | | - |
39 | | - def perform_create(self, serializer): |
40 | | - user = serializer.save(self.request) |
41 | | - |
42 | | - complete_signup(self.request._request, user, None, None) |
43 | | - return user |
44 | | - |
45 | | - |
46 | | -class CustomLoginView(LoginView): |
47 | | - |
48 | | - def get_response(self): |
49 | | - orginal_response = super().get_response() |
50 | | - |
51 | | - custom_response = {"user": { |
52 | | - "username": self.user.username, |
53 | | - "email": self.user.email |
54 | | - }} |
55 | | - |
56 | | - orginal_response.data.update(custom_response) |
57 | | - return orginal_response |
0 commit comments