Browse Source

운항과, 관제과 라우트 분리 작업

master
김장현 2 months ago
parent
commit
86ba20d694
  1. 17
      src/components/account/login/AccountLogin.js
  2. 3
      src/redux/features/account/auth/authSlice.ts
  3. 2
      src/redux/features/account/auth/authThunk.ts
  4. 25
      src/router/hoc/ResolveRoutes.tsx
  5. 52
      src/router/hoc/authenticationCheck.tsx
  6. 11
      src/router/index.tsx
  7. 15
      src/router/routes/index.js
  8. 10
      src/utility/authService/jwtTokenUtil.ts

17
src/components/account/login/AccountLogin.js

@ -65,11 +65,22 @@ export const AccountLogin = ({ history }) => {
return;
}
const { meta } = await dispatch(setLogin(loginForm));
const res = await dispatch(setLogin(loginForm));
console.log(res);
const {
meta: { requestStatus }
} = res;
if (meta.requestStatus === 'fulfilled') {
if (loginForm?.userId === 'GMPATC') {
if (requestStatus === 'fulfilled') {
const {
payload: {
user: { cptAuthCode }
}
} = res;
if (cptAuthCode === 'DF0002') {
history.push('/operation/approvals');
} else if (cptAuthCode === 'DF0002-1') {
history.push('/control/approvals');
} else {
history.push('/control');
}

3
src/redux/features/account/auth/authSlice.ts

@ -59,7 +59,6 @@ const authSlice = createSlice({
};
state.isLogin = true;
if (user) localStorage.setItem('cptAuthCode', user.cptAuthCode);
})
.addCase(setLogin.pending, (state, action) => {
state.isLogin = false;
@ -83,7 +82,7 @@ const authSlice = createSlice({
cookieStorage.removeCookie(COOKIE_REFRESH_TOKEN);
localStorage.removeItem('dronGroupId');
localStorage.removeItem('dronGroupNm');
localStorage.removeItem('cptAuthCode');
state.isLogin = false;
state.user = initAuth.user;
})

2
src/redux/features/account/auth/authThunk.ts

@ -297,7 +297,7 @@ export const checkToken = createAsyncThunk(
const { data }: { data: boolean } = await axios.get(
'/api/acnt/jwt/valid/token'
);
thunkAPI.dispatch(checkCookie());
// thunkAPI.dispatch(checkCookie());
return data;
} catch (error) {
thunkAPI.dispatch(

25
src/router/hoc/ResolveRoutes.tsx

@ -10,19 +10,11 @@ import LayoutWrapper from '@layouts/components/layout-wrapper';
import { IRoute } from '../routes/type';
import { Routes, GimpoControlRoutes } from '../routes';
import authenticationCheck from './authenticationCheck';
import { useSelector } from '@src/redux/store';
import { shallowEqual } from 'react-redux';
import decode from 'jwt-decode';
import {
COOKIE_ACCESS_TOKEN,
cookieStorage
} from '@src/utility/authService/cookie';
import { IDecodeToken } from '@src/redux/features/account/auth/authState';
import { getDecodeToken } from '@src/utility/authService/jwtTokenUtil';
export default function ResolveRoutes() {
const [layout, setLayout] = useLayout();
const [transition, setTransition] = useRouterTransition();
const user = useSelector(state => state.authState.user, shallowEqual);
const DefaultLayout =
layout === 'horizontal' ? 'HorizontalLayout' : 'VerticalLayout';
@ -41,15 +33,18 @@ export default function ResolveRoutes() {
const cptAuthCode = localStorage.getItem('cptAuthCode');
let Router = Routes;
if (cptAuthCode === 'DF0002' || user?.cptAuthCode === 'DF0002')
Router = GimpoControlRoutes;
let token = cookieStorage.getCookie(COOKIE_ACCESS_TOKEN);
if (token) {
const decodeToken = decode<IDecodeToken>(token as string);
let decodeToken = getDecodeToken();
console.log(decodeToken);
if (decodeToken) {
if (decodeToken.userId === 'palnet') {
Router = [...Routes, ...GimpoControlRoutes];
} else if (decodeToken.cptAuthCode.includes('DF0002')) {
Router = GimpoControlRoutes.filter(
i =>
i.meta.cptAuthCode === 'All' ||
i.meta.cptAuthCode === decodeToken.cptAuthCode
);
}
}

52
src/router/hoc/authenticationCheck.tsx

@ -4,13 +4,7 @@ import { useSelector, useDispatch } from '@src/redux/store';
import { checkToken } from '@src/redux/features/account/auth/authThunk';
import { ICheckAuthencationRs } from '@src/redux/features/account/auth/authState';
import { clientDispatchTopMenu } from '@src/redux/features/layout/layoutSlice';
import { openModal } from '@src/redux/features/comn/message/messageSlice';
import {
COOKIE_ACCESS_TOKEN,
COOKIE_REFRESH_TOKEN,
cookieStorage
} from '@src/utility/authService/cookie';
import { ERROR_TITLE, ERROR_MESSAGE } from '@src/configs/msgConst';
import { getDecodeToken } from '@src/utility/authService/jwtTokenUtil';
interface IOption {
authRoute?: boolean;
@ -31,24 +25,24 @@ export default function (SpecificComponent: ReactNode, option: IOption) {
props: IProps
) => JSX.Element;
useEffect(() => {
if (user?.cptAuthCode === 'DF0002') {
const pathname = history.location.pathname;
// useEffect(() => {
// if (user?.cptAuthCode === 'DF0002') {
// const pathname = history.location.pathname;
if (
!(
pathname == '/operation/approvals' ||
pathname == '/rightMenu' ||
pathname == 'control/approvals' ||
pathname == 'control/rightMenu'
)
) {
// id 나누면 주석 풀 것!!!
// props.history.replace('/operation/approvals');
return;
}
}
}, [user]);
// if (
// !(
// pathname == '/operation/approvals' ||
// pathname == '/rightMenu' ||
// pathname == 'control/approvals' ||
// pathname == 'control/rightMenu'
// )
// ) {
// // id 나누면 주석 풀 것!!!
// // props.history.replace('/operation/approvals');
// return;
// }
// }
// }, [user]);
useEffect(() => {
// if (props.match.path === '/account/login') {
@ -67,13 +61,17 @@ export default function (SpecificComponent: ReactNode, option: IOption) {
}
} else {
if (!authRoute) {
const cptAuthCode = localStorage.getItem('cptAuthCode');
if (cptAuthCode === 'DF0002') {
const decodeToken = getDecodeToken();
if (decodeToken) {
if (decodeToken.cptAuthCode === 'DF0002') {
props.history.replace('/control/approvals');
} else if (decodeToken.cptAuthCode === 'DF0002-1') {
props.history.replace('/operation/approvals');
} else {
localStorage.setItem('topMenuCd', '/');
dispatch(clientDispatchTopMenu('/'));
props.history.replace('/main/dashboard');
props.history.replace('/control');
}
}
}
}

11
src/router/index.tsx

@ -25,16 +25,7 @@ export default function Router() {
exact
path='/'
render={() => {
const cptAuthCode = localStorage.getItem('cptAuthCode');
return (
<Redirect
to={
cptAuthCode === 'DF0002'
? '/operation/approvals'
: '/main/dashboard'
}
/>
);
return <Redirect to='/account/login' />;
}}
/>

15
src/router/routes/index.js

@ -243,7 +243,8 @@ const GimpoControlRoutes = [
component: lazy(() => import('../../views/flight/operationApprovalsView')),
layout: 'BlankLayout',
meta: {
authRoute: true
authRoute: true,
cptAuthCode: 'DF0002-1'
}
},
{
@ -251,7 +252,8 @@ const GimpoControlRoutes = [
component: lazy(() => import('../../views/flight/controlApprovalsView')),
layout: 'BlankLayout',
meta: {
authRoute: true
authRoute: true,
cptAuthCode: 'DF0002'
}
},
{
@ -259,7 +261,8 @@ const GimpoControlRoutes = [
component: lazy(() => import('../../views/controlMenuView')),
layout: 'BlankLayout',
meta: {
authRoute: true
authRoute: true,
cptAuthCode: 'DF0002'
}
},
{
@ -267,7 +270,8 @@ const GimpoControlRoutes = [
component: lazy(() => import('../../views/rightMenuView')),
layout: 'BlankLayout',
meta: {
authRoute: true
authRoute: true,
cptAuthCode: 'DF0002-1'
}
},
{
@ -275,7 +279,8 @@ const GimpoControlRoutes = [
component: lazy(() => import('../../views/account/AccountLoginView')),
layout: 'BlankLayout',
meta: {
authRoute: false
authRoute: false,
cptAuthCode: 'All'
}
}
];

10
src/utility/authService/jwtTokenUtil.ts

@ -84,3 +84,13 @@ export const getRefreshToken = () => {
return token;
};
export const getDecodeToken = () => {
const token = cookieStorage.getCookie(COOKIE_ACCESS_TOKEN);
if (token) {
const decodeToken = decode<IDecodeToken>(token);
return decodeToken;
} else {
return null;
}
};

Loading…
Cancel
Save