44 lines
1.5 KiB
TypeScript
44 lines
1.5 KiB
TypeScript
/**
|
|
* 권한 체크를 위한 컴포저블
|
|
* 컴포넌트에서 권한을 쉽게 체크할 수 있도록 도와주는 유틸리티 함수들
|
|
*/
|
|
export const usePermission = () => {
|
|
const permissionsStore = usePermissionsStore();
|
|
|
|
return {
|
|
// 페이지 권한 체크
|
|
hasPagePermission: (page: string) =>
|
|
permissionsStore.hasPagePermission(page),
|
|
|
|
// 메뉴 권한 체크
|
|
hasMenuPermission: (menu: string) =>
|
|
permissionsStore.hasMenuPermission(menu),
|
|
|
|
// 컴포넌트 권한 체크
|
|
hasComponentPermission: (component: string) =>
|
|
permissionsStore.hasComponentPermission(component),
|
|
|
|
// 여러 권한 중 하나라도 있는지 체크
|
|
hasAnyPagePermission: (pages: string[]) =>
|
|
permissionsStore.hasAnyPagePermission(pages),
|
|
hasAnyMenuPermission: (menus: string[]) =>
|
|
permissionsStore.hasAnyMenuPermission(menus),
|
|
hasAnyComponentPermission: (components: string[]) =>
|
|
permissionsStore.hasAnyComponentPermission(components),
|
|
|
|
// 모든 권한이 있는지 체크
|
|
hasAllPagePermissions: (pages: string[]) =>
|
|
pages.every(page => permissionsStore.hasPagePermission(page)),
|
|
hasAllMenuPermissions: (menus: string[]) =>
|
|
menus.every(menu => permissionsStore.hasMenuPermission(menu)),
|
|
hasAllComponentPermissions: (components: string[]) =>
|
|
components.every(component =>
|
|
permissionsStore.hasComponentPermission(component)
|
|
),
|
|
|
|
// 권한 데이터 직접 접근
|
|
permissions: permissionsStore.permissions,
|
|
isLoading: permissionsStore.isLoading,
|
|
};
|
|
};
|