@elsikora/nestjs-crud-automator
Version:
A library for automating the creation of CRUD operations in NestJS.
38 lines (37 loc) • 2.58 kB
TypeScript
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>;
}