앱 브릿지 토큰 요청 및 로그아웃 기능 추가
- requestToken 함수 구현 및 토큰 저장 로직 추가 - 토큰 null 체크 및 자동 로그아웃 처리 - 환경 변수 및 빌드 설정 업데이트 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -16,12 +16,11 @@ const initApp = async () => {
|
||||
(async () => {
|
||||
await initApp();
|
||||
const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement);
|
||||
|
||||
root.render(
|
||||
<React.StrictMode>
|
||||
<AppProvider>
|
||||
<App />
|
||||
</AppProvider>
|
||||
</React.StrictMode>,
|
||||
);
|
||||
// If you want to start measuring performance in your app, pass a function
|
||||
// to log results (for example: reportWebVitals(console.log))
|
||||
|
||||
@@ -21,7 +21,7 @@ import {
|
||||
|
||||
export const HomePage = () => {
|
||||
const { callLogin } = useUserInfo();
|
||||
const { openBiometricRegistrationPopup } = useAppBridge();
|
||||
const { isNativeEnvironment, openBiometricRegistrationPopup, requestToken, logout } = useAppBridge();
|
||||
useSetHeaderTitle('');
|
||||
useSetHeaderType(HeaderType.Home);
|
||||
useSetFooterMode(true);
|
||||
@@ -41,6 +41,51 @@ export const HomePage = () => {
|
||||
};
|
||||
*/
|
||||
|
||||
const handleRequestToken = useCallback(async () =>{
|
||||
console.log('handleRequestToken');
|
||||
alert('handleRequestToken');
|
||||
requestToken()
|
||||
.then((token) => {
|
||||
if (!token) {
|
||||
// 토큰이 null인 경우 로그아웃 처리
|
||||
console.error('Token is null, performing logout');
|
||||
useStore.getState().UserStore.resetUserInfo();
|
||||
setLoginSuccess(false);
|
||||
logout();
|
||||
return;
|
||||
}
|
||||
console.log('token', 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);
|
||||
|
||||
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,
|
||||
});
|
||||
|
||||
setLoginSuccess(true);
|
||||
})
|
||||
.catch((error) => {
|
||||
// 토큰 요청 실패 시 로그아웃 처리
|
||||
console.error('Failed to request token:', error);
|
||||
useStore.getState().UserStore.resetUserInfo();
|
||||
setLoginSuccess(false);
|
||||
logout();
|
||||
});
|
||||
|
||||
}, []);
|
||||
|
||||
const userParmas = {
|
||||
id: 'nictest00',
|
||||
password: 'nictest00'
|
||||
@@ -48,7 +93,7 @@ export const HomePage = () => {
|
||||
|
||||
const handleLogin = useCallback(async () =>{
|
||||
//let appStart = getLocalStorage(StorageKeys.AppStart);
|
||||
|
||||
alert('handleLogin');
|
||||
//if(!!appStart){
|
||||
if(false){
|
||||
useStore.getState().UserStore.resetUserInfo();
|
||||
@@ -80,6 +125,7 @@ export const HomePage = () => {
|
||||
}, []);
|
||||
|
||||
const checkBottomBannerOpen = () => {
|
||||
console.log('checkBottomBannerOpen');
|
||||
if(!!bannerToday){
|
||||
bannerToday = bannerToday.toString();
|
||||
}
|
||||
@@ -92,7 +138,7 @@ export const HomePage = () => {
|
||||
setAuthRegisterOn(true);
|
||||
}
|
||||
}).catch((e) => {
|
||||
console.log('catch')
|
||||
console.log('catch', e)
|
||||
|
||||
}).finally(() => {
|
||||
console.log('finally')
|
||||
@@ -102,7 +148,17 @@ export const HomePage = () => {
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
handleLogin();
|
||||
// handleRequestToken();
|
||||
if (isNativeEnvironment) {
|
||||
alert('isNativeEnvironment');
|
||||
console.log('isNativeEnvironment');
|
||||
handleRequestToken();
|
||||
} else {
|
||||
alert('not isNativeEnvironment');
|
||||
console.log('not isNativeEnvironment');
|
||||
handleLogin();
|
||||
}
|
||||
|
||||
checkBottomBannerOpen();
|
||||
checkAuthRegisterOpen();
|
||||
}, []);
|
||||
@@ -133,7 +189,7 @@ export const HomePage = () => {
|
||||
<div className="tab-content blue">
|
||||
<div className="tab-pane dashboard active">
|
||||
<FavoriteWrapper></FavoriteWrapper>
|
||||
{ !!loginSuccess &&
|
||||
{ loginSuccess &&
|
||||
<DayStatusBox></DayStatusBox>
|
||||
}
|
||||
</div>
|
||||
|
||||
@@ -67,7 +67,7 @@ const onResponseRejected = (error: AxiosError) => {
|
||||
};
|
||||
|
||||
export const initAxios = () => {
|
||||
axios.defaults.withCredentials = true;
|
||||
axios.defaults.withCredentials = false;
|
||||
axios.defaults.timeout = 15000;
|
||||
axios.defaults.transitional = {
|
||||
clarifyTimeoutError: true,
|
||||
|
||||
@@ -9,7 +9,7 @@ const getAPIBaseUrl = () => {
|
||||
}
|
||||
return rs;
|
||||
};
|
||||
const getAPIAuthBaseUrl = () => {
|
||||
const getAPIAuthBaseUrl = () => {
|
||||
let rs = CURRENT_URL;
|
||||
console.log('VITE_APP_ENV : ', import.meta.env.VITE_APP_ENV);
|
||||
if(import.meta.env.VITE_APP_ENV === 'production'){
|
||||
|
||||
Reference in New Issue
Block a user