Skip to content

Commit 722e518

Browse files
refactor: remove invite_code from team responses in API views (#219)
- Updated the TeamListView, TeamDetailView, JoinTeamByInviteCodeView, and AddTeamMembersView to exclude the invite_code from the response data. - This change enhances security and data privacy by ensuring sensitive information is not exposed in API responses. Co-authored-by: Amit Prakash <[email protected]>
1 parent 6cd709c commit 722e518

File tree

1 file changed

+21
-10
lines changed

1 file changed

+21
-10
lines changed

todo/views/team.py

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,10 @@ def get(self, request: Request):
2828
try:
2929
user_id = request.user_id
3030
response: GetUserTeamsResponse = TeamService.get_user_teams(user_id)
31-
32-
return Response(data=response.model_dump(mode="json"), status=status.HTTP_200_OK)
31+
data = response.model_dump(mode="json")
32+
for team in data.get("teams", []):
33+
team.pop("invite_code", None)
34+
return Response(data=data, status=status.HTTP_200_OK)
3335

3436
except ValueError as e:
3537
if isinstance(e.args[0], ApiErrorResponse):
@@ -70,8 +72,11 @@ def post(self, request: Request):
7072
dto = CreateTeamDTO(**serializer.validated_data)
7173
created_by_user_id = request.user_id
7274
response: CreateTeamResponse = TeamService.create_team(dto, created_by_user_id)
73-
74-
return Response(data=response.model_dump(mode="json"), status=status.HTTP_201_CREATED)
75+
data = response.model_dump(mode="json")
76+
# Remove invite_code from the created team
77+
if "team" in data:
78+
data["team"].pop("invite_code", None)
79+
return Response(data=data, status=status.HTTP_201_CREATED)
7580

7681
except ValueError as e:
7782
if isinstance(e.args[0], ApiErrorResponse):
@@ -149,7 +154,9 @@ def get(self, request: Request, team_id: str):
149154
users = UserService.get_users_by_team_id(team_id)
150155
users_data = [user.dict() for user in users]
151156
team_dto.users = users_data
152-
return Response(data=team_dto.model_dump(mode="json"), status=status.HTTP_200_OK)
157+
data = team_dto.model_dump(mode="json")
158+
data.pop("invite_code", None)
159+
return Response(data=data, status=status.HTTP_200_OK)
153160
except ValueError as e:
154161
fallback_response = ApiErrorResponse(
155162
statusCode=404,
@@ -199,8 +206,9 @@ def patch(self, request: Request, team_id: str):
199206
dto = UpdateTeamDTO(**serializer.validated_data)
200207
updated_by_user_id = request.user_id
201208
response: TeamDTO = TeamService.update_team(team_id, dto, updated_by_user_id)
202-
203-
return Response(data=response.model_dump(mode="json"), status=status.HTTP_200_OK)
209+
data = response.model_dump(mode="json")
210+
data.pop("invite_code", None)
211+
return Response(data=data, status=status.HTTP_200_OK)
204212

205213
except ValueError as e:
206214
if isinstance(e.args[0], ApiErrorResponse):
@@ -244,7 +252,9 @@ def post(self, request: Request):
244252
user_id = request.user_id
245253
invite_code = serializer.validated_data["invite_code"]
246254
team_dto = TeamService.join_team_by_invite_code(invite_code, user_id)
247-
return Response(data=team_dto.model_dump(mode="json"), status=status.HTTP_200_OK)
255+
data = team_dto.model_dump(mode="json")
256+
data.pop("invite_code", None)
257+
return Response(data=data, status=status.HTTP_200_OK)
248258
except ValueError as e:
249259
return Response({"detail": str(e)}, status=status.HTTP_400_BAD_REQUEST)
250260
except Exception as e:
@@ -286,8 +296,9 @@ def post(self, request: Request, team_id: str):
286296
member_ids = serializer.validated_data["member_ids"]
287297
added_by_user_id = request.user_id
288298
response: TeamDTO = TeamService.add_team_members(team_id, member_ids, added_by_user_id)
289-
290-
return Response(data=response.model_dump(mode="json"), status=status.HTTP_200_OK)
299+
data = response.model_dump(mode="json")
300+
data.pop("invite_code", None)
301+
return Response(data=data, status=status.HTTP_200_OK)
291302

292303
except ValueError as e:
293304
if isinstance(e.args[0], ApiErrorResponse):

0 commit comments

Comments
 (0)