Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#527 회원 탈퇴 구현 #528

Open
wants to merge 13 commits into
base: dev
Choose a base branch
from
Open

#527 회원 탈퇴 구현 #528

wants to merge 13 commits into from

Conversation

kmc7468
Copy link
Member

@kmc7468 kmc7468 commented Jul 30, 2024

Summary

It closes #527
회원 탈퇴를 구현합니다. 기존 User Schema에 존재하던 withdraw 필드를 활용해 Soft Delete 기반의 회원 탈퇴를 구현하였습니다. 추가로, 기존에 사용하던 userId는 SPARCS SSO에서 넘어오는 고유한 ID이기 때문에, 회원 탈퇴 후 재가입하는 경우를 적절히 처리하기 위해 불가피한 경우를 제외하면 userOid를 사용하도록 변경했습니다.

Further Work

  • Frontend 작업 필요

@kmc7468 kmc7468 self-assigned this Jul 30, 2024
@kmc7468 kmc7468 linked an issue Jul 30, 2024 that may be closed by this pull request
2 tasks
@kmc7468 kmc7468 marked this pull request as ready for review August 20, 2024 11:55
@cokia cokia self-requested a review September 3, 2024 12:59
Comment on lines +38 to +42
const user = await userModel.findOne(
{ id: userId, withdraw: false }, // NOTE: SSO uid 쓰는 곳
"nickname"
);
return user?.nickname;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

chat 의 authorId 값이 User._id인데, 굳이 userId를 따로 채팅에서 긁어와서 처리하는 이유가 있나요?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

원래 구현이 이렇게 되어 있더라구요..! 개인적인 뇌피셜로는 한 번에 여러 명이 입장할 수도 있어서 이렇게 만들어 두신게 아닌가 싶습니다.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이번 기회에 함께 수정해 버릴까요?

Comment on lines 49 to 51
authorId: chat.authorId?._id ?? null,
authorName: chat.authorId?.nickname ?? null,
authorProfileUrl: chat.authorId?.profileImageUrl ?? null,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

author에 대한 값이 없는 채팅은 발송이 되면 안되는 것으로 이해했는데, 위에서 검증하고 .push()하는게 좋지 않을까 싶습니다

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

탈퇴한 계정의 경우에는 null을 넣어서 드리고 프론트엔드에서 별도로 처리하는 식으로 구현하려고 했는데, 더 좋은 방법이 있을까요?


const userDetail = await userModel.findOne(
{ id: user.id },
{ _id: user.oid, withdraw: false },
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

const getLoginInfo = (req) => {

위 함수에서 user 객체를 내려줄때 user.oid를 내려주는걸로 보이는데,
통일성을 위해 _id로 변경하고 user._id를 사용하는게 좋지 않을까요?

Comment on lines +22 to +25
const user = await userModel.findOne(
{ _id: req.userOid, withdraw: false },
"_id"
);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

탈퇴여부를 확인하는 의도인 것 같은데, user의 _id를 넣어서, _id를 반환받는 코드는 다소 비직관적으로 느껴질 수 있을 것 같아요.
isUserWithdraw 같은 별도의 인자로 관리하는게 좋지 않을까 싶네요

@@ -68,7 +71,7 @@ const createHandler = async (req, res) => {
const searchByUserHandler = async (req, res) => {
try {
// 해당 user가 신고한 사람인지, 신고 받은 사람인지 기준으로 신고를 분리해서 응답을 전송합니다.
const user = await userModel.findOne({ id: req.userId });
const user = await userModel.findOne({ _id: req.userOid, withdraw: false });
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

탈퇴된 유저도 신고할 수 있어야 하지 않을까 라는 생각이 드는데, 이부분은 정책적으로 결정이 필요할 듯 합니다 !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

회원 탈퇴 구현
2 participants