[리소스 권한 작업중]

This commit is contained in:
2025-09-23 15:21:00 +09:00
parent 29fbda149b
commit e5f5a926a3
6 changed files with 205 additions and 150 deletions

View File

@@ -7,7 +7,7 @@ export const usePermissionsStore = defineStore(
// 권한 데이터 상태
const permissions = ref<UserPermissions>({
resources: {
menus: [],
pageGroups: [],
pages: [],
components: [],
},
@@ -48,7 +48,7 @@ export const usePermissionsStore = defineStore(
permissions.value = {
resources: {
menus: [...MOCK_PERMISSIONS.resources.menus],
pageGroups: [...MOCK_PERMISSIONS.resources.pageGroups],
pages: [...MOCK_PERMISSIONS.resources.pages],
components: [...MOCK_PERMISSIONS.resources.components],
},
@@ -70,8 +70,10 @@ export const usePermissionsStore = defineStore(
.filter(Boolean) as string[];
};
const getMenuCodes = (): string[] => {
return permissions.value.resources.menus.map(menu => menu.code);
const getPageGroupCodes = (): string[] => {
return permissions.value.resources.pageGroups.map(
pageGroup => pageGroup.code
);
};
const getComponentCodes = (): string[] => {
@@ -85,8 +87,8 @@ export const usePermissionsStore = defineStore(
return getPagePaths().includes(page);
};
const hasMenuPermission = (menu: string): boolean => {
return getMenuCodes().includes(menu);
const hasPageGroupPermission = (pageGroup: string): boolean => {
return getPageGroupCodes().includes(pageGroup);
};
const hasComponentPermission = (component: string): boolean => {
@@ -98,8 +100,8 @@ export const usePermissionsStore = defineStore(
return pages.some(page => hasPagePermission(page));
};
const hasAnyMenuPermission = (menus: string[]): boolean => {
return menus.some(menu => hasMenuPermission(menu));
const hasAnyPageGroupPermission = (pageGroups: string[]): boolean => {
return pageGroups.some(pageGroup => hasPageGroupPermission(pageGroup));
};
const hasAnyComponentPermission = (components: string[]): boolean => {
@@ -134,14 +136,14 @@ export const usePermissionsStore = defineStore(
const findResourceByCode = (
resources: {
menus: Resource[];
pageGroups: Resource[];
pages: Resource[];
components: Resource[];
},
code: string
): Resource | undefined => {
const allResources = [
...resources.menus,
...resources.pageGroups,
...resources.pages,
...resources.components,
];
@@ -149,7 +151,7 @@ export const usePermissionsStore = defineStore(
if (resource.code === code) return resource;
if (resource.children) {
const found = findResourceByCode(
{ menus: [], pages: [], components: resource.children },
{ pageGroups: [], pages: [], components: resource.children },
code
);
if (found) return found;
@@ -160,14 +162,14 @@ export const usePermissionsStore = defineStore(
const findResourceByPath = (
resources: {
menus: Resource[];
pageGroups: Resource[];
pages: Resource[];
components: Resource[];
},
path: string
): Resource | undefined => {
const allResources = [
...resources.menus,
...resources.pageGroups,
...resources.pages,
...resources.components,
];
@@ -175,7 +177,7 @@ export const usePermissionsStore = defineStore(
if (resource.path === path) return resource;
if (resource.children) {
const found = findResourceByPath(
{ menus: [], pages: [], components: resource.children },
{ pageGroups: [], pages: [], components: resource.children },
path
);
if (found) return found;
@@ -188,7 +190,7 @@ export const usePermissionsStore = defineStore(
const clearPermissions = () => {
permissions.value = {
resources: {
menus: [],
pageGroups: [],
pages: [],
components: [],
},
@@ -206,15 +208,15 @@ export const usePermissionsStore = defineStore(
// 기존 호환성 함수들
hasPagePermission,
hasMenuPermission,
hasPageGroupPermission,
hasComponentPermission,
hasAnyPagePermission,
hasAnyMenuPermission,
hasAnyPageGroupPermission,
hasAnyComponentPermission,
// 헬퍼 함수들
getPagePaths,
getMenuCodes,
getPageGroupCodes,
getComponentCodes,
// 새로운 계층 구조 권한 체크 함수들