/**
 * 권한 체크를 위한 컴포저블
 * 컴포넌트에서 권한을 쉽게 체크할 수 있도록 도와주는 유틸리티 함수들
 */
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);
    },
  };
};
