summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-10-17 09:43:56 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-10-17 09:43:56 +0000
commitab8b726fee9a82ba98c550a151988c86dc096efd (patch)
treef0293e2f7fcababb9e0fecda2eb025e5fce01102
parentbea9853efe30c393b0d030bc552c1f5bbb838835 (diff)
(대표님) 데이터룸 관련 개발사항
-rw-r--r--app/api/auth/[...nextauth]/route.ts7
-rw-r--r--components/login/login-form.tsx21
2 files changed, 20 insertions, 8 deletions
diff --git a/app/api/auth/[...nextauth]/route.ts b/app/api/auth/[...nextauth]/route.ts
index 3b0f8c61..d6ec807f 100644
--- a/app/api/auth/[...nextauth]/route.ts
+++ b/app/api/auth/[...nextauth]/route.ts
@@ -30,6 +30,7 @@ declare module "next-auth" {
image?: string | null
companyId?: number | null
techCompanyId?: number | null
+ ownerCompanyId?: number | null
domain?: string | null
reAuthTime?: number | null
authMethod?: AuthMethod
@@ -44,6 +45,7 @@ declare module "next-auth" {
imageUrl?: string | null
companyId?: number | null
techCompanyId?: number | null
+ ownerCompanyId?: number | null
domain?: string | null
reAuthTime?: number | null
authMethod?: AuthMethod
@@ -58,6 +60,7 @@ declare module "next-auth/jwt" {
imageUrl?: string | null
companyId?: number | null
techCompanyId?: number | null
+ ownerCompanyId?: number | null
domain?: string | null
reAuthTime?: number | null
authMethod?: AuthMethod
@@ -315,6 +318,7 @@ export const authOptions: NextAuthOptions = {
token.sessionExpiredAt = reAuthTime + sessionTimeoutMs
token.dbSessionId = user.dbSessionId
token.roles = user.roles
+ token.ownerCompanyId = user.ownerCompanyId
}
// ✅ 기존 토큰이 있고 로그인이 아닌 경우, DB에서 최신 사용자 정보 조회
@@ -333,6 +337,7 @@ export const authOptions: NextAuthOptions = {
token.name = latestUser.name
token.companyId = latestUser.companyId
token.techCompanyId = latestUser.techCompanyId
+ token.ownerCompanyId = latestUser.ownerCompanyId
// roles 정보도 최신으로 업데이트
const userRoles = await getUserRoles(parseInt(token.id))
@@ -358,6 +363,7 @@ export const authOptions: NextAuthOptions = {
token.name = latestUser.name
token.companyId = latestUser.companyId
token.techCompanyId = latestUser.techCompanyId
+ token.ownerCompanyId = latestUser.ownerCompanyId
token.roles = await getUserRoles(numericUserId)
}
@@ -430,6 +436,7 @@ export const authOptions: NextAuthOptions = {
domain: token.domain as string,
companyId: token.companyId as number,
techCompanyId: token.techCompanyId as number,
+ ownerCompanyId: token.ownerCompanyId as number,
image: token.imageUrl ?? null,
reAuthTime: token.reAuthTime as number | null,
authMethod: token.authMethod as AuthMethod,
diff --git a/components/login/login-form.tsx b/components/login/login-form.tsx
index 36687096..751e45f4 100644
--- a/components/login/login-form.tsx
+++ b/components/login/login-form.tsx
@@ -99,12 +99,12 @@ export function LoginForm() {
useEffect(() => {
if (status === 'authenticated' && session?.user) {
const callbackUrlParam = searchParams?.get('callbackUrl');
-
+
if (callbackUrlParam) {
try {
// URL 객체로 파싱
const callbackUrl = new URL(callbackUrlParam);
-
+
// pathname + search만 사용 (호스트 제거)
const relativeUrl = callbackUrl.pathname + callbackUrl.search;
router.push(relativeUrl);
@@ -113,8 +113,13 @@ export function LoginForm() {
router.push(callbackUrlParam);
}
} else {
- // callbackUrl이 없으면 기본 대시보드로 리다이렉트
- router.push(`/${lng}/partners/dashboard`);
+ if (session.user.ownerCompanyId) {
+ router.push(`/${lng}/partners/data-room`);
+
+ } else {
+ router.push(`/${lng}/partners/dashboard`);
+
+ }
}
}
}, [status, session, router, lng, searchParams]);
@@ -130,7 +135,7 @@ export function LoginForm() {
// 세분화된 에러 메시지 처리 함수
const getErrorMessage = (error: { errorCode?: string; message?: string }, provider: 'email' | 'sgips') => {
const errorCode = error.errorCode;
-
+
if (!errorCode) {
return error.message || t('authenticationFailed');
}
@@ -270,7 +275,7 @@ export function LoginForm() {
const targetUserId = userIdParam || mfaUserId;
const targetEmail = emailParam || mfaUserEmail;
const targetUserName = userNameParam || mfaUserName;
-
+
if (!targetUserId || mfaCountdown > 0) return;
setIsSmsLoading(true);
@@ -359,7 +364,7 @@ export function LoginForm() {
}
} else {
let errorMessage = t('invalidAuthCode');
-
+
if (result?.error) {
switch (result.error) {
case 'CredentialsSignin':
@@ -676,7 +681,7 @@ export function LoginForm() {
setPassword('');
setUsername('');
}
-
+
// S-Gips 관련 초기화
setSelectedOtpUser(null);
setShowUserSelectionDialog(false);