프로젝트

📚 회원 탈퇴(DELETE) 기능 정리 (10)

Chansman 2025. 6. 10. 01:21

회원 탈퇴(DELETE) 기능 정리

1. 🔥 기능 설명

  • 로그인한 사용자가 자신의 계정을 삭제(탈퇴)하는 기능.
  • 삭제 후 "Deleted successfully" 메시지를 응답.
  • 인증(로그인) 된 사용자만 요청 가능.
  • 탈퇴 시 연결된 데이터도 같이 삭제됨.
    • 연결된 Account, TransactionHistory, Notification, Analysis 등.

2. 🔧 추가한 코드

@extend_schema(
    summary="회원 탈퇴",
    description="회원 탈퇴 후 'Deleted successfully' 메시지를 반환합니다.",
    responses={200: {"type": "object", "properties": {"message": {"type": "string"}}}},
)
def delete(self, request):
    request.user.delete()
    return Response({"message": "Deleted successfully"}, status=status.HTTP_200_OK)

추가 위치:
UserProfileView 클래스 안에 get(), patch()와 같은 레벨에 추가.


3. 📝 API 스펙 요약

항목내용
URL /api/users/me/
Method DELETE
권한 로그인한 사용자만 (IsAuthenticated)
요청 바디 없음 (DELETE 메서드)
응답 바디 { "message": "Deleted successfully" }
응답 코드 200 OK
 

4. 📚 검증 포인트

  • 권한 체크: 인증된 사용자만 탈퇴 가능.
  • 정상 응답: 200 OK + "Deleted successfully" 반환.
  • DB 삭제: CustomUser 레코드 삭제.
  • 연결 데이터 삭제: Account, TransactionHistory, Notification, Analysis → 모두 CASCADE 삭제.
  • 로그인 불가: 삭제 후 해당 계정으로 로그인 시도 시 실패.

5. ⚠️ 주의사항

  • Hard Delete: 데이터베이스에서 완전히 삭제됨 (Soft Delete 아님).
  • 토큰은 남아있지만 유저가 삭제되어 인증 실패 발생.
  • 탈퇴 후 재가입 가능: 이메일, 닉네임 모두 DB에서 제거되기 때문에.

📌 요약

회원 탈퇴 기능은
DELETE /api/users/me/ 호출 시
본인 계정 삭제 + "Deleted successfully" 메시지 반환.