This module contains the views of the users package.
Classes
UserRegisterAPI
: A class that contains post endpoint for user registration
UserLoginAPI
: A class that contains post endpoint for user login
UserLoginAPI
Bases: views.APIView
API view for user login.
Methods
post
: A method for making POST request for user login
Source code in backend/api/users/views.py
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129 | class UserLoginAPI(views.APIView):
"""API view for user login.
Methods:
- `post`: A method for making POST request for user login
"""
def post(self, request: Request) -> Response:
"""Handle POST request for user login.
Args:
request: The HTTP request object.
Returns:
The HTTP response object.
"""
payload = request.data
if "email" not in payload or payload["email"] == "":
return Response({
"status": status.HTTP_400_BAD_REQUEST,
"message": "Please correct the errors",
"email_error": "Email is required",
})
if "password" not in payload or payload["password"] == "":
return Response({
"status": status.HTTP_400_BAD_REQUEST,
"message": "Please correct the errors",
"password_error": "Password is required",
})
user = AuthUser.objects.filter(email=payload["email"]).first()
if not user:
return Response({
"status": status.HTTP_404_NOT_FOUND,
"message": "Please correct the errors",
"email_error": "User with this email is not found!",
})
if not user.check_password(payload["password"]):
return Response({
"status": status.HTTP_404_NOT_FOUND,
"message": "Please correct the errors",
"password_error": "Password is not correct!",
})
if user.token is None or user.token == "":
user.set_token(user.email)
user.save()
return Response({
"status": status.HTTP_200_OK,
"message": "User logged successfully!",
"token": user.token,
})
|
post(request)
Handle POST request for user login.
Parameters:
Name |
Type |
Description |
Default |
request |
Request
|
The HTTP request object. |
required
|
Returns:
Type |
Description |
Response
|
The HTTP response object. |
Source code in backend/api/users/views.py
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129 | def post(self, request: Request) -> Response:
"""Handle POST request for user login.
Args:
request: The HTTP request object.
Returns:
The HTTP response object.
"""
payload = request.data
if "email" not in payload or payload["email"] == "":
return Response({
"status": status.HTTP_400_BAD_REQUEST,
"message": "Please correct the errors",
"email_error": "Email is required",
})
if "password" not in payload or payload["password"] == "":
return Response({
"status": status.HTTP_400_BAD_REQUEST,
"message": "Please correct the errors",
"password_error": "Password is required",
})
user = AuthUser.objects.filter(email=payload["email"]).first()
if not user:
return Response({
"status": status.HTTP_404_NOT_FOUND,
"message": "Please correct the errors",
"email_error": "User with this email is not found!",
})
if not user.check_password(payload["password"]):
return Response({
"status": status.HTTP_404_NOT_FOUND,
"message": "Please correct the errors",
"password_error": "Password is not correct!",
})
if user.token is None or user.token == "":
user.set_token(user.email)
user.save()
return Response({
"status": status.HTTP_200_OK,
"message": "User logged successfully!",
"token": user.token,
})
|
UserRegisterAPI
Bases: views.APIView
API View for user registration.
Methods
post
: A method for making POST request to register user
Source code in backend/api/users/views.py
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 | class UserRegisterAPI(views.APIView):
"""API View for user registration.
Methods:
- `post`: A method for making POST request to register user
"""
def post(self, request: Request) -> Response:
"""Handle POST requests for user registration.
Args:
request: The HTTP request object.
Returns:
The HTTP response object.
"""
payload = request.data
user_serializer = UserSerializer(data=payload)
if user_serializer.is_valid():
user = AuthUser(
username=payload["username"],
email=payload["email"],
)
user.set_password(payload["password"])
user.set_token(payload["email"])
user.save()
return Response({
"status": status.HTTP_200_OK,
"message": "User registered successfully!",
"user": UserSerializer(user).data
})
else:
email_error = None
username_error = None
password_error = None
if "email" in user_serializer.errors:
email_error = user_serializer.errors["email"][0]
if "username" in user_serializer.errors:
username_error = user_serializer.errors["username"][0]
if "password" in user_serializer.errors:
password_error = user_serializer.errors["password"][0]
return Response({
"status": status.HTTP_400_BAD_REQUEST,
"message": "Please correct the errors",
"email_error": email_error,
"username_error": username_error,
"password_error": password_error,
})
|
post(request)
Handle POST requests for user registration.
Parameters:
Name |
Type |
Description |
Default |
request |
Request
|
The HTTP request object. |
required
|
Returns:
Type |
Description |
Response
|
The HTTP response object. |
Source code in backend/api/users/views.py
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 | def post(self, request: Request) -> Response:
"""Handle POST requests for user registration.
Args:
request: The HTTP request object.
Returns:
The HTTP response object.
"""
payload = request.data
user_serializer = UserSerializer(data=payload)
if user_serializer.is_valid():
user = AuthUser(
username=payload["username"],
email=payload["email"],
)
user.set_password(payload["password"])
user.set_token(payload["email"])
user.save()
return Response({
"status": status.HTTP_200_OK,
"message": "User registered successfully!",
"user": UserSerializer(user).data
})
else:
email_error = None
username_error = None
password_error = None
if "email" in user_serializer.errors:
email_error = user_serializer.errors["email"][0]
if "username" in user_serializer.errors:
username_error = user_serializer.errors["username"][0]
if "password" in user_serializer.errors:
password_error = user_serializer.errors["password"][0]
return Response({
"status": status.HTTP_400_BAD_REQUEST,
"message": "Please correct the errors",
"email_error": email_error,
"username_error": username_error,
"password_error": password_error,
})
|