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 25 commits into
base: dev
Choose a base branch
from
Open

#527 회원 탈퇴 구현 #528

wants to merge 25 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
src/modules/socket.js Outdated Show resolved Hide resolved
src/modules/socket.js Outdated Show resolved Hide resolved

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 같은 별도의 인자로 관리하는게 좋지 않을까 싶네요

Copy link
Member Author

Choose a reason for hiding this comment

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

oid만 필요한데도 탈퇴 여부를 확인하기 위해 userModel에 쿼리하는 코드가 생각보다 많이 있네요.. 어떻게 하는게 좋을지 고민이 필요할 것 같습니다

src/services/reports.js Show resolved Hide resolved
@@ -132,7 +132,9 @@ const getTicketLeaderboardHandler = async (req, res) => {
);
const leaderboard = await Promise.all(
sortedUsers.slice(0, 20).map(async (user) => {
const userInfo = await userModel.findOne({ _id: user.userId }).lean();
const userInfo = await userModel
.findOne({ _id: user.userId, 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.

혹시 나중에 코드볼때 헷갈릴 것 같아서
// user.userId는 userOid입니다.
이런 주석 하나만 달아주시면 좋을듯 합니다

Copy link
Contributor

@TaehyeonPark TaehyeonPark left a comment

Choose a reason for hiding this comment

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

LGTV~

@kmc7468
Copy link
Member Author

kmc7468 commented Jan 14, 2025

자주 헷갈려서 남기는 메모

  • User Document에 있는 id -> SPARCS SSO의 UID
  • User Document에 있는 _id -> MongoDB의 Object ID
  • SID는 세션 스토어에만 저장됨

@kmc7468
Copy link
Member Author

kmc7468 commented Jan 14, 2025

image

탈퇴 후 새로운 계정으로 같은 방에 재입장했을 때, 입장/퇴장 안내 메세지가 새 계정의 닉네임으로 표시되는 문제가 있어요.

@kmc7468
Copy link
Member Author

kmc7468 commented Jan 14, 2025

비슷한 이유로 입장 후 탈퇴하면 닉네임이 안뜨는 문제도 있습니다. 이 문제는 프론트랑 같이 해결이 필요할듯 @jinhyeonkwon

image

@kmc7468
Copy link
Member Author

kmc7468 commented Jan 21, 2025

최근 두 코멘트를 통해 언급한 버그는 Chat Document에서 content에 userId가 저장되어서 발생한 문제였습니다. DB 마이그레이션 및 content에 userOid를 저장하도록 변경하는 것을 통해 해결하고자 합니다.

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.

회원 탈퇴 구현
3 participants