Supabase의 signInWithOAuth를 사용하여 Google 소셜 로그인을 구현하고, redirectTo URL 및 prompt: 'consent' 옵션으로 동의 화면 표시를 제어합니다. 🌐
Zustand authStore의 User 인터페이스에 null 타입을 허용하고, persist 미들웨어의 partialize 옵션으로 user 정보만 로컬 스토리지에 저장하도록 설정합니다. 💾
authStore의 reset 함수를 비동기로 변경하여 supabase.auth.signOut() 호출을 포함, Zustand 상태 초기화와 Supabase 세션 제거를 동시에 처리하는 통합 로그아웃 로직을 구현합니다. 👋
supabase.auth.getSession()으로 현재 세션을 확인하고, useAuthListener 커스텀 훅 내에서 supabase.auth.onAuthStateChange를 활용하여 Supabase 인증 상태 변화를 실시간으로 감지, Zustand user 상태를 자동으로 동기화합니다. 👂
useAuthListener 훅을 애플리케이션 전역에 적용하여 모든 페이지에서 일관된 인증 상태 관리 및 UI 업데이트를 보장하며, user가 null일 경우를 대비한 UI 컴포넌트의 조건부 렌더링 및 안전한 접근을 구현합니다. 🚀
로그인 후 URL에 #/가 붙는 해시 모드 문제가 발생함을 확인하고, 추후 해결할 과제로 남겨둡니다. 🚧