
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
import axios from '../common/defaultAxios.js';
import store from "./AppStore";
import { createWebHistory, createRouter } from "vue-router";
// #페이지
// 데이터관리
import FileManagement from "../pages/data/FileManagement.vue"; // 파일 관리
import DataManagement from "../pages/data/DataPostManagement.vue"; // 데이터 관리
// 작업관리
import ScheduleManagement from "../pages/schedule/ScheduleManagement.vue"; // 작업 스케줄 관리
// 회원관리
import UserManagement from "../pages/integrated/UserManagement.vue"; // 사용자 관리
import AdminManagement from "../pages/integrated/AdminManagement.vue"; // 관리자 관리
import DepartmentManagement from "../pages/integrated/DepartmentManagement.vue"; // 부서 관리
import DBConnectionList from "../pages/dbConnection/DBConnectionList.vue"; // 연계정보 관리
// 정보관리
import myPage from "../pages/user/myPage.vue"; // 내 정보 관리
import myPagePwd from "../pages/user/myPagePwd.vue"; // 비밀번호 변경
// 미분류
import DBConnectionDetail from "../pages/dbConnection/DBConnectionDetail.vue";
import HostManagement from "../pages/data/HostManagement.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 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 InsertDataAnalytics from "./custom/InsertDataAnalytics.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 NoticeList from "../pages/community/NoticeList.vue";
import NoticeView from "../pages/community/NoticeView.vue";
import NoticeInsert from "../pages/community/NoticeInsert.vue";
import FaqList from "../pages/community/FaqList.vue";
import FaqView from "../pages/community/FaqView.vue";
import FaqInsert from "../pages/community/FaqInsert.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: "/scheduleManagement.page", name: "ScheduleManagement", component: ScheduleManagement }, // 작업 스케줄 관리
// 회원관리
{ path: "/user.page", name: "User", component: UserManagement }, // 사용자 관리
{ path: "/adminManagement.page", name: "AdminManagement", component: AdminManagement }, // 관리자 관리
{ path: "/departmentManagement.page", name: "Department", component: DepartmentManagement }, // 부서 관리
{ 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: "/push.page", name: "Push", component: Push },
{ path: "/insertDBConnection.page", name: "InsertDBConnection", component: InsertDBConnection },
{ path: "/DBConnectionDetail.page", name: "DBConnectionDetail", component: DBConnectionDetail },
{ 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 },
// OPEN API
{ 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: "/customSelectList.page", name: "CustomSelectList", component: CustomSelectList },
{ path: "/customSelectOne.page", name: "CustomSelectOne", component: CustomSelectOne },
{ path: "/insertDataAnalytics.page", name: "InsertDataAnalytics", component: InsertDataAnalytics },
// 커뮤니티 관리
{ path: "/noticeList.page", name: "NoticeList", component: NoticeList },
{ path: "/noticeView.page", name: "NoticeView", component: NoticeView },
{ path: "/noticeInsert.page", name: "NoticeInsert", component: NoticeInsert },
{ path: "/faqList.page", name: "FaqList", component: FaqList },
{ path: "/faqView.page", name: "FaqView", component: FaqView },
{ path: "/faqInsert.page", name: "FaqInsert", component: FaqInsert },
// 차트
{ 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 authList = store.state.loginUser.user_auth;
let userAdmAuthCheck = "ROLE_USER";
for (let auth of authList) {
if (auth == "ROLE_VIEWER") {
userAdmAuthCheck = "ROLE_VIEWER";
break;
}
}
for (let auth of authList) {
if (auth == "ROLE_ADMIN") {
userAdmAuthCheck = "ROLE_ADMIN";
break;
}
}
if (userAdmAuthCheck == "ROLE_ADMIN") {
if (to.path == "/" || to.path == "/login.page") {
next("/fileManagement.page");
} else {
next();
}
} else if (userAdmAuthCheck == "ROLE_VIEWER") {
if (to.path == "/openApiList.page" || to.path == "/openApiListOne.page" || to.path == "/myPage.page" || to.path == "/myPagePwd.page") {
next();
} else {
if (to.path != "/") {
alert("접근 권한이 없습니다.");
}
next("/openApiList.page");
}
} else {
if (to.path == "/") {
next("/fileManagement.page");
} else if (to.path != "/user.page" && to.path != "/adminManagement.page" && to.path != "/departmentManagement.page" && to.path != "/hostManagement.page" && to.path != "/openApiKeyList.page" || to.path != "/dbConnectionList.page") {
next();
} else {
alert("접근 권한이 없습니다.");
next("/fileManagement.page");
}
}
}
const AppRouter = createRouter({ history: createWebHistory(), routes, });
AppRouter.beforeEach(async (to, from, next) => {
// 로그인 페이지는 항상 접근 가능
if (to.path == "/login.page") {
return next();
}
// 모든 페이지 이동 시 로그인 상태 체크 (세션 만료 체크 포함)
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 {
// 로그인 상태가 아니거나 세션이 만료된 경우
store.commit("setLoginUser", null); // 로그인 정보 초기화
next("/login.page");
}
})
.catch(function (error) {
alert("에러가 발생했습니다. 관리자에게 문의해 주세요.");
store.commit("setLoginUser", null); // 로그인 정보 초기화
next("/login.page");
});
});
export default AppRouter;