UNPKG

@elsikora/nestjs-crud-automator

Version:

A library for automating the creation of CRUD operations in NestJS.

38 lines (37 loc) 2.58 kB
import type { IApiBaseEntity } from '../../../../interface/api-base-entity.interface'; import type { IApiAuthorizationPolicySubscriberRule } from '../../../../interface/class/api/authorization/policy/subscriber/index'; import { ApiSubscriberBase } from '../../subscriber/base.class'; /** * Base class for all authorization policies. It mirrors ApiFunctionSubscriberBase * and provides helper methods to create allow/deny rules that are later executed by the policy executor. * @template E - Entity type extending IApiBaseEntity */ export declare abstract class ApiAuthorizationPolicyBase<E extends IApiBaseEntity> extends ApiSubscriberBase { /** * Creates an ALLOW rule with optional overrides. * @param {Omit<IApiAuthorizationPolicySubscriberRule<E>, "effect">} [rule] - Rule fields to merge. * @returns {IApiAuthorizationPolicySubscriberRule<E>} Allow rule. */ protected allow<R>(rule?: Omit<IApiAuthorizationPolicySubscriberRule<E, R>, "effect">): IApiAuthorizationPolicySubscriberRule<E, R>; /** * Helper that creates an allow rule conditioned on the subject having at least one of the provided roles. * @param {Array<string>} roles - Roles that grant access. * @param {Omit<IApiAuthorizationPolicySubscriberRule<E>, "effect">} [rule] - Optional overrides. * @returns {IApiAuthorizationPolicySubscriberRule<E>} Allow rule targeting the given roles. */ protected allowForRoles<R>(roles: Array<string>, rule?: Omit<IApiAuthorizationPolicySubscriberRule<E, R>, "effect">): IApiAuthorizationPolicySubscriberRule<E, R>; /** * Creates a DENY rule with optional overrides. * @param {Omit<IApiAuthorizationPolicySubscriberRule<E>, "effect">} [rule] - Rule fields to merge. * @returns {IApiAuthorizationPolicySubscriberRule<E>} Deny rule. */ protected deny<R>(rule?: Omit<IApiAuthorizationPolicySubscriberRule<E, R>, "effect">): IApiAuthorizationPolicySubscriberRule<E, R>; /** * Helper that scopes data access to the owner identified by a field. * Automatically handles relations by using nested id structure. * @param {keyof E} [ownerField] - Entity field used to match the subject id, defaults to ownerId. * @param {Omit<IApiAuthorizationPolicySubscriberRule<E>, "effect">} [rule] - Optional overrides. * @returns {IApiAuthorizationPolicySubscriberRule<E>} Allow rule with owner scope. */ protected scopeToOwner<R>(ownerField?: keyof E, rule?: Omit<IApiAuthorizationPolicySubscriberRule<E, R>, "effect">): IApiAuthorizationPolicySubscriberRule<E, R>; }