Compare commits
No commits in common. "e972cfdd1d22688166f06e02de17e2668c2d7c88" and "1f06772716d1dc61bff0209696a526d1c315f42f" have entirely different histories.
e972cfdd1d
...
1f06772716
@ -2,39 +2,9 @@ import type { SessionData } from '@/types/Auth'
|
|||||||
import { cookies } from 'next/headers'
|
import { cookies } from 'next/headers'
|
||||||
import { NextResponse } from 'next/server'
|
import { NextResponse } from 'next/server'
|
||||||
import { getIronSession } from 'iron-session'
|
import { getIronSession } from 'iron-session'
|
||||||
import { axiosInstance } from '@/libs/axios'
|
|
||||||
import { sessionOptions } from '@/libs/session'
|
import { sessionOptions } from '@/libs/session'
|
||||||
import { tracking } from '@/libs/tracking'
|
import { tracking } from '@/libs/tracking'
|
||||||
|
|
||||||
export async function POST(request: Request) {
|
|
||||||
const cookieStore = await cookies()
|
|
||||||
const session = await getIronSession<SessionData>(cookieStore, sessionOptions)
|
|
||||||
|
|
||||||
const headers: Record<string, string> = {
|
|
||||||
referer: process.env.NEXT_PUBLIC_QSP_API_REFERER || '',
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
const result = await axiosInstance(`${process.env.NEXT_PUBLIC_QSP_API_URL}`, headers).post(`/api/user/logout`, {
|
|
||||||
loginId: session.userId,
|
|
||||||
accsSiteCd: 'QREAD',
|
|
||||||
actLog: 'LOGOUT',
|
|
||||||
requestId: session.sessionId,
|
|
||||||
})
|
|
||||||
console.log('🚀 ~ logout ~ result:', result.data)
|
|
||||||
} catch (e) {
|
|
||||||
console.error('🚀 ~ logout ~ error:', e)
|
|
||||||
}
|
|
||||||
|
|
||||||
tracking({
|
|
||||||
url: '/api/auth/logout',
|
|
||||||
data: JSON.stringify({ loginId: session.userId }),
|
|
||||||
})
|
|
||||||
session.destroy()
|
|
||||||
|
|
||||||
return NextResponse.json({ code: 200, message: 'Logout successful' })
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function GET(request: Request) {
|
export async function GET(request: Request) {
|
||||||
const cookieStore = await cookies()
|
const cookieStore = await cookies()
|
||||||
const session = await getIronSession<SessionData>(cookieStore, sessionOptions)
|
const session = await getIronSession<SessionData>(cookieStore, sessionOptions)
|
||||||
@ -46,6 +16,7 @@ export async function GET(request: Request) {
|
|||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
session.destroy()
|
session.destroy()
|
||||||
|
// return redirect('/login')
|
||||||
|
|
||||||
return NextResponse.json({ code: 200, message: 'Logout successful' })
|
return NextResponse.json({ code: 200, message: 'Logout successful' })
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,8 +9,6 @@ import { tracking } from '@/libs/tracking'
|
|||||||
export async function POST(request: Request) {
|
export async function POST(request: Request) {
|
||||||
const { loginId, pwd } = await request.json()
|
const { loginId, pwd } = await request.json()
|
||||||
|
|
||||||
const sessionId = crypto.randomUUID()
|
|
||||||
|
|
||||||
const headers: Record<string, string> = {
|
const headers: Record<string, string> = {
|
||||||
referer: process.env.NEXT_PUBLIC_QSP_API_REFERER || '',
|
referer: process.env.NEXT_PUBLIC_QSP_API_REFERER || '',
|
||||||
}
|
}
|
||||||
@ -18,9 +16,6 @@ export async function POST(request: Request) {
|
|||||||
const result = await axiosInstance(`${process.env.NEXT_PUBLIC_QSP_API_URL}`, headers).post(`/api/user/login`, {
|
const result = await axiosInstance(`${process.env.NEXT_PUBLIC_QSP_API_URL}`, headers).post(`/api/user/login`, {
|
||||||
loginId,
|
loginId,
|
||||||
pwd,
|
pwd,
|
||||||
accsSiteCd: 'QREAD',
|
|
||||||
actLog: 'LOGIN',
|
|
||||||
requestId: sessionId,
|
|
||||||
})
|
})
|
||||||
console.log('🚀 ~ result ~ result:', result.data)
|
console.log('🚀 ~ result ~ result:', result.data)
|
||||||
|
|
||||||
@ -29,7 +24,10 @@ export async function POST(request: Request) {
|
|||||||
if (result.data.result.resultCode === 'S') {
|
if (result.data.result.resultCode === 'S') {
|
||||||
tracking({
|
tracking({
|
||||||
url: `/api/auth/login`,
|
url: `/api/auth/login`,
|
||||||
data: JSON.stringify({ loginId }),
|
data: JSON.stringify({
|
||||||
|
loginId,
|
||||||
|
pwd,
|
||||||
|
}),
|
||||||
})
|
})
|
||||||
const cookieStore = await cookies()
|
const cookieStore = await cookies()
|
||||||
const session = await getIronSession<SessionData>(cookieStore, sessionOptions)
|
const session = await getIronSession<SessionData>(cookieStore, sessionOptions)
|
||||||
@ -67,7 +65,6 @@ export async function POST(request: Request) {
|
|||||||
session.builderNm = result.data.data.builderNm
|
session.builderNm = result.data.data.builderNm
|
||||||
session.isLoggedIn = true
|
session.isLoggedIn = true
|
||||||
session.custNm = result.data.data.custNm
|
session.custNm = result.data.data.custNm
|
||||||
session.sessionId = sessionId
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* - Admin_Sub: 2차 판매점 슈퍼/일반 유저 (groupId: 70000 (Musubi), builderNo: null, userAuthCd: B가 아닌 경우)
|
* - Admin_Sub: 2차 판매점 슈퍼/일반 유저 (groupId: 70000 (Musubi), builderNo: null, userAuthCd: B가 아닌 경우)
|
||||||
@ -125,10 +122,25 @@ export async function POST(request: Request) {
|
|||||||
BUILDER_NO: result.data.data.builderNo,
|
BUILDER_NO: result.data.data.builderNo,
|
||||||
BUILDER_NM: result.data.data.builderNm,
|
BUILDER_NM: result.data.data.builderNm,
|
||||||
IS_LOGGED_IN: true,
|
IS_LOGGED_IN: true,
|
||||||
ROLE: session.role,
|
ROLE: '',
|
||||||
CUST_NM: result.data.data.custNm,
|
CUST_NM: result.data.data.custNm,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (result.data.data.userId === 'T01' || result.data.data.storeId === 'T01') {
|
||||||
|
resultForSession.ROLE = 'T01'
|
||||||
|
} else if (result.data.data.groupId === '60000') {
|
||||||
|
resultForSession.ROLE = 'Admin'
|
||||||
|
} else if (result.data.data.groupId === '70000' && result.data.data.builderNo === null && result.data.data.userAuthCd !== 'B') {
|
||||||
|
resultForSession.ROLE = 'Admin_Sub'
|
||||||
|
} else if (
|
||||||
|
(result.data.data.groupId === '70000' && result.data.data.builderNo !== null) ||
|
||||||
|
(result.data.data.groupId === '70000' && result.data.data.builderNo === null && result.data.data.userAuthCd === 'B')
|
||||||
|
) {
|
||||||
|
resultForSession.ROLE = 'Builder'
|
||||||
|
} else {
|
||||||
|
resultForSession.ROLE = 'User'
|
||||||
|
}
|
||||||
|
|
||||||
finalResult = {
|
finalResult = {
|
||||||
code: 200,
|
code: 200,
|
||||||
message: 'Login is Succecss!!',
|
message: 'Login is Succecss!!',
|
||||||
|
|||||||
@ -91,9 +91,6 @@ export default function Login() {
|
|||||||
result: SessionData
|
result: SessionData
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: queryKey가 고정값(['login', 'account'])이라 이전 로그인 성공 캐시가 남아있으면
|
|
||||||
// isLogin이 true로 바뀌는 순간 캐시를 먼저 반환 → useEffect 실행 → router.push('/') 발생
|
|
||||||
// useMutation으로 교체 필요
|
|
||||||
const {
|
const {
|
||||||
data: loginData,
|
data: loginData,
|
||||||
isPending,
|
isPending,
|
||||||
|
|||||||
@ -49,8 +49,7 @@ export const defaultSession: SessionData = {
|
|||||||
builderNm: null,
|
builderNm: null,
|
||||||
isLoggedIn: false,
|
isLoggedIn: false,
|
||||||
role: null,
|
role: null,
|
||||||
custNm: null,
|
custNm: null
|
||||||
sessionId: null,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getSession = async () => {
|
export const getSession = async () => {
|
||||||
|
|||||||
@ -32,5 +32,4 @@ export interface SessionData {
|
|||||||
isLoggedIn: boolean
|
isLoggedIn: boolean
|
||||||
role: string | null
|
role: string | null
|
||||||
custNm: null | string
|
custNm: null | string
|
||||||
sessionId: string | null
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user