import {
createRouter,
createWebHistory,
RouteRecordRaw,
} from 'vue-router';
import {
routeHelper,
authentication,
} from '@utils';
import {
LoginLayout,
DefaultLayout,
} from '@layouts';
import {
Example,
Example2,
TodoList,
Counter,
} from '@views';
import {
login,
home,
example,
example2,
todoList,
counter,
} from './routePaths';
const routes: Array<RouteRecordRaw> = [
{
path: login,
name: routeHelper.getRouteName(login),
component: LoginLayout,
},
{
path: home,
name: routeHelper.getRouteName(home),
component: DefaultLayout,
children: [
{
path: example,
name: routeHelper.getRouteName(example),
component: Example,
},
{
path: example2,
name: routeHelper.getRouteName(example2),
component: Example2,
},
{
path: todoList,
name: routeHelper.getRouteName(todoList),
component: TodoList,
},
{
path: counter,
name: routeHelper.getRouteName(counter),
component: Counter,
},
]
},
];
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes,
});
// 라우터 정보가 변경 될때마다 호출
// 매 페이지 인증검사 실시
// 참고페이지
// https://router.vuejs.org/kr/api/#router-beforeeach
router.beforeEach(async (to, from, next) => {
if (to.name === 'login' || from.name === 'login') {
next();
} else {
// 쿠키를 체크 합니다.
const errorType = await authentication.cookieCheck();
console.log('errorType', errorType);
if (errorType === 'success') {
next();
} else if (errorType === 'refreshTokenRefresh') {
// 쿠키가 만료되어서 로그인 페이지로 이동 합니다.
next({
name: routeHelper.getRouteName(login),
params: {
refreshTokenEnd: 'refreshTokenEnd',
},
});
} else if (errorType === 'accessTokenRefresh') {
// cookieCheck에 의해 accessToken이 재발급 되었으므로, 이동합니다.
next();
}
}
});
export default router;
북마크/메모장