
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 { createWebHistory, createRouter } from "vue-router";
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 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: "/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;