withdraw (회원 탈퇴)
사용자의 회원 탈퇴를 처리합니다. 클라이언트에서 재인증 후 발급받은 토큰이 필요하며, 소속이 없는 경우에만 탈퇴가 가능합니다.
기본 정보
| 항목 |
값 |
| URL |
https://asia-northeast3-construction24-test.cloudfunctions.net/withdraw |
| Method |
POST |
| 인증 |
Firebase ID Token 필요 (재인증 필수) |
요청
| 헤더 |
값 |
필수 |
설명 |
| 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]]