-
Notifications
You must be signed in to change notification settings - Fork 1
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
base: dev
Are you sure you want to change the base?
#527 회원 탈퇴 구현 #528
Conversation
const user = await userModel.findOne( | ||
{ id: userId, withdraw: false }, // NOTE: SSO uid 쓰는 곳 | ||
"nickname" | ||
); | ||
return user?.nickname; |
There was a problem hiding this comment.
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를 따로 채팅에서 긁어와서 처리하는 이유가 있나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
원래 구현이 이렇게 되어 있더라구요..! 개인적인 뇌피셜로는 한 번에 여러 명이 입장할 수도 있어서 이렇게 만들어 두신게 아닌가 싶습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이번 기회에 함께 수정해 버릴까요?
src/modules/socket.js
Outdated
authorId: chat.authorId?._id ?? null, | ||
authorName: chat.authorId?.nickname ?? null, | ||
authorProfileUrl: chat.authorId?.profileImageUrl ?? null, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
author에 대한 값이 없는 채팅은 발송이 되면 안되는 것으로 이해했는데, 위에서 검증하고 .push()하는게 좋지 않을까 싶습니다
There was a problem hiding this comment.
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 }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
taxi-back/src/modules/auths/login.js
Line 4 in e541fc0
const getLoginInfo = (req) => { |
위 함수에서 user 객체를 내려줄때 user.oid를 내려주는걸로 보이는데,
통일성을 위해 _id로 변경하고 user._id를 사용하는게 좋지 않을까요?
const user = await userModel.findOne( | ||
{ _id: req.userOid, withdraw: false }, | ||
"_id" | ||
); |
There was a problem hiding this comment.
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 }); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
탈퇴된 유저도 신고할 수 있어야 하지 않을까 라는 생각이 드는데, 이부분은 정책적으로 결정이 필요할 듯 합니다 !
Summary
It closes #527
회원 탈퇴를 구현합니다. 기존 User Schema에 존재하던 withdraw 필드를 활용해 Soft Delete 기반의 회원 탈퇴를 구현하였습니다. 추가로, 기존에 사용하던 userId는 SPARCS SSO에서 넘어오는 고유한 ID이기 때문에, 회원 탈퇴 후 재가입하는 경우를 적절히 처리하기 위해 불가피한 경우를 제외하면 userOid를 사용하도록 변경했습니다.
Further Work