40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
/**
|
|
* 권한 체크를 위한 컴포저블
|
|
* 컴포넌트에서 권한을 쉽게 체크할 수 있도록 도와주는 유틸리티 함수들
|
|
*/
|
|
export const usePermission = () => {
|
|
const permissionsStore = usePermissionsStore();
|
|
|
|
return {
|
|
// 페이지 권한 체크
|
|
hasPagePermission: (page: string) =>
|
|
permissionsStore.hasPagePermission(page),
|
|
|
|
// 페이지그룹 권한 체크
|
|
hasPageGroupPermission: (pageGroup: string) =>
|
|
permissionsStore.hasPageGroupPermission(pageGroup),
|
|
|
|
// 컴포넌트 권한 체크
|
|
hasComponentPermission: (component: string) =>
|
|
permissionsStore.hasComponentPermission(component),
|
|
|
|
// 권한 데이터 직접 접근
|
|
permissions: computed(() => permissionsStore.permissions),
|
|
resources: computed(() => permissionsStore.permissions?.resources),
|
|
|
|
// 리소스별 전체 접근 함수
|
|
getPageGroups: () =>
|
|
permissionsStore.permissions?.resources?.pageGroups || [],
|
|
getPages: () => permissionsStore.permissions?.resources?.pages || [],
|
|
getComponents: () =>
|
|
permissionsStore.permissions?.resources?.components || [],
|
|
|
|
// 코드로 리소스 찾기
|
|
getResourceByCode: (code: string) => {
|
|
const components =
|
|
permissionsStore.permissions?.resources?.components || [];
|
|
return components.find(component => component.code === code);
|
|
},
|
|
};
|
|
};
|