{"version":3,"file":"RBACContext.mjs","sources":["../../../src/lib/contexts/RBACContext.ts"],"sourcesContent":["/**\n * @file RBAC Context\n * @description Context for role-based access control (Fast Refresh compliant).\n */\n\nimport { createContext } from 'react';\n\n/**\n * Resource type\n */\nexport type Resource = string;\n\n/**\n * Action type\n */\nexport type Action = 'create' | 'read' | 'update' | 'delete' | string;\n\n/**\n * Permission\n */\nexport interface Permission {\n  resource: Resource;\n  actions: Action[];\n}\n\n/**\n * Role\n */\nexport interface Role {\n  id: string;\n  name: string;\n  permissions: Permission[];\n}\n\n/**\n * RBAC context value\n */\nexport interface RBACContextValue {\n  roles: Role[];\n  currentRole: Role | null;\n  hasPermission: (resource: Resource, action: Action) => boolean;\n  hasAnyPermission: (resource: Resource, actions: Action[]) => boolean;\n  hasAllPermissions: (resource: Resource, actions: Action[]) => boolean;\n  canAccess: (resource: Resource) => boolean;\n  getEffectivePermissions: () => Permission[];\n  getRoleDefinitions: () => Role[];\n  refreshPermissions: () => Promise<void>;\n  clearCache: () => void;\n  checkResourcePermission: (resourceType: string, resourceId: string, action: Action) => boolean;\n}\n\n/**\n * RBAC context - extracted for Fast Refresh compliance\n */\nexport const RBACContext = createContext<RBACContextValue | null>(null);\n\nRBACContext.displayName = 'RBACContext';\n"],"names":["RBACContext","createContext"],"mappings":";AAsDO,MAAMA,IAAcC,EAAuC,IAAI;AAEtED,EAAY,cAAc;"}