Class EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields>Abstract

Privacy policy for an entity.

Remarks

A privacy policy declares lists of PrivacyPolicyRule for create, read, update, and delete actions for an entity and provides logic for authorizing an entity against rules.

Evaluation of a list of rules is performed according the following example. This allows constructing of complex yet testable permissioning logic for an entity.

Example

foreach rule in rules:
return authorized if rule allows
return not authorized if rule denies
continue to next rule if rule skips
return not authorized if all rules skip

Type Parameters

  • TFields extends object

  • TID extends NonNullable<TFields[TSelectedFields]>

  • TViewerContext extends ViewerContext

  • TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>

  • TSelectedFields extends keyof TFields = keyof TFields

Hierarchy

  • EntityPrivacyPolicy

Constructors

  • Type Parameters

    • TFields extends object

    • TID extends {}

    • TViewerContext extends ViewerContext<TViewerContext>

    • TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields, TEntity>

    • TSelectedFields extends string | number | symbol = keyof TFields

    Returns EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields>

Properties

createRules: readonly PrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>[] = []
deleteRules: readonly PrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>[] = []
readRules: readonly PrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>[] = []
updateRules: readonly PrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>[] = []

Methods

  • Authorize an entity against creation policy.

    Parameters

    Returns Promise<TEntity>

    entity if authorized

    Throws

    EntityNotAuthorizedError when not authorized

  • Authorize an entity against deletion policy.

    Parameters

    Returns Promise<TEntity>

    entity if authorized

    Throws

    EntityNotAuthorizedError when not authorized

  • Authorize an entity against read policy.

    Parameters

    Returns Promise<TEntity>

    entity if authorized

    Throws

    EntityNotAuthorizedError when not authorized

  • Authorize an entity against update policy.

    Parameters

    Returns Promise<TEntity>

    entity if authorized

    Throws

    EntityNotAuthorizedError when not authorized

Generated using TypeDoc