sn: login

This commit is contained in:
2026-10-28 17:33:09 +09:00
parent a4412001b3
commit e9fb1e3a88
2 changed files with 5 additions and 37 deletions
+4 -36
View File
@@ -1,50 +1,18 @@
/**
* ➡️ 경로 : 루트 (/)
*
*
* 📄 Home Page
* 홈 페이지 컴포넌트
*
* - 쿠키 기반 인증 토큰 검증 및 자동 로그인 처리
* - 로그인 성공 시 지도 페이지로 리다이렉트
* - 개발 환경에서는 루트 진입 시 자동 로그인 후 지도 페이지 이동
* - 로그인 실패 시 에러 로깅 및 처리
* - 루트 진입 시 지도 페이지(/map)로 리다이렉트
* - 인증 토큰 검증 및 로그인 화면 이동은 /map 및 공통 인증 흐름에서 처리
* - 사용자 세션 관리 및 초기 라우팅 제어
* - Next.js useRouter를 통한 클라이언트 사이드 라우팅
*
* 🔗 사용 API
* - 로그인: POST /api/v1/auth/login (user-service)
*/
"use client";
import { authService } from "@/entities/auth";
import { useEffect } from "react";
const DEV_HOSTNAMES = new Set(["localhost", "127.0.0.1", "con.mind-one.co.kr"]);
const DEV_LOGIN_PAYLOAD = {
userId: process.env.NEXT_PUBLIC_DEV_LOGIN_USER_ID || "CLEANWATER",
password: process.env.NEXT_PUBLIC_DEV_LOGIN_PASSWORD || "gktneh12!@",
};
export default function Home() {
useEffect(() => {
const hostname = window.location.hostname;
const isDevHost = DEV_HOSTNAMES.has(hostname);
if (!isDevHost) {
window.location.replace("/map");
return;
}
async function doLogin() {
try {
// 개발 환경에서는 남아 있는 만료/부분 쿠키로 인한 /map <-> / 루프를 막기 위해 항상 토큰을 재발급한다.
await authService.login(DEV_LOGIN_PAYLOAD);
window.location.replace("/map");
} catch (err) {
console.error("로그인 실패", err);
}
}
void doLogin();
window.location.replace("/map");
}, []);
}
@@ -38,7 +38,7 @@
| 파일 | 역할 | 선언/주석 보조 근거 | 행 | 직접 참조 | 상태 |
|---|---|---|---:|---:|---|
| [layout.tsx](<D:/workspace/IIPBS-FRONTEND/frontend/apps/sn/app/layout.tsx>) | Next 루트 HTML·테마·메타데이터·Provider 진입점 | metadata, RootLayout / ➡️ 경로 : 모든 페이지 | 44 | 0 | 등록/도구 진입 규칙 대상 |
| [page.tsx](<D:/workspace/IIPBS-FRONTEND/frontend/apps/sn/app/page.tsx>) | 루트 진입/개발 자동로그인·지도 이동 | DEV_HOSTNAMES, DEV_LOGIN_PAYLOAD, Home / 홈 페이지 컴포넌트 | 51 | 0 | 등록/도구 진입 규칙 대상 |
| [page.tsx](<D:/workspace/IIPBS-FRONTEND/frontend/apps/sn/app/page.tsx>) | 루트 진입/지도 이동 | Home / 홈 페이지 컴포넌트 | 18 | 0 | 등록/도구 진입 규칙 대상 |
| [providers.tsx](<D:/workspace/IIPBS-FRONTEND/frontend/apps/sn/app/providers.tsx>) | 실제 src/app/providers의 AppProvider 재수출. 현재 layout에서 사용 | | 2 | 1 | 정적 참조 있음 |
## app/(auth)/auth