import axios from "axios"; import store from "./AppStore"; import { createWebHistory, createRouter } from "vue-router"; // #페이지 // 통합관리 import UserManagement from "../pages/integrated/UserManagement.vue"; // 사용자관리 import AdminManagement from "../pages/integrated/AdminManagement.vue"; // 관리자관리 import Department from "../pages/integrated/DepartmentManagement.vue"; // 부서관리 import DBConnectionList from "../pages/dbConnection/DBConnectionList.vue"; // 연계정보관리 import DBConnectionDetail from "../pages/dbConnection/DBConnectionDetail.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 InsertDBConnection from "../pages/dbConnection/InsertDBConnection.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 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"; const routes = [ // 통합관리 { path: "/user.page", name: "User", component: UserManagement }, // 사용자관리 { path: "/adminManagement.page", name: "AdminManagement", component: AdminManagement }, // 관리자관리 { path: "/department.page", name: "Department", component: Department }, // 부서관리 { path: "/dbConnectionList.page", name: "DBConnectionList", component: DBConnectionList }, // 연계정보관리 { 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: "/scheduleManagement.page", name: "ScheduleManagement", component: ScheduleManagement }, { path: "/scheduleLogManagement.page", name: "ScheduleLogManagement", component: ScheduleLogManagement }, { path: "/push.page", name: "Push", component: Push }, { 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: "/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 }, ]; function userAuthCheck(to, from, next) { const vm = this; let authList = store.state.loginUser.user_auth; let userAdmAuthCheck = false; for (let auth of authList) { if (auth == "ROLE_ADMIN") { userAdmAuthCheck = true; break; } } if (userAdmAuthCheck) { // ROLE_ADMIN if (to.path == "/login.page") { next("/fileManagement.page"); } else { next(); } } else { // ROLE_ADMIN 외 모든 롤 let userViewerAuthCheck = false; for (let auth of authList) { if (auth == "ROLE_VIEWER") { userViewerAuthCheck = true; break; } } if (userViewerAuthCheck) { if (to.path == "/openApiList.page" || to.path == "/openApiListOne.page" || to.path == "/myPage.page" || to.path == "/myPagePwd.page") { next(); } else { alert("접근 권한이 없습니다."); next("/openApiList.page"); } } else { if (to.path == "/customSelectList.page" || to.path == "/customSelectOne.page" || to.path == "/customInsert.page" || to.path == "/customInsertDev.page" || to.path == "/myPage.page" || to.path == "/myPagePwd.page") { next(); } else { alert("접근 권한이 없습니다."); next("/customSelectList.page"); } } } } const AppRouter = createRouter({ history: createWebHistory(), routes, }); AppRouter.beforeEach(async (to, from, next) => { const userId = store.state.loginUser; if (userId == null) { if (to.path == "/login.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); userAuthCheck(to, from, next); } else { next("/login.page"); } }) .catch(function (error) { alert("에러가 발생했습니다. 관리자에게 문의해 주세요."); }); } } else { userAuthCheck(to, from, next); } }); export default AppRouter;