File size: 951 Bytes
f0743f4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import {
  hasPermissions,
  useGetEffectivePermissionsQuery,
} from 'librechat-data-provider/react-query';
import type { ResourceType } from 'librechat-data-provider';

/**
 * fetches resource permissions once and returns a function to check any permission
 * More efficient when checking multiple permissions for the same resource
 * @param resourceType - Type of resource (e.g., ResourceType.AGENT)
 * @param resourceId - ID of the resource
 * @returns Object with hasPermission function and loading state
 */
export const useResourcePermissions = (resourceType: ResourceType, resourceId: string) => {
  const { data, isLoading } = useGetEffectivePermissionsQuery(resourceType, resourceId);

  const hasPermission = (requiredPermission: number): boolean => {
    return data ? hasPermissions(data.permissionBits, requiredPermission) : false;
  };

  return {
    hasPermission,
    isLoading,
    permissionBits: data?.permissionBits || 0,
  };
};