refactor: Enhance authentication API and login component functionality
- Updated authentication API to improve response handling and session management. - Refactored login component to include validation and keyboard event handling for login submission. - Improved user feedback by displaying alerts for login success and failure messages.
This commit is contained in:
parent
a5696984fc
commit
29e7675ada
@ -15,7 +15,9 @@ export async function POST(request: Request) {
|
||||
})
|
||||
console.log('🚀 ~ result ~ result:', result.data)
|
||||
|
||||
if (result.data.result.code === 200) {
|
||||
let finalResult = {}
|
||||
|
||||
if (result.data.result.resultCode === 'S') {
|
||||
tracking({
|
||||
url: `/api/auth/login`,
|
||||
data: JSON.stringify({
|
||||
@ -72,52 +74,64 @@ export async function POST(request: Request) {
|
||||
console.log('end session edit!')
|
||||
|
||||
await session.save()
|
||||
}
|
||||
|
||||
const resultForSession = {
|
||||
LANG_CD: result.data.data.langCd,
|
||||
CURR_PAGE: result.data.data.currPage,
|
||||
ROW_COUNT: result.data.data.rowCount,
|
||||
START_ROW: result.data.data.startRow,
|
||||
END_ROW: result.data.data.endRow,
|
||||
COMP_CD: result.data.data.compCd,
|
||||
AGENCY_STORE_ID: result.data.data.agencyStoreId,
|
||||
STORE_ID: result.data.data.storeId,
|
||||
STORE_NM: result.data.data.storeNm,
|
||||
USER_ID: result.data.data.userId,
|
||||
CATEGORY: result.data.data.category,
|
||||
USER_NM: result.data.data.userNm,
|
||||
USER_NM_KANA: result.data.data.userNmKana,
|
||||
TEL_NO: result.data.data.telNo,
|
||||
FAX: result.data.data.fax,
|
||||
EMAIL: result.data.data.email,
|
||||
LAST_EDIT_USER: result.data.data.lastEditUser,
|
||||
STORE_GUBUN: result.data.data.storeGubun,
|
||||
PW_CURR: result.data.data.pwCurr,
|
||||
PWD_INIT_YN: result.data.data.pwdInitYn,
|
||||
APPR_STAT_CD: result.data.data.apprStatCd,
|
||||
LOGIN_FAIL_CNT: result.data.data.loginFailCnt,
|
||||
LOGIN_FAIL_MIN_YN: result.data.data.loginFailMinYn,
|
||||
PRICE_VIEW_STAT_CD: result.data.data.priceViewStatCd,
|
||||
GROUP_ID: result.data.data.groupId,
|
||||
STORE_LVL: result.data.data.storeLvl,
|
||||
CUST_CD: result.data.data.custCd,
|
||||
BUILDER_NO: result.data.data.builderNo,
|
||||
IS_LOGGED_IN: true,
|
||||
ROLE: '',
|
||||
}
|
||||
const resultForSession = {
|
||||
LANG_CD: result.data.data.langCd,
|
||||
CURR_PAGE: result.data.data.currPage,
|
||||
ROW_COUNT: result.data.data.rowCount,
|
||||
START_ROW: result.data.data.startRow,
|
||||
END_ROW: result.data.data.endRow,
|
||||
COMP_CD: result.data.data.compCd,
|
||||
AGENCY_STORE_ID: result.data.data.agencyStoreId,
|
||||
STORE_ID: result.data.data.storeId,
|
||||
STORE_NM: result.data.data.storeNm,
|
||||
USER_ID: result.data.data.userId,
|
||||
CATEGORY: result.data.data.category,
|
||||
USER_NM: result.data.data.userNm,
|
||||
USER_NM_KANA: result.data.data.userNmKana,
|
||||
TEL_NO: result.data.data.telNo,
|
||||
FAX: result.data.data.fax,
|
||||
EMAIL: result.data.data.email,
|
||||
LAST_EDIT_USER: result.data.data.lastEditUser,
|
||||
STORE_GUBUN: result.data.data.storeGubun,
|
||||
PW_CURR: result.data.data.pwCurr,
|
||||
PWD_INIT_YN: result.data.data.pwdInitYn,
|
||||
APPR_STAT_CD: result.data.data.apprStatCd,
|
||||
LOGIN_FAIL_CNT: result.data.data.loginFailCnt,
|
||||
LOGIN_FAIL_MIN_YN: result.data.data.loginFailMinYn,
|
||||
PRICE_VIEW_STAT_CD: result.data.data.priceViewStatCd,
|
||||
GROUP_ID: result.data.data.groupId,
|
||||
STORE_LVL: result.data.data.storeLvl,
|
||||
CUST_CD: result.data.data.custCd,
|
||||
BUILDER_NO: result.data.data.builderNo,
|
||||
IS_LOGGED_IN: true,
|
||||
ROLE: '',
|
||||
}
|
||||
|
||||
if (result.data.data.userId === '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) {
|
||||
resultForSession.ROLE = 'Admin_Sub'
|
||||
} else if (result.data.data.groupId === '70000' && result.data.data.builderNo !== null) {
|
||||
resultForSession.ROLE = 'Builder'
|
||||
if (result.data.data.userId === '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) {
|
||||
resultForSession.ROLE = 'Admin_Sub'
|
||||
} else if (result.data.data.groupId === '70000' && result.data.data.builderNo !== null) {
|
||||
resultForSession.ROLE = 'Builder'
|
||||
} else {
|
||||
resultForSession.ROLE = 'User'
|
||||
}
|
||||
|
||||
finalResult = {
|
||||
code: 200,
|
||||
message: 'Login is Succecss!!',
|
||||
result: resultForSession,
|
||||
}
|
||||
} else {
|
||||
resultForSession.ROLE = 'User'
|
||||
finalResult = {
|
||||
code: 400,
|
||||
message: 'Login is Failed!!',
|
||||
result: {},
|
||||
}
|
||||
}
|
||||
|
||||
return NextResponse.json({ code: 200, message: 'Login is Succecss!!', result: resultForSession })
|
||||
return NextResponse.json(finalResult)
|
||||
}
|
||||
|
||||
@ -39,6 +39,26 @@ export default function Login() {
|
||||
return emailRegex.test(email)
|
||||
}
|
||||
|
||||
const handleLogin = () => {
|
||||
if (validateLogin()) {
|
||||
setIsLogin(true)
|
||||
}
|
||||
}
|
||||
|
||||
const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
|
||||
if (e.key === 'Enter') {
|
||||
handleLogin()
|
||||
}
|
||||
}
|
||||
|
||||
const validateLogin = () => {
|
||||
if (account.loginId === '' || account.pwd === '') {
|
||||
alert('Please enter your ID and password.')
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
interface LoginData {
|
||||
code: number
|
||||
message: string | null
|
||||
@ -85,6 +105,9 @@ export default function Login() {
|
||||
...loginData?.result,
|
||||
})
|
||||
router.push('/')
|
||||
} else if (loginData?.code === 400) {
|
||||
alert(loginData?.message)
|
||||
setAccount({ loginId: '', pwd: '' })
|
||||
}
|
||||
}, [loginData])
|
||||
|
||||
@ -106,6 +129,7 @@ export default function Login() {
|
||||
className="login-frame"
|
||||
placeholder="Input Frame ID"
|
||||
value={account.loginId}
|
||||
onKeyDown={(e) => handleKeyDown(e)}
|
||||
onChange={(e) => setAccount({ loginId: e.target.value })}
|
||||
/>
|
||||
<button className="login-icon" onClick={() => setAccount({ loginId: '' })}>
|
||||
@ -120,6 +144,7 @@ export default function Login() {
|
||||
className="login-frame"
|
||||
placeholder="Input Frame PW"
|
||||
value={account.pwd}
|
||||
onKeyDown={(e) => handleKeyDown(e)}
|
||||
onChange={(e) => setAccount({ pwd: e.target.value })}
|
||||
/>
|
||||
<button className={`login-icon ${pwShow ? 'act' : ''}`} onClick={() => setPwShow(!pwShow)}>
|
||||
@ -141,7 +166,7 @@ export default function Login() {
|
||||
</div>
|
||||
</div>
|
||||
<div className="login-btn-wrap">
|
||||
<button className="btn-frame icon login" onClick={() => setIsLogin(true)}>
|
||||
<button className="btn-frame icon login" onClick={handleLogin}>
|
||||
お問い合わせ <i className="btn-arr"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user