-
[4]_1_3. (Firebase) 비밀번호 변경 / 탈퇴서버/1.(Firebase) Authentication 2022. 7. 24. 16:29
비밀번호 변경
비밀번호 변경은 이메일/패스워드 로그인 방식에만 해당하며 탈퇴를 전체를 포괄한다.
우선 로그인이 완료된 화면에서 비밀번호 버튼을 만들고 구글을 이용해 로그인을 할 경우는 안 보이게 하는 코드를 작성한다.
override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) let email = Auth.auth().currentUser?.email ?? "고객" lblWelcome.text = """ 환영합니다. \(email)님 """ let isEmailSignIn = Auth.auth().currentUser?.providerData[0].providerID == "password" btnChangePassword.isHidden = !isEmailSignIn }
print로 콘솔창에 Auth.auth().currentUser?.providerData[0].providerID를 찍어보면
구글로 로그인 시 "google.com"
이메일/패스워드 로그인 시 "password"로 나타난다.
따라서 패스워드로 로그인 하지 않은 경우는 비밀번호 변경 버튼을 hidden 처리하도록 코드를 작성한다.
이제 비밀번호 변경 버튼을 눌렀을 때의 코드를 작성하면
@IBAction func tabBtnChangePassword(_ sender: UIButton) { let email = Auth.auth().currentUser?.email ?? "" Auth.auth().sendPasswordReset(withEmail: email, completion: nil) }
꽤 간단하다.
user 정보에서 이메일을 가져오고sendPasswordReset 명령어에 그 이메일만 주면
Firebase에서 알아서 해당 이메일로 reset을 진행할 수 있는 이메일을 보내주고 처리해준다. 정말 똑똑한 집사님이다.
탈퇴
강의에서 구현한 기능은 여기까지인데 로그인 / 로그아웃 / 비밀번호 변경이 있는데 탈퇴가 없으니까 섭하다.
위 기능들이 모두 Auth.auth()에 있으니 탈퇴도 있을 것이라 생각했고, 탈퇴가 영어로 뭐더라...하고 검색하니
delete users account라고 문장으로 쓴다더라.
그래서 Auth.auth().delete를 찍어보니 currentUser 뒤에 나타난다.
작성 후 실행해보니 유저가 체감하지 못할 정도로 진행되서 경고알럿과 완료알럿 및 화면 이동을 추가했다.
@IBAction func tabBtnDeleteUser(_ sender: UIButton) { let deleteAlert = UIAlertController(title: "탈퇴", message: "탈퇴를 할 경우, 모든 데이터가 소멸됩니다.", preferredStyle: .alert) deleteAlert.addAction(UIAlertAction(title: "OK", style: .default, handler: { _ in Auth.auth().currentUser?.delete() self.deleteUserDone() })) deleteAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel)) present(deleteAlert, animated: true) } private func deleteUserDone() { let deleteDoneAlert = UIAlertController(title: "탈퇴가 완료되었습니다.", message: nil, preferredStyle: .alert) deleteDoneAlert.addAction(UIAlertAction(title: "확인", style: .default, handler: { _ in self.navigationController?.popToRootViewController(animated: true) })) self.present(deleteDoneAlert, animated: true) }
지금 보니 완료 알럿 및 화면 이동 코드는 currentUser.delete 핸들러 안에 작성하면 됐을 것 같다.
그동안 애를 먹던 구글 로그인을 그래도 일단 구현할 수 있었다.
며칠을 깊이 있게 고민하고 파서 안 되도, 다음날 얕은 고민으로 해결될 때가 많다.
허무하긴 하지만 그렇게만이도 되면 어디냐. 빠샤!
'서버 > 1.(Firebase) Authentication' 카테고리의 다른 글
[4]_1_2. (Firebase) Google id를 이용한 가입 / 로그인 / 로그아웃 (0) 2022.07.24 [4]_1_1. (Firebase) e-mail / password를 이용한 가입 / 로그인 / 로그아웃 (0) 2022.07.20 [4]_1_0.Firebase 사용 준비 작업 (3 steps) (0) 2022.07.20