프로젝트/개인 프로젝트
[React + TypeScript + Firebase] 식단어때(How-about-the-diet) 회원 프로필 수정
진기명기
2023. 5. 29. 23:50
✨ 회원 프로필 수정 결과물
https://www.youtube.com/watch?v=x3kbfRrf0AM&list=PLR8FoyenzZ0W097_SdzTomj8VL4s6R_nY&index=11
🥬 회원 프로필 수정
💡 회원가입 시 지정한 '닉네임' 재설정 및 찜리스트에서 화면 표시
💡 회원가입 시 지정한 '비밀번호' 재설정 및 재로그인
🌽 onSubmit 함수
const onSubmit = async (e: FormEvent<HTMLFormElement>) => {
e.preventDefault()
setdisplayNameUpdate(true)
// displayName 업로드
.
.
// password 업로드
.
.
setdisplayNameUpdate(false)
}
✅ 닉네임과 패스워드 재설정을 위해 form을 사용하여 함수 onSubmit을 생성 후 적용
✅ onSubmit 함수에서 닉네임, 패스워드 재설정
💁♀️ setdisplayNameUpdate(true or false)
닉네임 변경 시, 수정 버튼을 클릭한 후에만 재설정한 displayName이 반영되도록 하기 위해 사용
- setdisplayNameUpdate(true)는 displayName 업데이트 작업이 진행 중인지를 나타내는 상태 변수
- setdisplayNameUpdate(false)는 displayName 업데이트 작업이 완료되었음을 나타내는 상태 변수
🥒 닉네임(displayName) 재설정
if(userObj?.displayName !== newDisplayName) {
await userObj?.updateProfile({
displayName: newDisplayName
})
}
✅ 기존 닉네임과 새로 작성한 닉네임이 같지 않다면, updateProfile 메서드를 통해 displayName에 재설정할 닉네임을 newDisplayName으로 받아 업로드
🥑 비밀번호(password) 재설정
if(password !== '') {
try {
await authService.currentUser?.updatePassword(password)
alert('비밀번호가 변경되었습니다.')
setPassword('')
} catch (error) {
const authError = error as firebase.auth.Error
if (authError.code === 'auth/weak-password') {
alert('비밀번호는 6자리 이상 입력해주세요.')
}
}
}
✅ firebase.auth()의 현재사용자를 불러와 updatePassword 메서드에 재설정할 비밀번호를 할당한 password를 업로드
✅ try-catch문을 통해 만약 재설정한 비밀번호가 6자리 이하라면 알림 창으로 경고
👋🏻 마무리
프로필 페이지를 추가하여 회원의 닉네임과 비밀번호를 재설정하는 화면도 추가로 구현하였다.
사진도 업로드 하여 회원이 원하는 이미지를 넣고 싶었지만, 코드가 꼬여 계속 이미지가 깨지는 상황이 발생했다.. 🫠
비밀번호도 변경한 비밀번호를 화면에 표시하고 싶었지만, 보안상의 이유로 비밀번호가 화면에 보이는 것은 권장되지 않는다고 하여 표시하지는 않았다.
회원가입 시 설정한 닉네임과 비밀번호를 수정하는 기능을 만들었지만 회원 프로필 화면이 왜 이리 단출해 보이는지..
역시 사진을 어떻게든 구현해야하나.. 아니면 새로운 정보도 넣을까.. 고민이 된다 🤔
아! 로그아웃이 찜리스트 말고 마이페이지에 있어야 할 것 같아서 로그아웃 버튼도 마이페이지로 가져왔다 😁