From e66b009dd3f377ab9fb92ef7bda417aa337c2840 Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Wed, 21 May 2025 11:16:47 +0900 Subject: [PATCH 1/2] fix: Update session data display in Header component to use store name instead of category; add additional role mapping in README --- README.md | 3 ++- src/components/ui/common/Header.tsx | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 72a29f7..6d332e0 100644 --- a/README.md +++ b/README.md @@ -54,12 +54,13 @@ session에 있는 role 키로 구분한다 session.role === 'Admin_Sub' - constA03_01 / 1234 -> 시공사\ session.role === 'Builder' +- teshg44 / 1234 -> 시공사\ + session.role === 'Builder' - partners -> Q.Partners 계정\ session.role === 'Partner' - 이외의 경우 -> 굳이 체크할 필요 없어보임\ session.role === 'User' - # 지붕재 적합성 TODO ``` diff --git a/src/components/ui/common/Header.tsx b/src/components/ui/common/Header.tsx index 3a2ca15..bd92675 100644 --- a/src/components/ui/common/Header.tsx +++ b/src/components/ui/common/Header.tsx @@ -71,7 +71,7 @@ export default function Header() {
{session.userNm}
-
{session.category}
+
{session.storeNm}
From 4e8f698f88e25c7e844aa4784b28da4cfe39d223 Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Wed, 21 May 2025 11:17:14 +0900 Subject: [PATCH 2/2] feat: Integrate tracking functionality in authentication API routes for enhanced user activity monitoring; update tracking data structure in tracking route --- src/app/api/auth/logout/route.ts | 7 +++++++ src/app/api/auth/route.ts | 8 ++++++++ src/app/api/tracking/route.ts | 24 ++++++++++++++++-------- src/libs/axios.ts | 3 +-- src/providers/EdgeProvider.tsx | 2 +- 5 files changed, 33 insertions(+), 11 deletions(-) diff --git a/src/app/api/auth/logout/route.ts b/src/app/api/auth/logout/route.ts index 78f0a58..ad4b365 100644 --- a/src/app/api/auth/logout/route.ts +++ b/src/app/api/auth/logout/route.ts @@ -3,11 +3,18 @@ import { cookies } from 'next/headers' import { NextResponse } from 'next/server' import { getIronSession } from 'iron-session' import { sessionOptions } from '@/libs/session' +import { tracking } from '@/libs/tracking' export async function GET(request: Request) { const cookieStore = await cookies() const session = await getIronSession(cookieStore, sessionOptions) + tracking({ + url: '/api/auth/logout', + data: JSON.stringify({ + userId: session.userId, + }), + }) session.destroy() // return redirect('/login') diff --git a/src/app/api/auth/route.ts b/src/app/api/auth/route.ts index c595ecd..d5149a9 100644 --- a/src/app/api/auth/route.ts +++ b/src/app/api/auth/route.ts @@ -4,6 +4,7 @@ import { NextResponse } from 'next/server' import { getIronSession } from 'iron-session' import { axiosInstance } from '@/libs/axios' import { sessionOptions } from '@/libs/session' +import { tracking } from '@/libs/tracking' export async function POST(request: Request) { const { loginId, pwd } = await request.json() @@ -15,6 +16,13 @@ export async function POST(request: Request) { console.log('🚀 ~ result ~ result:', result.data) if (result.data.result.code === 200) { + tracking({ + url: `/api/auth/login`, + data: JSON.stringify({ + loginId, + pwd, + }), + }) const cookieStore = await cookies() const session = await getIronSession(cookieStore, sessionOptions) diff --git a/src/app/api/tracking/route.ts b/src/app/api/tracking/route.ts index d5f5607..913b4c5 100644 --- a/src/app/api/tracking/route.ts +++ b/src/app/api/tracking/route.ts @@ -1,17 +1,25 @@ import type { SessionData } from '@/types/Auth' import { NextResponse } from 'next/server' import { cookies } from 'next/headers' -import { Prisma } from '@prisma/client' +import { prisma } from '@/libs/prisma' import { getIronSession } from 'iron-session' import { sessionOptions } from '@/libs/session' -export const POST = async (request: Request) => { +export async function POST(request: Request) { const { url, data } = await request.json() const cookieStore = await cookies() const session = await getIronSession(cookieStore, sessionOptions) - let owner = session.userId + let owner = '' + if (url === '/api/auth/login') { + owner = 'Login' + } else if (url === '/api/auth/logout') { + owner = 'Logout' + } else { + owner = session.userId ?? 'Direct' + } + let type = '' if (url.includes('api')) { type = 'api' @@ -20,12 +28,12 @@ export const POST = async (request: Request) => { } // @ts-ignore - const result = await Prisma.MS_USR_TRK.create({ + const result = await prisma.MS_USR_TRK.create({ data: { - owner, - type, - url, - data: JSON.stringify(data), + OWNER: owner, + TYPE: type, + URL: url, + DATA: JSON.stringify(data), }, }) diff --git a/src/libs/axios.ts b/src/libs/axios.ts index b75e989..0abc6ab 100644 --- a/src/libs/axios.ts +++ b/src/libs/axios.ts @@ -1,5 +1,4 @@ import axios from 'axios' -import { tracking } from './tracking' export const axiosInstance = (url: string | null | undefined) => { const baseURL = url || process.env.NEXT_PUBLIC_API_URL @@ -12,7 +11,7 @@ export const axiosInstance = (url: string | null | undefined) => { instance.interceptors.request.use( (config) => { - console.log('🚀 ~ config:', config) + // console.log('🚀 ~ config:', config) return config }, (error) => { diff --git a/src/providers/EdgeProvider.tsx b/src/providers/EdgeProvider.tsx index de3c00f..7bba179 100644 --- a/src/providers/EdgeProvider.tsx +++ b/src/providers/EdgeProvider.tsx @@ -108,7 +108,7 @@ export default function EdgeProvider({ children, sessionData }: EdgeProviderProp //사이드바 초기화 reset() // 페이지 이벤트 트래킹 - // handlePageEvent(pathname) + handlePageEvent(pathname) }, [pathname]) return <>{children}