sanguu516 3 months ago
parent
commit
b7a151e4be
  1. 2
      src/components/account/login/AccountLogin.js
  2. 26
      src/containers/rightMenuContainer.js
  3. 7
      src/redux/features/account/auth/authSlice.ts
  4. 6
      src/redux/features/account/auth/authThunk.ts
  5. 28
      src/router/hoc/ResolveRoutes.tsx
  6. 13
      src/router/hoc/authenticationCheck.tsx
  7. 11
      src/router/index.tsx
  8. 31
      src/router/routes/index.js

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

@ -68,7 +68,7 @@ export const AccountLogin = ({ history }) => {
const { meta } = await dispatch(setLogin(loginForm)); const { meta } = await dispatch(setLogin(loginForm));
if (meta.requestStatus === 'fulfilled') { if (meta.requestStatus === 'fulfilled') {
if (loginForm?.userId === 'dos-gmp') { if (loginForm?.userId === 'GMPATC') {
history.push('/flight/Approvals/new'); history.push('/flight/Approvals/new');
} else { } else {
history.push('/control'); history.push('/control');

26
src/containers/rightMenuContainer.js

@ -10,6 +10,11 @@ function RightMenuContainer() {
const [startDate, setStartDate] = useState(dayjs().format('YYYY-MM-DD')); const [startDate, setStartDate] = useState(dayjs().format('YYYY-MM-DD'));
const [endDate, setEndDate] = useState(); const [endDate, setEndDate] = useState();
const [selected, setSelected] = useState(null); const [selected, setSelected] = useState(null);
// 식별번호
const [filterId, setFilterId] = useState('');
// 지역
const [filterArea, setFilterArea] = useState('');
const dispatch = useDispatch(); const dispatch = useDispatch();
@ -34,11 +39,11 @@ function RightMenuContainer() {
setEndDate(payload.endDate); setEndDate(payload.endDate);
return; return;
case 'handlerSearchRs': // case 'handlerSearchRs':
console.log(payload.filter); // console.log(payload.filter);
setFilter(payload.filter); // setFilter(payload.filter);
return; // return;
default: default:
break; break;
} }
@ -63,6 +68,9 @@ function RightMenuContainer() {
}; };
const handlerSearch = (search, searchDate, filterArea) => { const handlerSearch = (search, searchDate, filterArea) => {
setStartDate(searchDate.startDate);
setEndDate(searchDate.endDate);
setFilter(search);
if ( if (
search != '' && search != '' &&
(search === '승인' || search === '미승인' || search === '비대상') (search === '승인' || search === '미승인' || search === '비대상')
@ -121,9 +129,17 @@ function RightMenuContainer() {
style={{ width: '100vw' }} style={{ width: '100vw' }}
> >
<div className='layer-content'> <div className='layer-content'>
<NewFlightApprovalsReport handlerSearch={handlerSearch} /> <NewFlightApprovalsReport
handlerSearch={handlerSearch}
filterId={filterId}
setFilterId={setFilterId}
filterArea={filterArea}
setFilterArea={setFilterArea}
/>
<NewFlightApprovalsTable <NewFlightApprovalsTable
filter={filter} filter={filter}
filterArea={filterArea}
filterId={filterId}
startDate={startDate} startDate={startDate}
endDate={endDate} endDate={endDate}
selected={selected} selected={selected}

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

@ -53,7 +53,13 @@ const authSlice = createSlice({
extraReducers: builder => { extraReducers: builder => {
builder builder
.addCase(setLogin.fulfilled, (state, action) => { .addCase(setLogin.fulfilled, (state, action) => {
const { user } = action.payload as {
isLogin: boolean;
user?: ICheckAuthencationRs;
};
state.isLogin = true; state.isLogin = true;
if (user) localStorage.setItem('cptAuthCode', user.cptAuthCode);
}) })
.addCase(setLogin.pending, (state, action) => { .addCase(setLogin.pending, (state, action) => {
state.isLogin = false; state.isLogin = false;
@ -77,6 +83,7 @@ const authSlice = createSlice({
cookieStorage.removeCookie(COOKIE_REFRESH_TOKEN); cookieStorage.removeCookie(COOKIE_REFRESH_TOKEN);
localStorage.removeItem('dronGroupId'); localStorage.removeItem('dronGroupId');
localStorage.removeItem('dronGroupNm'); localStorage.removeItem('dronGroupNm');
localStorage.removeItem('cptAuthCode');
state.isLogin = false; state.isLogin = false;
state.user = initAuth.user; state.user = initAuth.user;
}) })

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

@ -53,6 +53,12 @@ export const setLogin = createAsyncThunk(
cookieStorage.setCookie(COOKIE_REFRESH_TOKEN, data.refreshToken); cookieStorage.setCookie(COOKIE_REFRESH_TOKEN, data.refreshToken);
thunkAPI.dispatch(checkCookie()); thunkAPI.dispatch(checkCookie());
const decodedToken = decode<IDecodeToken>(data.accessToken);
const { data: user }: { data: ICheckAuthencationRs } = await axios.get(
`api/acnt/jwt/profile/${decodedToken.cstmrSno}`
);
return { isLogin: true, user };
} catch (error: any) { } catch (error: any) {
thunkAPI.dispatch( thunkAPI.dispatch(
openModal({ openModal({

28
src/router/hoc/ResolveRoutes.tsx

@ -8,12 +8,15 @@ import { useLayout } from '@hooks/useLayout';
import { useRouterTransition } from '@hooks/useRouterTransition'; import { useRouterTransition } from '@hooks/useRouterTransition';
import LayoutWrapper from '@layouts/components/layout-wrapper'; import LayoutWrapper from '@layouts/components/layout-wrapper';
import { IRoute } from '../routes/type'; import { IRoute } from '../routes/type';
import { Routes } from '../routes'; import { Routes, GimpoControlRoutes } from '../routes';
import authenticationCheck from './authenticationCheck'; import authenticationCheck from './authenticationCheck';
import { useSelector } from '@src/redux/store';
import { shallowEqual } from 'react-redux';
export default function ResolveRoutes() { export default function ResolveRoutes() {
const [layout, setLayout] = useLayout(); const [layout, setLayout] = useLayout();
const [transition, setTransition] = useRouterTransition(); const [transition, setTransition] = useRouterTransition();
const user = useSelector(state => state.authState.user, shallowEqual);
const DefaultLayout = const DefaultLayout =
layout === 'horizontal' ? 'HorizontalLayout' : 'VerticalLayout'; layout === 'horizontal' ? 'HorizontalLayout' : 'VerticalLayout';
@ -29,8 +32,14 @@ export default function ResolveRoutes() {
const LayoutRoutes: IRoute[] = []; const LayoutRoutes: IRoute[] = [];
const LayoutPaths: string[] = []; const LayoutPaths: string[] = [];
if (Routes) { const cptAuthCode = localStorage.getItem('cptAuthCode');
Routes.filter(route => {
let Router = Routes;
if (cptAuthCode === 'DF0002' || user?.cptAuthCode === 'DF0002')
Router = GimpoControlRoutes;
if (Router) {
Router.filter(route => {
if ( if (
route.layout === layout || route.layout === layout ||
(route.layout === undefined && DefaultLayout === layout) (route.layout === undefined && DefaultLayout === layout)
@ -41,6 +50,19 @@ export default function ResolveRoutes() {
}); });
} }
// console.log(router, ' ====router');
// if (router) {
// router?.filter(route => {
// if (
// route.layout === layout ||
// (route.layout === undefined && DefaultLayout === layout)
// ) {
// LayoutRoutes.push(route);
// LayoutPaths.push(route.path);
// }
// });
// }
return { LayoutRoutes, LayoutPaths }; return { LayoutRoutes, LayoutPaths };
}; };

13
src/router/hoc/authenticationCheck.tsx

@ -31,7 +31,7 @@ export default function (SpecificComponent: ReactNode, option: IOption) {
props: IProps props: IProps
) => JSX.Element; ) => JSX.Element;
useLayoutEffect(() => { useEffect(() => {
if (user?.cptAuthCode === 'DF0002') { if (user?.cptAuthCode === 'DF0002') {
const pathname = history.location.pathname; const pathname = history.location.pathname;
@ -61,9 +61,14 @@ export default function (SpecificComponent: ReactNode, option: IOption) {
} }
} else { } else {
if (!authRoute) { if (!authRoute) {
localStorage.setItem('topMenuCd', '/'); const cptAuthCode = localStorage.getItem('cptAuthCode');
dispatch(clientDispatchTopMenu('/')); if (cptAuthCode === 'DF0002') {
props.history.replace('/main/dashboard'); props.history.replace('/flight/Approvals/new');
} else {
localStorage.setItem('topMenuCd', '/');
dispatch(clientDispatchTopMenu('/'));
props.history.replace('/main/dashboard');
}
} }
} }
setIsRender(true); setIsRender(true);

11
src/router/index.tsx

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

31
src/router/routes/index.js

@ -25,7 +25,7 @@ const Routes = [
...RouteLaance, ...RouteLaance,
...RouterCstmrService, ...RouterCstmrService,
...RouteStatistics, ...RouteStatistics,
...RouteFlight, // ...RouteFlight,
{ {
path: '/home', path: '/home',
component: lazy(() => import('../../views/Home')) component: lazy(() => import('../../views/Home'))
@ -229,4 +229,31 @@ const Routes = [
} }
]; ];
export { DefaultRoute, TemplateTitle, Routes }; const GimpoControlRoutes = [
{
path: '/flight/approvals/new',
component: lazy(() => import('../../views/flight/NewFlightView')),
layout: 'BlankLayout',
meta: {
authRoute: true
}
},
{
path: '/rightMenu',
component: lazy(() => import('../../views/rightMenuView')),
layout: 'BlankLayout',
meta: {
authRoute: true
}
},
{
path: '/account/login',
component: lazy(() => import('../../views/account/AccountLoginView')),
layout: 'BlankLayout',
meta: {
authRoute: false
}
}
];
export { DefaultRoute, TemplateTitle, Routes, GimpoControlRoutes };

Loading…
Cancel
Save