deleteUser 메서드
public func deleteUser(completion: @escaping (Bool, Error?) -> Void) {
guard let user = Auth.auth().currentUser else {
completion(false, NSError(domain: "", code: 401, userInfo: [NSLocalizedDescriptionKey: "No user is logged in."]))
return
}
let db = Firestore.firestore()
let userUID = user.uid
let storageRef = Storage.storage().reference(withPath: "profile_images/\(userUID).jpg")
// 1. Firestore 데이터 삭제
db.collection("users").document(userUID).delete { error in
if let error = error {
completion(false, error)
return
}
print("Firestore 데이터 삭제 성공")
// 2. Firebase Storage에서 프로필 이미지 삭제
storageRef.delete { error in
if let error = error {
print("Firebase Storage 이미지 삭제 실패: \(error.localizedDescription)")
completion(false, error)
return
}
print("Firebase Storage 이미지 삭제 성공")
// 3. Firebase Authentication 사용자 삭제
user.delete { error in
if let error = error {
print("Firebase Auth 사용자 삭제 실패: \(error.localizedDescription)")
completion(false, error)
return
}
print("Firebase Auth 사용자 삭제 성공")
completion(true, nil) // 성공
}
}
}
}
Firebase Storage에서 프로필 이미지 삭제
- Firestore 데이터 삭제 후, Firebase Storage에서 프로필 이미지를 삭제하는 로직을 추가했습니다.
- storageRef.delete {}를 사용하여 지정된 경로의 이미지를 삭제합니다.
storageRef.delete { error in
if let error = error {
print("Firebase Storage 이미지 삭제 실패: \(error.localizedDescription)")
completion(false, error)
return
}
print("Firebase Storage 이미지 삭제 성공")
}
로직 순서 유지
- Firestore 데이터 삭제 → Storage 이미지 삭제 → Firebase Authentication 사용자 삭제의 순서로 작업이 진행됩니다.
- Firestore와 Storage 작업이 모두 성공해야 Firebase Auth에서 사용자를 삭제합니다.
에러 처리
- 각 단계에서 에러가 발생하면 completion(false, error)를 호출하여 실패를 반환합니다.
- 에러 발생 시 어디서 실패했는지 로그로 출력됩니다.
예상 시나리오 및 처리 방식
- Firestore 데이터가 삭제 실패:
- 메서드가 completion(false, error)로 종료되고, 다음 작업(Storage, Authentication)은 실행되지 않음.
- Storage 이미지가 삭제 실패:
- 메서드가 completion(false, error)로 종료되고, 사용자 계정 삭제는 실행되지 않음.
- 모든 작업 성공:
- Firestore 데이터 삭제 → Storage 이미지 삭제 → Firebase Auth 사용자 삭제가 모두 성공하면, completion(true, nil)을 호출하여 성공으로 처리.
'Project > FirebaseTest' 카테고리의 다른 글
FireBase - 회원 정보 불러오기_프로필 이미지 사용방식 (다운로드 vs URL 기반 로딩) (0) | 2024.12.05 |
---|---|
FireBase - 회원 정보 불러오기 (0) | 2024.12.05 |
FireBase - 회원가입할 때 프로필 이미지 포함 (1) | 2024.12.05 |
FireBase - 사용자 정보 불러오기 및 사용자 삭제 (0) | 2024.12.04 |
FireBase - 유효성 검사 + 사용자 등록 (0) | 2024.12.03 |