permissions property

Set<DomainPermission> get permissions

Represents a security boundary for code execution within a container or framework, defining permissions, metadata, and inheritance rules for reflection-based access.

A ProtectionDomain encapsulates:

  • A name (identity),
  • A set of granted DomainPermissions,
  • A set of properties (context-specific data),
  • An optional parent domain (for hierarchical permission models).

Usage Example:

var domain = ProtectionDomain.create(
  'dev',
  permissions: {DomainPermission.READ_FIELDS, DomainPermission.INVOKE_METHODS},
);

ProtectionDomain.setCurrent(domain);

domain.runWithDomain(() {
  if (domain.hasPermission(DomainPermission.READ_FIELDS)) {
    print('Can read fields');
  }
});

Protection domains are used internally by reflection frameworks, pod factories, or sandboxed environments like JetLeaf to enforce scoped access control.

Implementation

Set<DomainPermission> get permissions;