|
3 | 3 | import jwt |
4 | 4 | from django.apps import apps |
5 | 5 | from django.conf import settings |
6 | | -from django.contrib.auth import get_user_model |
7 | | -from django.contrib.sites.shortcuts import get_current_site |
8 | 6 | from django.db import transaction |
9 | 7 | from django.db.models import Q |
10 | 8 | from django.shortcuts import redirect |
11 | | -from django.urls import reverse |
| 9 | +from django.contrib.auth import get_user_model |
12 | 10 | from django_filters import rest_framework as filters |
13 | 11 | from rest_framework import status |
14 | 12 | from rest_framework.generics import ( |
|
24 | 22 | from rest_framework_simplejwt.tokens import RefreshToken, TokenError |
25 | 23 |
|
26 | 24 | from core.permissions import IsOwnerOrReadOnly, IsAuthenticatedOrWriteOnly |
27 | | -from core.utils import Email |
28 | 25 | from projects.serializers import ProjectListSerializer |
29 | | -from users.helpers import VERBOSE_ROLE_TYPES, VERBOSE_USER_TYPES |
| 26 | +from users.helpers import ( |
| 27 | + REDIRECT_URL, |
| 28 | + VERBOSE_ROLE_TYPES, |
| 29 | + VERBOSE_USER_TYPES, |
| 30 | + reset_email, |
| 31 | + verify_email, |
| 32 | +) |
30 | 33 | from users.models import UserAchievement, LikesOnProject |
31 | 34 | from users.permissions import IsAchievementOwnerOrReadOnly |
32 | 35 | from users.serializers import ( |
@@ -59,23 +62,7 @@ def post(self, request, *args, **kwargs): |
59 | 62 |
|
60 | 63 | user = User.objects.get(email=serializer.data["email"]) |
61 | 64 |
|
62 | | - token = RefreshToken.for_user(user).access_token |
63 | | - |
64 | | - relative_link = reverse("users:account_email_verification_sent") |
65 | | - current_site = get_current_site(request).domain |
66 | | - absolute_url = "http://" + current_site + relative_link + "?token=" + str(token) |
67 | | - |
68 | | - email_body = "Hi, {} {}! Use link below verify your email {}".format( |
69 | | - user.first_name, user.last_name, absolute_url |
70 | | - ) |
71 | | - |
72 | | - data = { |
73 | | - "email_body": email_body, |
74 | | - "email_subject": "Verify your email", |
75 | | - "to_email": user.email, |
76 | | - } |
77 | | - |
78 | | - Email.send_email(data) |
| 65 | + verify_email(user, request) |
79 | 66 |
|
80 | 67 | return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) |
81 | 68 |
|
@@ -171,7 +158,6 @@ class VerifyEmail(GenericAPIView): |
171 | 158 |
|
172 | 159 | def get(self, request): |
173 | 160 | token = request.GET.get("token") |
174 | | - REDIRECT_URL = "https://app.procollab.ru/auth/verification/" |
175 | 161 | try: |
176 | 162 | payload = jwt.decode(jwt=token, key=settings.SECRET_KEY, algorithms=["HS256"]) |
177 | 163 | user = User.objects.get(id=payload["user_id"]) |
@@ -212,30 +198,7 @@ def post(self, request, *args, **kwargs): |
212 | 198 |
|
213 | 199 | user = User.objects.get(email=serializer.data["email"]) |
214 | 200 |
|
215 | | - access_token = RefreshToken.for_user(user).access_token |
216 | | - refresh_token = RefreshToken.for_user(user) |
217 | | - |
218 | | - relative_link = reverse("users:password_reset_sent") |
219 | | - |
220 | | - current_site = get_current_site(request).domain |
221 | | - absolute_url = ( |
222 | | - "http://" |
223 | | - + current_site |
224 | | - + relative_link |
225 | | - + f"?access_token={access_token}&refresh_token={refresh_token}" |
226 | | - ) |
227 | | - |
228 | | - email_body = "Hi, {} {}! Use link below for reset password {}".format( |
229 | | - user.first_name, user.last_name, absolute_url |
230 | | - ) |
231 | | - |
232 | | - data = { |
233 | | - "email_body": email_body, |
234 | | - "email_subject": "Reset password", |
235 | | - "to_email": user.email, |
236 | | - } |
237 | | - |
238 | | - Email.send_email(data) |
| 201 | + reset_email(user, request) |
239 | 202 |
|
240 | 203 | return Response(serializer.data, status=status.HTTP_201_CREATED) |
241 | 204 |
|
@@ -312,13 +275,13 @@ def create(self, request, *args, **kwargs): |
312 | 275 | serializer.validated_data["user"] = request.user |
313 | 276 | # warning for someone who tries to set user variable (the user will always be yourself anyway) |
314 | 277 | if ( |
315 | | - request.data.get("user") is not None |
316 | | - and request.data.get("user") != request.user.id |
| 278 | + request.data.get("user") is not None |
| 279 | + and request.data.get("user") != request.user.id |
317 | 280 | ): |
318 | 281 | return Response( |
319 | 282 | { |
320 | 283 | "error": "you can't edit USER field for this view since " |
321 | | - "you can't create achievements for other people" |
| 284 | + "you can't create achievements for other people" |
322 | 285 | }, |
323 | 286 | status=status.HTTP_403_FORBIDDEN, |
324 | 287 | ) |
|
0 commit comments