import { createWebHistory, createRouter } from "vue-router"; import Main from "../pages/main/Main.vue"; import FileManagement from "../pages/data/FileManagement.vue"; import HostManagement from "../pages/data/HostManagement.vue"; import DataManagement from "../pages/data/DataPostManagement.vue"; import InsertDataPost from "../pages/data/InsertDataPost.vue"; import DataPostDetail from "../pages/data/DataPostDetail.vue"; import DataEditView from "../pages/data/DataEditView.vue"; import TermManagement from "../pages/meta/TermManagement.vue"; import DataMetaManagement from "../pages/meta/DataMetaManagement.vue"; import ScheduleManagement from "../pages/schedule/ScheduleManagement.vue"; import ScheduleLogManagement from "../pages/schedule/ScheduleLogManagement.vue"; import Push from "../pages/push/Push.vue"; import User from "../pages/integration/UserManagement.vue"; import Department from "../pages/integration/DepartmentManagement.vue"; import DBConnectionList from "../pages/dbConnection/DBConnectionList.vue"; import InsertDBConnection from "../pages/dbConnection/InsertDBConnection.vue"; import DBConnectionDetail from "../pages/dbConnection/DBConnectionDetail.vue"; import CustomSelectList from "../pages/custom/CustomSelectList.vue"; import CustomSelectOne from "../pages/custom/CustomSelectOne.vue"; import CustomInsert from "../pages/custom/CustomInsert.vue"; import CustomInsertDev from "../pages/custom/CustomInsertDev.vue"; import myPage from "../pages/user/myPage.vue"; import myPagePwd from "../pages/user/myPagePwd.vue"; import OpenApiList from "../pages/openapi/OpenApiList.vue"; import OpenApiInsert from "../pages/openapi/OpenApiInsert.vue"; import OpenApiSelectListOne from "../pages/openapi/OpenApiSelectListOne.vue"; import GisInfoList from "../pages/gisinfo/GisInfoList.vue"; import GisInfoInsert from "../pages/gisinfo/GisInfoInsert.vue"; import GisInfoSelectListOne from "../pages/gisinfo/GisInfoSelectListOne.vue"; import OpenApiKeyList from "../pages/openapi/OpenApiKeyList.vue"; // 로그인 화면 import Login from "../pages/login/Login.vue"; import FindId from "../pages/register/FindId.vue"; import FindPwd from "../pages/register/FindPwd.vue"; import Register from "../pages/register/Register.vue"; // 차트 import Chart from "../component/chart/ChartPage.vue"; // 템플릿 import Searchbar from "../template/templateElement/Searchbar.vue"; import Table from "../template/templateElement/Table.vue"; import BtnPosition from "../template/templateElement/BtnPosition.vue"; import Horizontal from "../template/layoutTemplate/Horizontal.vue"; import Vertical from "../template/layoutTemplate/Vertical.vue"; import FormModal from "../template/templateElement/FormModal.vue"; import ListModal from "../template/templateElement/ListModal.vue"; import AlertModal from "../template/templateElement/AlertModal.vue"; import Icon from "../template/templateElement/Icon.vue"; import Guide from "../template/guide/TemplateGuide.vue"; // 테스트용 import JobTest from "../pages/data/JobTest.vue"; import store from "./AppStore"; import axios from "axios"; const routes = [ /* 메인화면 */ // { path: "/", name: "Main", component: Main }, { path: "/fileManagement.page", name: "FileManagement", component: FileManagement, }, { path: "/hostManagement.page", name: "HostManagement", component: HostManagement, }, { path: "/dataManagement.page", name: "DataManagement", component: DataManagement, }, { path: "/insertDataPost.page", name: "InsertDataPost", component: InsertDataPost, }, { path: "/dataPostDetail.page", name: "DataPostDetail", component: DataPostDetail, }, { path: "/DataEditView.page", name: "DataEditView", component: DataEditView }, { path: "/termManagement.page", name: "TermManagement", component: TermManagement, }, { path: "/dataMetaManagement.page", name: "DataMetaManagement", component: DataMetaManagement, }, { path: "/jobTest.page", name: "JobTest", component: JobTest }, { path: "/scheduleManagement.page", name: "ScheduleManagement", component: ScheduleManagement, }, { path: "/scheduleLogManagement.page", name: "ScheduleLogManagement", component: ScheduleLogManagement, }, { path: "/push.page", name: "Push", component: Push }, { path: "/user.page", name: "User", component: User }, { path: "/department.page", name: "Department", component: Department }, { path: "/dbConnectionList.page", name: "DBConnectionList", component: DBConnectionList, }, { path: "/insertDBConnection.page", name: "InsertDBConnection", component: InsertDBConnection, }, { path: "/DBConnectionDetail.page", name: "DBConnectionDetail", component: DBConnectionDetail, }, { path: "/customSelectList.page", name: "CustomSelectList", component: CustomSelectList, }, { path: "/customSelectOne.page", name: "CustomSelectOne", component: CustomSelectOne, }, { path: "/customInsert.page", name: "CustomInsert", component: CustomInsert }, { path: "/customInsertDev.page", name: "CustomInsertDev", component: CustomInsertDev, }, { path: "/openApiList.page", name: "OpenApiList", component: OpenApiList, }, { path: "/openApiInsert.page", name: "OpenApiInsert", component: OpenApiInsert, }, { path: "/openApiListOne.page", name: "OpenApiSelectListOne", component: OpenApiSelectListOne, }, { path: "/openApiKeyList.page", name: "OpenApiKeyList", component: OpenApiKeyList, }, { path: "/gisInfoList.page", name: "GisInfoList", component: GisInfoList, }, { path: "/gisInfoInsert.page", name: "GisInfoInsert", component: GisInfoInsert, }, { path: "/gisInfoListOne.page", name: "GisInfoSelectListOne", component: GisInfoSelectListOne, }, { path: "/myPage.page", name: "myPage", component: myPage }, { path: "/myPagePwd.page", name: "myPagePwd", component: myPagePwd }, { path: "/login.page", name: "Login", component: Login }, { path: "/findId.page", name: "FindId", component: FindId }, { path: "/findPwd.page", name: "FindPwd", component: FindPwd }, { path: "/register.page", name: "Register", component: Register }, // 차트 { path: "/chart.page", name: "Chart", component: Chart }, // 템플릿 화면 { path: "/searchbar.page", name: "Searchbar", component: Searchbar }, { path: "/table.page", name: "Table", component: Table }, { path: "/btnPosition.page", name: "BtnPosition", component: BtnPosition }, { path: "/horizontal.page", name: "Horizontal", component: Horizontal }, { path: "/vertical.page", name: "Vertical", component: Vertical }, { path: "/formModal.page", name: "FormModal", component: FormModal }, { path: "/listModal.page", name: "ListModal", component: ListModal }, { path: "/alertModal.page", name: "AlertModal", component: AlertModal }, { path: "/icon.page", name: "Icon", component: Icon }, { path: "/guide.page", name: "Guide", component: Guide }, ]; const AppRouter = createRouter({ history: createWebHistory(), routes, }); AppRouter.beforeEach(async (to, from, next) => { const userId = store.state.loginUser; // userId 없음 if (userId == null) { if (to.path == "/login.page" || to.path == "/findId.page" || to.path == "/findPwd.page" || to.path == "/register.page") { next(); } else { axios({ url: "/getLoginInfo.json", method: "post", headers: { "Content-Type": "application/json; charset=UTF-8" }, }) .then(function (response) { if (response.data.checkMessage.status > 0) { store.commit("setLoginUser", response.data.resultData.LoginUserInfo); next(); } else { next("/login.page"); } }) .catch(function (error) { this.$showAlert("에러 발생", "에러가 발생했습니다. 관리자에게 문의해 주세요."); }); } } // userId 있음 else { if (to.path == "/login.page") { next("/fileManagement.page"); } else if (to.path == "/department.page" || to.path == "/user.page" || to.path == "/hostManagement.page" || to.path == "/dbConnectionList.page") { let authList = store.state.loginUser.user_auth; let check = false; for (let auth of authList) { if (auth == "ROLE_ADMIN") { check = true; break; } } if (check) { next(); } else { alert('접근 권한이 없습니다.'); next("/fileManagement.page"); } } else { next(); } } }); export default AppRouter;