Feat: 회원가입 직후 이메일 인증 완료 처리 추가
app/auth/callback/route.ts - OAuth 콜백 처리 시 신규 사용자(생성 시간 1분 이내)를 감지하면 자동 로그인 세션을 종료하고 로그인 페이지로 리다이렉트하며 이메일 인증 완료 메시지를 전달하도록 로직 추가 - 일반 로그인은 기존처럼 코드 파라미터 제거 후 깔끔한 URL로 리다이렉트하도록 유지 features/auth/constants.ts - 이메일 인증 성공 메시지 상수 추가 - 일부 문자열 포맷팅 정리
This commit is contained in:
@@ -62,8 +62,33 @@ export async function GET(request: NextRequest) {
|
||||
if (!exchangeError) {
|
||||
// ----------------------------------------------------------------------
|
||||
// 3-1. 교환 성공: 리다이렉트 처리
|
||||
// 코드 파라미터 등을 제거하고 깨끗한 URL로 이동합니다.
|
||||
// code 교환으로 세션이 생성된 상태입니다.
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
const {
|
||||
data: { user },
|
||||
} = await supabase.auth.getUser();
|
||||
|
||||
// 회원가입 직후 인증 여부 확인 (생성된 지 1분 이내)
|
||||
// 별도의 type 파라미터 없이 데이터 기반으로 판단합니다.
|
||||
const isNewUser =
|
||||
user &&
|
||||
user.created_at &&
|
||||
new Date(user.created_at).getTime() > Date.now() - 60 * 1000; // 1분 이내 생성
|
||||
|
||||
// 회원가입 인증인 경우:
|
||||
// 이메일 인증만 완료하고, 자동 로그인된 세션은 종료시킨 뒤 로그인 페이지로 보냅니다.
|
||||
if (isNewUser) {
|
||||
await supabase.auth.signOut();
|
||||
return NextResponse.redirect(
|
||||
`${origin}${AUTH_ROUTES.LOGIN}?message=${encodeURIComponent(
|
||||
AUTH_ERROR_MESSAGES.EMAIL_VERIFIED_SUCCESS,
|
||||
)}`,
|
||||
);
|
||||
}
|
||||
|
||||
// 그 외 일반적인 로그인/인증인 경우:
|
||||
// 코드 파라미터 등을 제거하고 깨끗한 URL로 이동합니다.
|
||||
const forwardedHost = request.headers.get("x-forwarded-host"); // 로드밸런서 지원
|
||||
const isLocalEnv = process.env.NODE_ENV === "development";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user