From e9758f2240ad1f35d15fb974193854a170ea43c6 Mon Sep 17 00:00:00 2001 From: "focp212@naver.com" Date: Mon, 13 Oct 2025 17:46:10 +0900 Subject: [PATCH] login test --- src/entities/user/lib/use-user-info.ts | 82 +++++++++++++-------- src/hooks/useAppBridge.tsx | 10 +-- src/widgets/sub-layout/index.tsx | 99 ++++---------------------- 3 files changed, 67 insertions(+), 124 deletions(-) diff --git a/src/entities/user/lib/use-user-info.ts b/src/entities/user/lib/use-user-info.ts index ec5edc9..c0077a6 100644 --- a/src/entities/user/lib/use-user-info.ts +++ b/src/entities/user/lib/use-user-info.ts @@ -1,49 +1,69 @@ -import { LoginParams } from '@/entities/user/model/types'; +import { LoginParams, LoginResponse } from '@/entities/user/model/types'; import { StorageKeys } from '@/shared/constants/local-storage'; import { setLocalStorage } from '@/shared/lib/web-view-bridge'; import { useLoginMutation } from '@/entities/user/api/use-login-mutation'; import { useStore } from '~/shared/model/store'; +import { useAppBridge } from '@/hooks'; export const useUserInfo = () => { const { mutateAsync: login } = useLoginMutation(); - const callLogin = async (params: LoginParams) => { + const { + isNativeEnvironment, + requestToken, + logout + } = useAppBridge(); + const callLogin = async (params?: LoginParams) => { try{ useStore.getState().UserStore.resetUserInfo(); - const result = await login(params); - if(result.requires2FA){ - // 2차인증 필요 - - } - else{ - const { - tokenType, - accessToken, - refreshToken, - accessTokenExpiresIn, - refreshTokenExpiresIn, - menuGrants, - clientAddressIP, - requires2FA - } = result; - setLocalStorage(StorageKeys.TokenType, tokenType); - setLocalStorage(StorageKeys.AccessToken, accessToken); - setLocalStorage(StorageKeys.RefreshToken, refreshToken); - setLocalStorage(StorageKeys.AccessTokenExpiresIn, accessTokenExpiresIn); - setLocalStorage(StorageKeys.RefreshTokenExpiresIn, refreshTokenExpiresIn); - setLocalStorage(StorageKeys.MenuGrants, menuGrants); - setLocalStorage(StorageKeys.Usrid, params.id); - setLocalStorage(StorageKeys.ClientAddressIP, clientAddressIP); - setLocalStorage(StorageKeys.Requires2FA, requires2FA); + if(isNativeEnvironment){ + const result: LoginResponse = await requestToken(); + if(!result) { + // 토큰이 null인 경우 로그아웃 처리 + console.error('Token is null, performing logout'); + useStore.getState().UserStore.resetUserInfo(); + logout(); + return; + } + setLocalStorage(StorageKeys.TokenType, result.tokenType); + setLocalStorage(StorageKeys.AccessToken, result.accessToken); + setLocalStorage(StorageKeys.RefreshToken, result.refreshToken); + setLocalStorage(StorageKeys.AccessTokenExpiresIn, result.accessTokenExpiresIn); + setLocalStorage(StorageKeys.RefreshTokenExpiresIn, result.refreshTokenExpiresIn); + setLocalStorage(StorageKeys.MenuGrants, result.menuGrants); + setLocalStorage(StorageKeys.ClientAddressIP, result.clientAddressIP); + setLocalStorage(StorageKeys.Requires2FA, result.requires2FA); + setLocalStorage(StorageKeys.Usrid, result.usrid); useStore.getState().UserStore.setUserInfo({ - ...result, - usrid: params.id + ...result }); } + else{ + // 개발용 ... + if(params){ + const result = await login(params); + setLocalStorage(StorageKeys.TokenType, result.tokenType); + setLocalStorage(StorageKeys.AccessToken, result.accessToken); + setLocalStorage(StorageKeys.RefreshToken, result.refreshToken); + setLocalStorage(StorageKeys.AccessTokenExpiresIn, result.accessTokenExpiresIn); + setLocalStorage(StorageKeys.RefreshTokenExpiresIn, result.refreshTokenExpiresIn); + setLocalStorage(StorageKeys.MenuGrants, result.menuGrants); + setLocalStorage(StorageKeys.ClientAddressIP, result.clientAddressIP); + setLocalStorage(StorageKeys.Requires2FA, result.requires2FA); + setLocalStorage(StorageKeys.Usrid, params.id); + + useStore.getState().UserStore.setUserInfo({ + ...result, + usrid: params.id + }); + } + } } - catch(e: any){ - + catch(error: any){ + console.error('Failed to request token:', error); + useStore.getState().UserStore.resetUserInfo(); + logout(); } }; return { diff --git a/src/hooks/useAppBridge.tsx b/src/hooks/useAppBridge.tsx index d2274ca..d796d17 100644 --- a/src/hooks/useAppBridge.tsx +++ b/src/hooks/useAppBridge.tsx @@ -1,6 +1,7 @@ import { useState, useEffect, useCallback } from 'react'; import { appBridge } from '@/utils/appBridge'; import { DeviceInfo, ShareContent } from '@/types'; +import { LoginResponse } from '@/entities/user/model/types'; interface UseAppBridgeReturn { isNativeEnvironment: boolean; @@ -42,7 +43,7 @@ interface UseAppBridgeReturn { logout: () => Promise; // 토큰 요청 - requestToken: () => Promise; + requestToken: () => Promise; requestRefreshToken: () => Promise; // 간편 인증 등록 @@ -241,14 +242,7 @@ export const useAppBridge = (): UseAppBridgeReturn => { showAlert, showConfirm, setStorage, - // getStorage, removeStorage, - /* - openCamera, - openGallery, - getLocation, - getContacts, - */ shareContent, logout, requestToken, diff --git a/src/widgets/sub-layout/index.tsx b/src/widgets/sub-layout/index.tsx index e118083..9924c39 100644 --- a/src/widgets/sub-layout/index.tsx +++ b/src/widgets/sub-layout/index.tsx @@ -31,7 +31,6 @@ export interface ContextType { }; export const SubLayout = () => { - const { reload } = useNavigate(); useScrollToTop(); const [onBack, setOnBack] = useState(undefined); const [headerTitle, setHeaderTitle] = useState(''); @@ -44,61 +43,13 @@ export const SubLayout = () => { const [headerNavigationKey, setHeaderNavigationKey] = useState(1); const { callLogin } = useUserInfo(); - const { - isNativeEnvironment, - openBiometricRegistrationPopup, - requestToken, - logout - } = useAppBridge(); + + const { isNativeEnvironment } = useAppBridge(); const { mutateAsync: homeGroups } = useHomeGroupsMutation(); const [loginSuccess, setLoginSuccess] = useState(false); const wrapperClassName = 'wrapper'; - const handleRequestToken = useCallback(async () =>{ - requestToken().then((token) => { - if(!token) { - // 토큰이 null인 경우 로그아웃 처리 - console.error('Token is null, performing logout'); - useStore.getState().UserStore.resetUserInfo(); - setLoginSuccess(false); - logout(); - return; - } - console.log('token ' + JSON.stringify(token)); - - setLocalStorage(StorageKeys.Usrid, token.usrid); - setLocalStorage(StorageKeys.TokenType, token.tokenType); - setLocalStorage(StorageKeys.AccessToken, token.accessToken); - setLocalStorage(StorageKeys.RefreshToken, token.refreshToken); - setLocalStorage(StorageKeys.AccessTokenExpiresIn, token.accessTokenExpiresIn); - setLocalStorage(StorageKeys.RefreshTokenExpiresIn, token.refreshTokenExpiresIn); - setLocalStorage(StorageKeys.MenuGrants, token.menuGrants); - setLocalStorage(StorageKeys.ClientAddressIP, token.clientAddressIP); - setLocalStorage(StorageKeys.Requires2FA, token.requires2FA); - - useStore.getState().UserStore.setUserInfo({ - usrid: token.usrid, - tokenType: token.tokenType, - accessToken: token.accessToken, - refreshToken: token.refreshToken, - accessTokenExpiresIn: token.accessTokenExpiresIn, - refreshTokenExpiresIn: token.refreshTokenExpiresIn, - menuGrants: token.menuGrants, - clientAddressIP: token.clientAddressIP, - requires2FA: token.requires2FA, - }); - callHomeGroups(); - }).catch((error) => { - // 토큰 요청 실패 시 로그아웃 처리 - console.error('Failed to request token:', error); - useStore.getState().UserStore.resetUserInfo(); - setLoginSuccess(false); - logout(); - }); - - }, []); - const callHomeGroups = () => { let userInfo = useStore.getState().UserStore.userInfo; let params: HomeGroupsParams = { @@ -119,50 +70,28 @@ export const SubLayout = () => { } setLoginSuccess(true); setHeaderNavigationKey(headerNavigationKey + 1); - - reLogin(); + }); }; - - const reLogin = () => { - console.log('reLogin'); - let userInfo = useStore.getState().UserStore.userInfo; - if(userInfo.accessTokenExpiresIn){ - let accessTokenExpiresIn = userInfo.accessTokenExpiresIn; - let timer = setTimeout(() => { - if(isNativeEnvironment){ - handleRequestToken(); - } - else{ - handleLogin(); - } - }, accessTokenExpiresIn * 1000); - } - - }; const handleLogin = useCallback(async () => { - const userParmas = { - id: 'nictest00', - password: 'nictest00' - }; + let userParmas; + if(!isNativeEnvironment){ + userParmas = { + id: 'nictest00', + password: 'nictest00' + }; + } callLogin(userParmas).then(() => { callHomeGroups(); + }).catch((error: any) => { + setLoginSuccess(false); }); }, []); - const tokenTimeCheck = () => { - - } - + useEffect(() => { - console.log('isNativeEnvironment : ['+isNativeEnvironment+']'); - if(isNativeEnvironment){ - handleRequestToken(); - } - else{ - handleLogin(); - } + handleLogin(); }, []); return (