Member Junction
    Preparing search index...

    Interface IPermissionProvider

    The contract every permission provider implements. Providers are thin facades over existing subsystem engines (EntityInfo.GetUserPermisions, DashboardEngine, etc.) — they translate between the provider-specific API and this normalized shape.

    Concrete providers should NOT implement this interface directly — extend PermissionProviderBase instead so the class is registerable with ClassFactory.

    interface IPermissionProvider {
        Description: string;
        DomainName: string;
        SupportedActions: PermissionAction[];
        SupportedGranteeTypes: GranteeType[];
        SupportsDeny: boolean;
        CheckPermission(
            user: UserInfo,
            resourceType: string,
            resourceId: string,
            action: PermissionAction,
            provider?: IMetadataProvider,
        ): Promise<PermissionCheckResult>;
        GetEffectivePermissions(
            user: UserInfo,
            resourceType: string,
            resourceId: string,
            provider?: IMetadataProvider,
        ): Promise<NormalizedPermission[]>;
        GetPermissionsGrantedByUser(
            grantor: UserInfo,
            provider?: IMetadataProvider,
        ): Promise<NormalizedPermission[]>;
        GetPermissionsSharedWithUser(
            grantee: UserInfo,
            provider?: IMetadataProvider,
        ): Promise<NormalizedPermission[]>;
        GetResourcePermissions(
            resourceType: string,
            resourceId: string,
            provider?: IMetadataProvider,
        ): Promise<NormalizedPermission[]>;
        GetResourceTypes(provider?: IMetadataProvider): string[];
        GetUserResources(
            user: UserInfo,
            resourceType?: string,
            provider?: IMetadataProvider,
        ): Promise<NormalizedPermission[]>;
    }

    Implemented by

    Index

    Properties

    Description: string

    Human-readable description of what this provider covers.

    DomainName: string

    Unique name for this provider's domain; must match PermissionDomain.Name.

    SupportedActions: PermissionAction[]

    What actions this provider can evaluate.

    SupportedGranteeTypes: GranteeType[]

    What grantee types this provider supports.

    SupportsDeny: boolean

    Whether this provider supports explicit Deny records.

    Methods

    • The resource type names this provider operates on, suitable for populating a "Resource Type" picker in admin reports. Providers with a single backing table return a one-element array (e.g., ['Dashboards']). Providers that span multiple (Resource Permissions, Entity Permissions, Access Control Rules) return the live catalog. An empty array means "not enumerable" — consumers can fall back to free-text input.

      Parameters

      • Optionalprovider: IMetadataProvider

        Optional metadata provider whose catalog to read. Falls back to Metadata.Provider when omitted; pass an explicit provider in multi-tenant contexts so the picker reflects the right server's entities.

        Default implementation returns [].

      Returns string[]