1
1
import os
2
+ import threading
2
3
3
4
from django .http import HttpResponseRedirect
4
5
from pytz import timezone
@@ -23,23 +24,6 @@ def register(request):
23
24
return Response (serializer .data , status = 201 )
24
25
25
26
26
- @api_view (['POST' ])
27
- @permission_classes ([IsEmailVerified ])
28
- def login (request ):
29
- user = User .objects .filter (username = request .data ['username' ]).first ()
30
-
31
- refresh = RefreshToken .for_user (user )
32
- response = Response ()
33
- response .set_cookie (key = 'jwt' , value = str (refresh .access_token ), httponly = True )
34
- response .data = {
35
- 'tokens' : {'access' : str (refresh .access_token ), 'refresh' : str (refresh )},
36
- 'user_id' : user .pk ,
37
- 'username' : user .username
38
- }
39
- response .status_code = 200
40
- return response
41
-
42
-
43
27
@api_view (['POST' ])
44
28
@permission_classes ([AllowAny ])
45
29
def send_email_for_verification (request ):
@@ -48,13 +32,14 @@ def send_email_for_verification(request):
48
32
user = User .objects .get (username = username )
49
33
if user is None or not user .check_password (password ):
50
34
raise AuthenticationFailed ("Wrong Password or Username!" )
51
- send_email (user )
35
+ thread = threading .Thread (target = send_email , args = [user ])
36
+ thread .start ()
52
37
return Response (data = {'message' : 'Email sent successfully!' }, status = 200 )
53
38
54
39
55
40
@api_view (['POST' ])
56
41
@permission_classes ([AllowAny ])
57
- def email_verification (request ):
42
+ def email_verification_and_login (request ):
58
43
try :
59
44
username = request .data ['username' ]
60
45
verification_code = request .data ['verification_code' ]
@@ -69,6 +54,7 @@ def email_verification(request):
69
54
70
55
expiration_time = timedelta (minutes = 15 )
71
56
if (datetime .now ().astimezone (timezone ('UTC' )) - db_verification_code .expired_date ) > expiration_time :
57
+ db_verification_code .delete ()
72
58
return Response (data = {'message' : 'Verification code expired!' }, status = 400 )
73
59
db_verification_code .delete ()
74
60
0 commit comments