콘텐츠로 이동

withdraw (회원 탈퇴)

사용자의 회원 탈퇴를 처리합니다. 클라이언트에서 재인증 후 발급받은 토큰이 필요하며, 소속이 없는 경우에만 탈퇴가 가능합니다.

기본 정보

항목
URL https://asia-northeast3-construction24-test.cloudfunctions.net/withdraw
Method POST
인증 Firebase ID Token 필요 (재인증 필수)

요청

Headers

헤더 필수 설명
Authorization Bearer O 재인증 후 발급받은 Firebase ID Token
Content-Type application/json O -

Body

요청 본문은 필요 없습니다. (빈 JSON {} 전송)

클라이언트 호출 예시

// 1. 비밀번호 재인증
const credential = EmailAuthProvider.credential(user.email, password);
await reauthenticateWithCredential(user, credential);

// 2. 재인증 후 갱신된 토큰으로 탈퇴 요청
const token = await user.getIdToken(true);
await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${token}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({})
});

응답

성공 (200)

{
  "message": "회원 탈퇴가 완료되었습니다."
}

실패

에러 코드 message 원인
AUTH_001 (401) "인증 토큰이 없습니다." 토큰 누락
AUTH_005 (401) "재인증이 필요합니다. 비밀번호를 다시 입력해주세요." 재인증 후 5분 초과
USER_001 (404) "사용자 정보를 찾을 수 없습니다." 존재하지 않는 UID
USER_005 (400) "이미 탈퇴한 사용자입니다." 이미 탈퇴 처리된 계정
USER_006 (400) "소속된 회사 또는 현장이 있습니다. 먼저 소속을 해제해주세요." membership이 남아있음
SERVER_001 (500) "서버 오류 발생: {에러}" 서버 내부 오류

참고

  • 클라이언트에서 reauthenticateWithCredential로 비밀번호 재인증 후 토큰을 전달해야 합니다.
  • 서버에서 토큰의 auth_time을 확인하여 재인증 후 5분 이내인지 검증합니다.
  • 탈퇴 시 개인정보는 삭제가 아닌 null로 마스킹 처리됩니다.
  • withdrawn: true, withdrawn_at: timestamp가 기록됩니다.
  • Firebase Auth 계정이 삭제되어 재로그인이 불가합니다.
  • 서브컬렉션(equipments, certificates, resumes, requests, inquiries)은 모두 삭제됩니다.
  • 소속이 있는 경우 먼저 회사/현장 탈퇴를 진행해야 합니다.
  • 관련 API: [[company_resign]], [[site_resign]], [[equipment_resign]]