Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable
This commit is contained in:
commit
68da6f7f0f
@ -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
|
||||
|
||||
```
|
||||
|
||||
@ -7,18 +7,6 @@ datasource db {
|
||||
url = env("DATABASE_URL")
|
||||
}
|
||||
|
||||
model User {
|
||||
id Int @id @default(autoincrement())
|
||||
username String @unique
|
||||
phone String?
|
||||
email String?
|
||||
password String?
|
||||
kakao_id String?
|
||||
avatar String?
|
||||
created_at DateTime @default(now())
|
||||
updated_at DateTime @updatedAt
|
||||
}
|
||||
|
||||
model MS_SUITABLE {
|
||||
id Int @id @default(autoincrement())
|
||||
product_name String @db.VarChar(200)
|
||||
@ -122,28 +110,28 @@ model SD_SURVEY_SALES_DETAIL_INFO {
|
||||
|
||||
model BC_COMM_H {
|
||||
HEAD_CD String @id(map: "PK_BC_COMM_H") @db.NVarChar(6)
|
||||
HEAD_ID String @db.NVarChar(100)
|
||||
HEAD_NM String @db.NVarChar(100)
|
||||
HEAD_JP String @db.NVarChar(100)
|
||||
HEAD_4TH String @db.NVarChar(100)
|
||||
REF_CHR1 String @db.NVarChar(100)
|
||||
REF_CHR2 String @db.NVarChar(100)
|
||||
REF_CHR3 String @db.NVarChar(100)
|
||||
REF_CHR4 String @db.NVarChar(100)
|
||||
REF_CHR5 String @db.NVarChar(100)
|
||||
REF_NUM1 String @db.NVarChar(100)
|
||||
REF_NUM2 String @db.NVarChar(100)
|
||||
REF_NUM3 String @db.NVarChar(100)
|
||||
REF_NUM4 String @db.NVarChar(100)
|
||||
REF_NUM5 String @db.NVarChar(100)
|
||||
REMARKS String @db.NVarChar(200)
|
||||
SAP_YN String @db.NVarChar(1)
|
||||
STAT_CD String @db.NVarChar(1)
|
||||
DEL_YN String @db.NVarChar(1)
|
||||
HEAD_ID String? @db.NVarChar(100)
|
||||
HEAD_NM String? @db.NVarChar(100)
|
||||
HEAD_JP String? @db.NVarChar(100)
|
||||
HEAD_4TH String? @db.NVarChar(100)
|
||||
REF_CHR1 String? @db.NVarChar(100)
|
||||
REF_CHR2 String? @db.NVarChar(100)
|
||||
REF_CHR3 String? @db.NVarChar(100)
|
||||
REF_CHR4 String? @db.NVarChar(100)
|
||||
REF_CHR5 String? @db.NVarChar(100)
|
||||
REF_NUM1 String? @db.NVarChar(100)
|
||||
REF_NUM2 String? @db.NVarChar(100)
|
||||
REF_NUM3 String? @db.NVarChar(100)
|
||||
REF_NUM4 String? @db.NVarChar(100)
|
||||
REF_NUM5 String? @db.NVarChar(100)
|
||||
REMARKS String? @db.NVarChar(200)
|
||||
SAP_YN String? @db.NVarChar(1)
|
||||
STAT_CD String? @db.NVarChar(1)
|
||||
DEL_YN String? @db.NVarChar(1)
|
||||
REG_DT DateTime? @db.DateTime
|
||||
REG_ID String @db.NVarChar(50)
|
||||
REG_ID String? @db.NVarChar(50)
|
||||
UPT_DT DateTime? @db.DateTime
|
||||
UPT_ID String @db.NVarChar(50)
|
||||
UPT_ID String? @db.NVarChar(50)
|
||||
QC_COMM_YN String? @default("N", map: "DF__BC_COMM_H__QC_CO__48CFD27E") @db.NVarChar(1)
|
||||
BC_COMM_L BC_COMM_L[]
|
||||
|
||||
@ -181,11 +169,11 @@ model BC_COMM_L {
|
||||
}
|
||||
|
||||
model MS_SUITABLE_ROOF_MATERIAL_GROUP {
|
||||
ID Int @id @default(autoincrement())
|
||||
ROOF_MATERIAL_GROUP String @db.VarChar(200)
|
||||
ROOF_MT_CD String @db.VarChar(200)
|
||||
REG_DT DateTime @default(now(), map: "DF__MS_SUITAB__creat__4F7CD00D")
|
||||
UPT_DT DateTime
|
||||
ID Int @id @default(autoincrement())
|
||||
ROOF_MATERIAL_GROUP String @db.VarChar(200)
|
||||
ROOF_MT_CD String @db.VarChar(200)
|
||||
REG_DT DateTime @default(now(), map: "DF__MS_SUITAB__creat__4F7CD00D")
|
||||
UPT_DT DateTime?
|
||||
}
|
||||
|
||||
model MS_SUITABLE_DETAIL {
|
||||
|
||||
@ -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<SessionData>(cookieStore, sessionOptions)
|
||||
|
||||
tracking({
|
||||
url: '/api/auth/logout',
|
||||
data: JSON.stringify({
|
||||
userId: session.userId,
|
||||
}),
|
||||
})
|
||||
session.destroy()
|
||||
// return redirect('/login')
|
||||
|
||||
|
||||
@ -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<SessionData>(cookieStore, sessionOptions)
|
||||
|
||||
|
||||
@ -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<SessionData>(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),
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
@ -33,6 +33,11 @@ export default function Login() {
|
||||
pwd: '',
|
||||
})
|
||||
|
||||
const isValidEmail = (email: string) => {
|
||||
const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/
|
||||
return emailRegex.test(email)
|
||||
}
|
||||
|
||||
interface LoginData {
|
||||
code: number
|
||||
message: string | null
|
||||
@ -82,6 +87,14 @@ export default function Login() {
|
||||
}
|
||||
}, [loginData])
|
||||
|
||||
useEffect(() => {
|
||||
if (isValidEmail(account.loginId)) {
|
||||
setIsPartners(true)
|
||||
} else {
|
||||
setIsPartners(false)
|
||||
}
|
||||
}, [account.loginId])
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="login-form-wrap">
|
||||
@ -94,7 +107,7 @@ export default function Login() {
|
||||
value={account.loginId}
|
||||
onChange={(e) => setAccount({ loginId: e.target.value })}
|
||||
/>
|
||||
<button className="login-icon">
|
||||
<button className="login-icon" onClick={() => setAccount({ loginId: '' })}>
|
||||
<i className="del-icon"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@ -71,7 +71,7 @@ export default function Header() {
|
||||
</div>
|
||||
<div className="profile-group">
|
||||
<div className="profile-name">{session.userNm}</div>
|
||||
<div className="profile-company">{session.category}</div>
|
||||
<div className="profile-company">{session.storeNm}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="side-close-wrap">
|
||||
|
||||
@ -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) => {
|
||||
|
||||
@ -6,5 +6,4 @@ export const tracking = async (params: { url: string; data: string }) => {
|
||||
url,
|
||||
data,
|
||||
})
|
||||
console.log('🚀 ~ result ~ result:', result)
|
||||
}
|
||||
|
||||
@ -10,9 +10,9 @@ export async function middleware(request: NextRequest) {
|
||||
const session = await getIronSession<SessionData>(cookieStore, sessionOptions)
|
||||
|
||||
// todo: 로그인 기능 추가 시 주석 해제
|
||||
// if (!session.isLoggedIn) {
|
||||
// return NextResponse.redirect(new URL('/login', request.url))
|
||||
// }
|
||||
if (!session.isLoggedIn) {
|
||||
return NextResponse.redirect(new URL('/login', request.url))
|
||||
}
|
||||
|
||||
return NextResponse.next()
|
||||
}
|
||||
|
||||
@ -108,7 +108,7 @@ export default function EdgeProvider({ children, sessionData }: EdgeProviderProp
|
||||
//사이드바 초기화
|
||||
reset()
|
||||
// 페이지 이벤트 트래킹
|
||||
// handlePageEvent(pathname)
|
||||
handlePageEvent(pathname)
|
||||
}, [pathname])
|
||||
|
||||
return <>{children}</>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user