로그인 위치 변경
This commit is contained in:
@@ -1,14 +1,13 @@
|
|||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import { useCallback, useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { useUserInfo } from '@/entities/user/lib/use-user-info';
|
import { useUserInfo } from '@/entities/user/lib/use-user-info';
|
||||||
import { FavoriteWrapper } from '@/entities/home/ui/favorite-wrapper';
|
import { FavoriteWrapper } from '@/entities/home/ui/favorite-wrapper';
|
||||||
import { DayStatusBox } from '@/entities/home/ui/day-status-box';
|
import { DayStatusBox } from '@/entities/home/ui/day-status-box';
|
||||||
import { HomeBottomBanner } from '@/entities/home/ui/home-bottom-banner';
|
import { HomeBottomBanner } from '@/entities/home/ui/home-bottom-banner';
|
||||||
import { AuthRegister } from '@/entities/home/ui/auth-reguster';
|
import { AuthRegister } from '@/entities/home/ui/auth-reguster';
|
||||||
import { FooterItemActiveKey } from '@/entities/common/model/types';
|
import { FooterItemActiveKey } from '@/entities/common/model/types';
|
||||||
import { useStore } from '@/shared/model/store';
|
|
||||||
import { StorageKeys } from '@/shared/constants/local-storage';
|
import { StorageKeys } from '@/shared/constants/local-storage';
|
||||||
import { setLocalStorage, getLocalStorage } from '@/shared/lib/web-view-bridge';
|
import { getLocalStorage } from '@/shared/lib/web-view-bridge';
|
||||||
import { useAppBridge } from '@/hooks/useAppBridge';
|
import { useAppBridge } from '@/hooks/useAppBridge';
|
||||||
import { HeaderType } from '@/entities/common/model/types';
|
import { HeaderType } from '@/entities/common/model/types';
|
||||||
import {
|
import {
|
||||||
@@ -19,8 +18,6 @@ import {
|
|||||||
useSetFavoriteEdit,
|
useSetFavoriteEdit,
|
||||||
useSetMenuOn
|
useSetMenuOn
|
||||||
} from '@/widgets/sub-layout/use-sub-layout';
|
} from '@/widgets/sub-layout/use-sub-layout';
|
||||||
import { useHomeGroupsMutation } from '@/entities/home/api/use-home-groups-mutation';
|
|
||||||
import { HomeGroupsParams, HomeGroupsResponse } from '@/entities/home/model/types';
|
|
||||||
|
|
||||||
export const HomePage = () => {
|
export const HomePage = () => {
|
||||||
const { callLogin } = useUserInfo();
|
const { callLogin } = useUserInfo();
|
||||||
@@ -42,124 +39,9 @@ export const HomePage = () => {
|
|||||||
|
|
||||||
const [bottomBannerOn, setBottomBannerOn] = useState<boolean>(false);
|
const [bottomBannerOn, setBottomBannerOn] = useState<boolean>(false);
|
||||||
const [authRegisterOn, setAuthRegisterOn] = useState<boolean>(false);
|
const [authRegisterOn, setAuthRegisterOn] = useState<boolean>(false);
|
||||||
const [loginSuccess, setLoginSuccess] = useState<boolean>(false);
|
const [loginSuccess, setLoginSuccess] = useState<boolean>(true);
|
||||||
|
|
||||||
const { mutateAsync: homeGroups } = useHomeGroupsMutation();
|
|
||||||
|
|
||||||
const callHomeGroups = () => {
|
|
||||||
let userInfo = useStore.getState().UserStore.userInfo;
|
|
||||||
let params: HomeGroupsParams = {
|
|
||||||
userid: userInfo.usrid
|
|
||||||
};
|
|
||||||
homeGroups(params).then((rs: HomeGroupsResponse) => {
|
|
||||||
useStore.getState().UserStore.setUserMids(rs.mids);
|
|
||||||
let options: Array<Record<string, string>> = rs.mids.map((value, index) => {
|
|
||||||
return {
|
|
||||||
name: value,
|
|
||||||
value: value
|
|
||||||
};
|
|
||||||
});
|
|
||||||
useStore.getState().UserStore.setSelectOptionsMids(options);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
/*
|
|
||||||
const userParmas = {
|
|
||||||
id: 'thenaun12',
|
|
||||||
password: 'answjddl1!'
|
|
||||||
};
|
|
||||||
*/
|
|
||||||
const userParmas = {
|
|
||||||
id: 'nictest00',
|
|
||||||
password: 'nictest00'
|
|
||||||
};
|
|
||||||
|
|
||||||
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);
|
|
||||||
setLocalStorage(StorageKeys.ClientAddressIP, token.clientAddressIP);
|
|
||||||
setLocalStorage(StorageKeys.Requires2FA, token.requires2FA);
|
|
||||||
|
|
||||||
useStore.getState().UserStore.setUserInfo({
|
|
||||||
usrid: userParmas.id,
|
|
||||||
tokenType: token.tokenType,
|
|
||||||
accessToken: token.accessToken,
|
|
||||||
refreshToken: token.refreshToken,
|
|
||||||
accessTokenExpiresIn: token.accessTokenExpiresIn,
|
|
||||||
refreshTokenExpiresIn: token.refreshTokenExpiresIn,
|
|
||||||
menuGrants: token.menuGrants,
|
|
||||||
clientAddressIP: token.clientAddressIP,
|
|
||||||
requires2FA: token.requires2FA,
|
|
||||||
});
|
|
||||||
|
|
||||||
setLoginSuccess(true);
|
|
||||||
})
|
|
||||||
.catch((error) => {
|
|
||||||
// 토큰 요청 실패 시 로그아웃 처리
|
|
||||||
console.error('Failed to request token:', error);
|
|
||||||
useStore.getState().UserStore.resetUserInfo();
|
|
||||||
setLoginSuccess(false);
|
|
||||||
logout();
|
|
||||||
});
|
|
||||||
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const handleLogin = useCallback(async () =>{
|
|
||||||
//let appStart = getLocalStorage(StorageKeys.AppStart);
|
|
||||||
//if(!!appStart){
|
|
||||||
if(false){
|
|
||||||
useStore.getState().UserStore.resetUserInfo();
|
|
||||||
let tokenType = getLocalStorage(StorageKeys.TokenType);
|
|
||||||
let accessToken = getLocalStorage(StorageKeys.AccessToken);
|
|
||||||
let refreshToken = getLocalStorage(StorageKeys.RefreshToken);
|
|
||||||
let accessTokenExpiresIn = getLocalStorage(StorageKeys.AccessTokenExpiresIn);
|
|
||||||
let refreshTokenExpiresIn = getLocalStorage(StorageKeys.RefreshTokenExpiresIn);
|
|
||||||
let menuGrants = getLocalStorage(StorageKeys.TokenType);
|
|
||||||
// let usrid = getLocalStorage(StorageKeys.Usrid);
|
|
||||||
|
|
||||||
useStore.getState().UserStore.setUserInfo({
|
|
||||||
tokenType: tokenType,
|
|
||||||
accessToken: accessToken,
|
|
||||||
refreshToken: refreshToken,
|
|
||||||
accessTokenExpiresIn: accessTokenExpiresIn,
|
|
||||||
refreshTokenExpiresIn: refreshTokenExpiresIn,
|
|
||||||
menuGrants: menuGrants,
|
|
||||||
// usrid: usrid
|
|
||||||
});
|
|
||||||
setLoginSuccess(true);
|
|
||||||
callHomeGroups();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
callLogin(userParmas).then(() => {
|
|
||||||
setLoginSuccess(true);
|
|
||||||
callHomeGroups();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
const checkBottomBannerOpen = () => {
|
const checkBottomBannerOpen = () => {
|
||||||
console.log('checkBottomBannerOpen');
|
|
||||||
if(!!bannerToday){
|
if(!!bannerToday){
|
||||||
bannerToday = bannerToday.toString();
|
bannerToday = bannerToday.toString();
|
||||||
}
|
}
|
||||||
@@ -176,23 +58,14 @@ export const HomePage = () => {
|
|||||||
|
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
console.log('finally')
|
console.log('finally')
|
||||||
// setAuthRegisterOn(true);
|
setAuthRegisterOn(true);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// handleRequestToken();
|
|
||||||
if (isNativeEnvironment) {
|
|
||||||
handleRequestToken();
|
|
||||||
} else {
|
|
||||||
handleLogin();
|
|
||||||
}
|
|
||||||
|
|
||||||
checkBottomBannerOpen();
|
checkBottomBannerOpen();
|
||||||
checkAuthRegisterOpen();
|
checkAuthRegisterOpen();
|
||||||
|
|
||||||
|
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const setBottomBannerEffect = (mode: boolean) => {
|
const setBottomBannerEffect = (mode: boolean) => {
|
||||||
@@ -207,12 +80,7 @@ export const HomePage = () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*useLoginMutation
|
|
||||||
const [userInfo] = useStore(
|
|
||||||
useShallow((state) => [state.userSlice.userInfo]),
|
|
||||||
);
|
|
||||||
|
|
||||||
*/
|
|
||||||
// useRefreshUserInfo();
|
// useRefreshUserInfo();
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import {
|
|||||||
HeaderType,
|
HeaderType,
|
||||||
HeaderNavigationProps
|
HeaderNavigationProps
|
||||||
} from '@/entities/common/model/types';
|
} from '@/entities/common/model/types';
|
||||||
|
import { useStore } from '@/shared/model/store';
|
||||||
|
import { useEffect, useState } from 'react';
|
||||||
|
|
||||||
export const HeaderNavigation = ({
|
export const HeaderNavigation = ({
|
||||||
onBack,
|
onBack,
|
||||||
@@ -15,6 +17,9 @@ export const HeaderNavigation = ({
|
|||||||
setMenuOn,
|
setMenuOn,
|
||||||
favoriteEdit
|
favoriteEdit
|
||||||
}: HeaderNavigationProps) => {
|
}: HeaderNavigationProps) => {
|
||||||
|
|
||||||
|
let [selectOptions, setSelectOptions] = useState<Array<Record<string, string>>>([]);
|
||||||
|
|
||||||
const {
|
const {
|
||||||
navigate,
|
navigate,
|
||||||
navigateBack
|
navigateBack
|
||||||
@@ -40,6 +45,11 @@ export const HeaderNavigation = ({
|
|||||||
navigate(PATHS.alarm.list);
|
navigate(PATHS.alarm.list);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
let mids = useStore.getState().UserStore.selectOptionsMids;
|
||||||
|
setSelectOptions(mids);
|
||||||
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{
|
{
|
||||||
@@ -64,9 +74,11 @@ export const HeaderNavigation = ({
|
|||||||
<h1 className="app-title blind">나이스가맹점관리자</h1>
|
<h1 className="app-title blind">나이스가맹점관리자</h1>
|
||||||
<div className="input-wrapper">
|
<div className="input-wrapper">
|
||||||
<select className="heading-select">
|
<select className="heading-select">
|
||||||
<option value="1">madzoneviper</option>
|
{ selectOptions && selectOptions.length > 0 &&
|
||||||
<option value="2">stormflarewolf</option>
|
selectOptions.map((value, index) => (
|
||||||
<option value="3">blazefangco</option>
|
<option value={ value.value }>{ value.name }</option>
|
||||||
|
))
|
||||||
|
}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
import {
|
import {
|
||||||
Fragment,
|
Fragment,
|
||||||
|
useCallback,
|
||||||
|
useEffect,
|
||||||
useState
|
useState
|
||||||
} from 'react';
|
} from 'react';
|
||||||
import { Outlet } from 'react-router-dom';
|
import { Outlet } from 'react-router-dom';
|
||||||
@@ -9,6 +11,13 @@ import { PullToRefresh } from '@/widgets/pull-to-refresh/pull-to-refresh';
|
|||||||
import { useNavigate } from '@/shared/lib/hooks';
|
import { useNavigate } from '@/shared/lib/hooks';
|
||||||
import { useScrollToTop } from '@/shared/lib/hooks/use-scroll-to-top';
|
import { useScrollToTop } from '@/shared/lib/hooks/use-scroll-to-top';
|
||||||
import { HeaderType } from '@/entities/common/model/types';
|
import { HeaderType } from '@/entities/common/model/types';
|
||||||
|
import { useHomeGroupsMutation } from '@/entities/home/api/use-home-groups-mutation';
|
||||||
|
import { useUserInfo } from '@/entities/user/lib/use-user-info';
|
||||||
|
import { useAppBridge } from '@/hooks';
|
||||||
|
import { useStore } from '@/shared/model/store';
|
||||||
|
import { getLocalStorage, setLocalStorage } from '@/shared/lib';
|
||||||
|
import { StorageKeys } from '@/shared/constants/local-storage';
|
||||||
|
import { HomeGroupsParams, HomeGroupsResponse } from '@/entities/home/model/types';
|
||||||
|
|
||||||
export interface ContextType {
|
export interface ContextType {
|
||||||
setOnBack: (onBack: () => void) => void;
|
setOnBack: (onBack: () => void) => void;
|
||||||
@@ -33,7 +42,128 @@ export const SubLayout = () => {
|
|||||||
const [footerCurrentPage, setFooterCurrentPage] = useState<undefined | string | null>(undefined);
|
const [footerCurrentPage, setFooterCurrentPage] = useState<undefined | string | null>(undefined);
|
||||||
const [favoriteEdit, setFavoriteEdit] = useState<boolean>(false);
|
const [favoriteEdit, setFavoriteEdit] = useState<boolean>(false);
|
||||||
|
|
||||||
|
const { callLogin } = useUserInfo();
|
||||||
|
const {
|
||||||
|
isNativeEnvironment,
|
||||||
|
openBiometricRegistrationPopup,
|
||||||
|
requestToken,
|
||||||
|
logout
|
||||||
|
} = useAppBridge();
|
||||||
|
const { mutateAsync: homeGroups } = useHomeGroupsMutation();
|
||||||
|
const [loginSuccess, setLoginSuccess] = useState<boolean>(false);
|
||||||
|
|
||||||
const wrapperClassName = 'wrapper';
|
const wrapperClassName = 'wrapper';
|
||||||
|
const userParmas = {
|
||||||
|
id: 'nictest00',
|
||||||
|
password: 'nictest00'
|
||||||
|
};
|
||||||
|
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);
|
||||||
|
setLocalStorage(StorageKeys.ClientAddressIP, token.clientAddressIP);
|
||||||
|
setLocalStorage(StorageKeys.Requires2FA, token.requires2FA);
|
||||||
|
|
||||||
|
useStore.getState().UserStore.setUserInfo({
|
||||||
|
usrid: userParmas.id,
|
||||||
|
tokenType: token.tokenType,
|
||||||
|
accessToken: token.accessToken,
|
||||||
|
refreshToken: token.refreshToken,
|
||||||
|
accessTokenExpiresIn: token.accessTokenExpiresIn,
|
||||||
|
refreshTokenExpiresIn: token.refreshTokenExpiresIn,
|
||||||
|
menuGrants: token.menuGrants,
|
||||||
|
clientAddressIP: token.clientAddressIP,
|
||||||
|
requires2FA: token.requires2FA,
|
||||||
|
});
|
||||||
|
|
||||||
|
setLoginSuccess(true);
|
||||||
|
}).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 = {
|
||||||
|
userid: userInfo.usrid
|
||||||
|
};
|
||||||
|
homeGroups(params).then((rs: HomeGroupsResponse) => {
|
||||||
|
useStore.getState().UserStore.setUserMids(rs.mids);
|
||||||
|
let options: Array<Record<string, string>> = rs.mids.map((value, index) => {
|
||||||
|
return {
|
||||||
|
name: value,
|
||||||
|
value: value
|
||||||
|
};
|
||||||
|
});
|
||||||
|
useStore.getState().UserStore.setSelectOptionsMids(options);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const handleLogin = useCallback(async () =>{
|
||||||
|
//let appStart = getLocalStorage(StorageKeys.AppStart);
|
||||||
|
//if(!!appStart){
|
||||||
|
if(false){
|
||||||
|
useStore.getState().UserStore.resetUserInfo();
|
||||||
|
let tokenType = getLocalStorage(StorageKeys.TokenType);
|
||||||
|
let accessToken = getLocalStorage(StorageKeys.AccessToken);
|
||||||
|
let refreshToken = getLocalStorage(StorageKeys.RefreshToken);
|
||||||
|
let accessTokenExpiresIn = getLocalStorage(StorageKeys.AccessTokenExpiresIn);
|
||||||
|
let refreshTokenExpiresIn = getLocalStorage(StorageKeys.RefreshTokenExpiresIn);
|
||||||
|
let menuGrants = getLocalStorage(StorageKeys.TokenType);
|
||||||
|
// let usrid = getLocalStorage(StorageKeys.Usrid);
|
||||||
|
|
||||||
|
useStore.getState().UserStore.setUserInfo({
|
||||||
|
tokenType: tokenType,
|
||||||
|
accessToken: accessToken,
|
||||||
|
refreshToken: refreshToken,
|
||||||
|
accessTokenExpiresIn: accessTokenExpiresIn,
|
||||||
|
refreshTokenExpiresIn: refreshTokenExpiresIn,
|
||||||
|
menuGrants: menuGrants,
|
||||||
|
// usrid: usrid
|
||||||
|
});
|
||||||
|
setLoginSuccess(true);
|
||||||
|
callHomeGroups();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
callLogin(userParmas).then(() => {
|
||||||
|
setLoginSuccess(true);
|
||||||
|
callHomeGroups();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
// handleRequestToken();
|
||||||
|
if (isNativeEnvironment) {
|
||||||
|
handleRequestToken();
|
||||||
|
} else {
|
||||||
|
handleLogin();
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<PullToRefresh
|
<PullToRefresh
|
||||||
@@ -50,6 +180,7 @@ export const SubLayout = () => {
|
|||||||
headerType={ headerType }
|
headerType={ headerType }
|
||||||
favoriteEdit={ favoriteEdit }
|
favoriteEdit={ favoriteEdit }
|
||||||
/>
|
/>
|
||||||
|
{ loginSuccess &&
|
||||||
<Outlet
|
<Outlet
|
||||||
context={{
|
context={{
|
||||||
setOnBack,
|
setOnBack,
|
||||||
@@ -62,6 +193,7 @@ export const SubLayout = () => {
|
|||||||
setFavoriteEdit
|
setFavoriteEdit
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
}
|
||||||
{
|
{
|
||||||
footerMode &&
|
footerMode &&
|
||||||
<FooterNavigation
|
<FooterNavigation
|
||||||
|
|||||||
Reference in New Issue
Block a user