[권한 시스템 정리] 불필요한 권한 체크 함수 및 관련 코드 제거, 리소스 구조 개선
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import type { UserPermissions, Resource } from "~/types/permissions";
|
||||
import type { UserPermissions } from "~/types/permissions";
|
||||
import { MOCK_PERMISSIONS } from "~/types/permissions";
|
||||
|
||||
export const usePermissionsStore = defineStore(
|
||||
@@ -23,20 +23,18 @@ export const usePermissionsStore = defineStore(
|
||||
|
||||
// 실제 API 호출 (백엔드 준비되면 주석 해제)
|
||||
/*
|
||||
const { success, data } = await useApi<{
|
||||
pagePermissions: string[];
|
||||
menuPermissions: string[];
|
||||
componentPermissions: string[];
|
||||
}>('/auth/permissions', {
|
||||
const { success, data } = await useApi<UserPermissions>('/auth/permissions', {
|
||||
method: 'GET',
|
||||
handleError: false
|
||||
});
|
||||
|
||||
if (success && data) {
|
||||
permissions.value = {
|
||||
pagePermissions: data.pagePermissions || [],
|
||||
menuPermissions: data.menuPermissions || [],
|
||||
componentPermissions: data.componentPermissions || []
|
||||
resources: {
|
||||
pageGroups: data.resources?.pageGroups || [],
|
||||
pages: data.resources?.pages || [],
|
||||
components: data.resources?.components || []
|
||||
}
|
||||
};
|
||||
return true;
|
||||
}
|
||||
@@ -63,7 +61,6 @@ export const usePermissionsStore = defineStore(
|
||||
}
|
||||
};
|
||||
|
||||
// 헬퍼 함수들 - 기존 호환성을 위한 함수들
|
||||
const getPagePaths = (): string[] => {
|
||||
return permissions.value.resources.pages
|
||||
.map(page => page.path)
|
||||
@@ -82,7 +79,6 @@ export const usePermissionsStore = defineStore(
|
||||
);
|
||||
};
|
||||
|
||||
// 권한 체크 함수들 (기존 호환성 유지)
|
||||
const hasPagePermission = (page: string): boolean => {
|
||||
return getPagePaths().includes(page);
|
||||
};
|
||||
@@ -95,97 +91,6 @@ export const usePermissionsStore = defineStore(
|
||||
return getComponentCodes().includes(component);
|
||||
};
|
||||
|
||||
// 여러 권한 중 하나라도 있는지 체크
|
||||
const hasAnyPagePermission = (pages: string[]): boolean => {
|
||||
return pages.some(page => hasPagePermission(page));
|
||||
};
|
||||
|
||||
const hasAnyPageGroupPermission = (pageGroups: string[]): boolean => {
|
||||
return pageGroups.some(pageGroup => hasPageGroupPermission(pageGroup));
|
||||
};
|
||||
|
||||
const hasAnyComponentPermission = (components: string[]): boolean => {
|
||||
return components.some(component => hasComponentPermission(component));
|
||||
};
|
||||
|
||||
// 계층 구조를 고려한 권한 체크 함수들
|
||||
const hasResourcePermission = (resourceCode: string): boolean => {
|
||||
return (
|
||||
findResourceByCode(permissions.value.resources, resourceCode) !==
|
||||
undefined
|
||||
);
|
||||
};
|
||||
|
||||
const getResourceByCode = (code: string): Resource | undefined => {
|
||||
return findResourceByCode(permissions.value.resources, code);
|
||||
};
|
||||
|
||||
const getResourceByPath = (path: string): Resource | undefined => {
|
||||
return findResourceByPath(permissions.value.resources, path);
|
||||
};
|
||||
|
||||
const getChildResources = (parentCode: string): Resource[] => {
|
||||
const parent = findResourceByCode(
|
||||
permissions.value.resources,
|
||||
parentCode
|
||||
);
|
||||
return parent?.children || [];
|
||||
};
|
||||
|
||||
// 계층 구조에서 리소스 찾기 헬퍼 함수들
|
||||
|
||||
const findResourceByCode = (
|
||||
resources: {
|
||||
pageGroups: Resource[];
|
||||
pages: Resource[];
|
||||
components: Resource[];
|
||||
},
|
||||
code: string
|
||||
): Resource | undefined => {
|
||||
const allResources = [
|
||||
...resources.pageGroups,
|
||||
...resources.pages,
|
||||
...resources.components,
|
||||
];
|
||||
for (const resource of allResources) {
|
||||
if (resource.code === code) return resource;
|
||||
if (resource.children) {
|
||||
const found = findResourceByCode(
|
||||
{ pageGroups: [], pages: [], components: resource.children },
|
||||
code
|
||||
);
|
||||
if (found) return found;
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
|
||||
const findResourceByPath = (
|
||||
resources: {
|
||||
pageGroups: Resource[];
|
||||
pages: Resource[];
|
||||
components: Resource[];
|
||||
},
|
||||
path: string
|
||||
): Resource | undefined => {
|
||||
const allResources = [
|
||||
...resources.pageGroups,
|
||||
...resources.pages,
|
||||
...resources.components,
|
||||
];
|
||||
for (const resource of allResources) {
|
||||
if (resource.path === path) return resource;
|
||||
if (resource.children) {
|
||||
const found = findResourceByPath(
|
||||
{ pageGroups: [], pages: [], components: resource.children },
|
||||
path
|
||||
);
|
||||
if (found) return found;
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
|
||||
// 권한 초기화
|
||||
const clearPermissions = () => {
|
||||
permissions.value = {
|
||||
@@ -198,32 +103,19 @@ export const usePermissionsStore = defineStore(
|
||||
};
|
||||
|
||||
return {
|
||||
// 상태
|
||||
permissions: readonly(permissions),
|
||||
isLoading: readonly(isLoading),
|
||||
|
||||
// 액션
|
||||
fetchPermissions,
|
||||
clearPermissions,
|
||||
|
||||
// 기존 호환성 함수들
|
||||
hasPagePermission,
|
||||
hasPageGroupPermission,
|
||||
hasComponentPermission,
|
||||
hasAnyPagePermission,
|
||||
hasAnyPageGroupPermission,
|
||||
hasAnyComponentPermission,
|
||||
|
||||
// 헬퍼 함수들
|
||||
getPagePaths,
|
||||
getPageGroupCodes,
|
||||
getComponentCodes,
|
||||
|
||||
// 새로운 계층 구조 권한 체크 함수들
|
||||
hasResourcePermission,
|
||||
getResourceByCode,
|
||||
getResourceByPath,
|
||||
getChildResources,
|
||||
};
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user