
이 글은 2026년 03월 28일 작성된 글입니다.
오늘은 Supabase Auth를 기반으로 회원 정보를 자체 user 테이블에
저장하고,
로그아웃 및 마이페이지에서 사용자 정보를 조회/수정하는 기능을 구현했다.
단순 인증(Auth)만 사용하는 것이 아니라,
서비스에서 활용할 사용자 데이터를 별도의 테이블로 관리하는 구조를 구성한
것이 핵심이다.
회원가입 시 Supabase Auth에만 저장하는 것이 아니라,
추가 정보를 관리하기 위해 public.user 테이블에도 데이터를 저장하도록
구현했다.
const { data, error } = await supabase.auth.signUp({
email,
password,
});
if (data.user) {
await supabase.from("user").insert({
id: data.user.id,
email: data.user.email,
nickname,
});
}
로그인된 사용자 정보를 가져와
사이드바 하단에 닉네임과 프로필 이미지를 표시했다.
const {
data: { user },
} = await supabase.auth.getUser();
사이드바에서 로그아웃 및 마이페이지 이동 기능을 구현했다.
await supabase.auth.signOut();
마이페이지에서 로그인된 사용자의 정보를 조회하여 표시했다.
const { data } = await supabase
.from("user")
.select("*")
.eq("id", user.id)
.single();
마이페이지에서 사용자 정보를 수정할 수 있도록 구현했다.
await supabase
.from("user")
.update({ nickname })
.eq("id", user.id);
비밀번호는 직접 변경하는 것이 아니라,
Supabase에서 제공하는 비밀번호 재설정 이메일 기능을 사용했다.
await supabase.auth.resetPasswordForEmail(email, {
redirectTo: "http://localhost:3000/reset-password",
});
await supabase.auth.updateUser({
email: newEmail,
});
현재는 각 컴포넌트(사이드바, 마이페이지)에서\
개별적으로 supabase.getUser()를 호출하고 있다.
이를 개선하여 인증 상태를 한 곳에서 관리하도록 리팩토링할 예정이다.