From 7f61b6e30c3cad5fe32a41a59450ca95ea590949 Mon Sep 17 00:00:00 2001 From: seorang42 Date: Tue, 4 Feb 2025 18:33:51 +0900 Subject: [PATCH 1/2] =?UTF-8?q?:sparkles:=20[feat]=20:=20404=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EA=B5=AC=ED=98=84=20=EB=B0=8F=20TitleCont?= =?UTF-8?q?ainer=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/common/TitleContainer.vue | 12 ++++++++++++ src/router/index.ts | 6 +++++- src/views/LoginView.vue | 9 ++++----- src/views/NotFoundView.vue | 19 +++++++++++++++++++ src/views/PwChange.vue | 9 ++++----- src/views/PwChangeEmail.vue | 9 ++++----- src/views/PwCheck.vue | 11 ++++------- 7 files changed, 52 insertions(+), 23 deletions(-) create mode 100644 src/components/common/TitleContainer.vue create mode 100644 src/views/NotFoundView.vue diff --git a/src/components/common/TitleContainer.vue b/src/components/common/TitleContainer.vue new file mode 100644 index 00000000..e23df834 --- /dev/null +++ b/src/components/common/TitleContainer.vue @@ -0,0 +1,12 @@ + + + diff --git a/src/router/index.ts b/src/router/index.ts index a98db654..6e9cdeeb 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -8,7 +8,6 @@ const router = createRouter({ name: 'Login', component: () => import('../views/LoginView.vue') }, - { path: '/pw-change', name: 'PwChange', @@ -111,6 +110,11 @@ const router = createRouter({ path: '/statistics', name: 'Statistics', component: () => import('../views/StatisticsView.vue') + }, + { + path: '/:pathMatch(.*)*', + name: 'NotFound', + component: () => import('../views/NotFoundView.vue') } ] }) diff --git a/src/views/LoginView.vue b/src/views/LoginView.vue index 1dd39baf..808044c8 100644 --- a/src/views/LoginView.vue +++ b/src/views/LoginView.vue @@ -1,11 +1,9 @@ + + diff --git a/src/views/PwChange.vue b/src/views/PwChange.vue index 889f5454..3d726446 100644 --- a/src/views/PwChange.vue +++ b/src/views/PwChange.vue @@ -8,11 +8,9 @@
-
-

비밀번호

-

재설정

-
-

초기 비밀번호를 변경해주세요

+
이메일을 확인해주세요
-
-

비밀번호

-

재설정

-
-

가입된 아이디와 이메일을 입력해주세요

+
-
-

비밀번호

-

재설정

-
-

- 비밀번호 재설정을 위해
현재 비밀번호를 입력해주세요 -

+
import { ref } from 'vue' import router from '../router/index' +import TitleContainer from '@/components/common/TitleContainer.vue' const pw = ref('') From dfb2a4ec73994227ff041d4c31c0250f2ef022f6 Mon Sep 17 00:00:00 2001 From: seorang42 Date: Tue, 4 Feb 2025 20:34:43 +0900 Subject: [PATCH 2/2] =?UTF-8?q?:sparkles:=20[feat]=20:=20=EA=B6=8C?= =?UTF-8?q?=ED=95=9C=EB=B3=84=20=EC=A0=91=EA=B7=BC=20=EA=B0=80=EB=8A=A5=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/top-bar/TopBar.vue | 17 +++++++++++++++++ src/constants/common.ts | 31 +++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/src/components/top-bar/TopBar.vue b/src/components/top-bar/TopBar.vue index 11db57a2..e3b12a3e 100644 --- a/src/components/top-bar/TopBar.vue +++ b/src/components/top-bar/TopBar.vue @@ -55,12 +55,29 @@ import { storeToRefs } from 'pinia' import { useMemberStore } from '@/stores/member' import NotificationModal from './NotificationModal.vue' import ProfileModal from './ProfileModal.vue' +import { useRoute, useRouter } from 'vue-router' +import { PERMITTED_URL } from '@/constants/common' const memberStore = useMemberStore() const { info } = storeToRefs(memberStore) +const route = useRoute() +const router = useRouter() onMounted(async () => { await memberStore.updateMemberInfoWithToken() + + const originUrl = route.path.split('/')[1] + if (info.value.memberRole === 'ROLE_USER') { + if (!PERMITTED_URL.ROLE_USER.includes(originUrl)) router.push('/my-request') + } else if (info.value.memberRole === 'ROLE_MANAGER') { + if (!PERMITTED_URL.ROLE_MANAGER.includes(originUrl)) router.push('/my-task') + } else if (info.value.memberRole === 'ROLE_ADMIN') { + if (!PERMITTED_URL.ROLE_ADMIN.includes(originUrl)) router.push('/member-management') + } else { + if (!PERMITTED_URL.UNKNOWN.includes(originUrl)) { + router.push('/login') + } + } }) const isSideOpen = ref(false) diff --git a/src/constants/common.ts b/src/constants/common.ts index 5b8f0806..e8361b2c 100644 --- a/src/constants/common.ts +++ b/src/constants/common.ts @@ -37,3 +37,34 @@ export const COLOR_LIST = [ { borderColor: '#8B5CF6', fillColor: '#F5F3FF', colorEnum: 'PURPLE' }, { borderColor: '#A1A1AA', fillColor: '#F4F4F5', colorEnum: 'GREY' } ] + +export const PERMITTED_URL = { + UNKNOWN: ['login', 'pw-change-email', 'pw-change'], + ROLE_USER: ['my-request', 'task-request', 'edit-information', 'pw-check', 'pw-change'], + ROLE_MANAGER: [ + 'my-request', + 'task-request', + 'requested', + 'request-history', + 'my-task', + 'task-board', + 'team-board', + 'statistics', + 'task-detail', + 'edit-information', + 'pw-check', + 'pw-change' + ], + ROLE_ADMIN: [ + 'member-management', + 'edit-information', + 'task-management', + 'category-first', + 'category-second', + 'login-logs', + 'api-logs', + 'edit-information', + 'pw-check', + 'pw-change' + ] +}