UNPKG

@elsikora/nestjs-crud-automator

Version:

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

69 lines (68 loc) 5.91 kB
import { IApiBaseEntity } from '../../../../interface/api-base-entity.interface'; import { IApiAuthorizationPolicySubscriberPermissionRuleOptions, IApiAuthorizationPolicySubscriberRule } from '../../../../interface/class/api/authorization/policy/subscriber'; import { TApiAuthorizationPolicySubscriberPermissionRuleOptionsWithoutTransform, TApiAuthorizationPolicySubscriberRuleWithoutEffectWithoutTransform, TApiAuthorizationPolicySubscriberRuleWithoutTransform } from '../../../../type/class/api/authorization/policy/subscriber'; 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 {Array<IApiAuthorizationPolicySubscriberRule<E>>} Allow rule array. */ protected allow(rule?: TApiAuthorizationPolicySubscriberRuleWithoutEffectWithoutTransform<E>): Array<TApiAuthorizationPolicySubscriberRuleWithoutTransform<E>>; protected allow<R>(rule: Omit<IApiAuthorizationPolicySubscriberRule<E, R>, "effect">): Array<IApiAuthorizationPolicySubscriberRule<E, R>>; /** * Helper that creates an allow rule conditioned on the principal having the required permissions. * Granted permissions may use `*` or `<prefix>.*` wildcards. * @template R - Rule result type. * @param {Array<string>} requiredPermissions - Permissions that grant access. * @param {IApiAuthorizationPolicySubscriberPermissionRuleOptions<E, R>} [options] - Optional rule overrides. * @returns {Array<IApiAuthorizationPolicySubscriberRule<E>>} Allow rule array targeting the given permissions. */ protected allowForPermissions(requiredPermissions: Array<string>, options?: TApiAuthorizationPolicySubscriberPermissionRuleOptionsWithoutTransform<E>): Array<TApiAuthorizationPolicySubscriberRuleWithoutTransform<E>>; protected allowForPermissions<R>(requiredPermissions: Array<string>, options: IApiAuthorizationPolicySubscriberPermissionRuleOptions<E, R>): Array<IApiAuthorizationPolicySubscriberRule<E, R>>; /** * Helper that creates an allow rule conditioned on the principal 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 {Array<IApiAuthorizationPolicySubscriberRule<E>>} Allow rule array targeting the given roles. */ protected allowForRoles(roles: Array<string>, rule?: TApiAuthorizationPolicySubscriberRuleWithoutEffectWithoutTransform<E>): Array<TApiAuthorizationPolicySubscriberRuleWithoutTransform<E>>; protected allowForRoles<R>(roles: Array<string>, rule: Omit<IApiAuthorizationPolicySubscriberRule<E, R>, "effect">): Array<IApiAuthorizationPolicySubscriberRule<E, R>>; /** * Creates a DENY rule with optional overrides. * @param {Omit<IApiAuthorizationPolicySubscriberRule<E>, "effect">} [rule] - Rule fields to merge. * @returns {Array<IApiAuthorizationPolicySubscriberRule<E>>} Deny rule array. */ protected deny(rule?: TApiAuthorizationPolicySubscriberRuleWithoutEffectWithoutTransform<E>): Array<TApiAuthorizationPolicySubscriberRuleWithoutTransform<E>>; protected deny<R>(rule: Omit<IApiAuthorizationPolicySubscriberRule<E, R>, "effect">): Array<IApiAuthorizationPolicySubscriberRule<E, R>>; /** * Helper that creates a deny rule conditioned on the principal having the required permissions. * Granted permissions may use `*` or `<prefix>.*` wildcards. * @template R - Rule result type. * @param {Array<string>} requiredPermissions - Permissions that trigger access denial. * @param {IApiAuthorizationPolicySubscriberPermissionRuleOptions<E, R>} [options] - Optional rule overrides. * @returns {Array<IApiAuthorizationPolicySubscriberRule<E>>} Deny rule array targeting the given permissions. */ protected denyForPermissions(requiredPermissions: Array<string>, options?: TApiAuthorizationPolicySubscriberPermissionRuleOptionsWithoutTransform<E>): Array<TApiAuthorizationPolicySubscriberRuleWithoutTransform<E>>; protected denyForPermissions<R>(requiredPermissions: Array<string>, options: IApiAuthorizationPolicySubscriberPermissionRuleOptions<E, R>): Array<IApiAuthorizationPolicySubscriberRule<E, R>>; /** * Helper that scopes data access to the owner identified by a field. * Automatically resolves relation vs scalar fields by default. * @param {keyof E} [ownerField] - Entity field used to match the principal id, defaults to ownerId. * @param {Omit<IApiAuthorizationPolicySubscriberRule<E>, "effect">} [rule] - Optional overrides. * @param {{ isRelation?: boolean }} [options] - Override relation handling; defaults to auto. * @param {boolean} [options.isRelation] - Whether the field is a relation (defaults to auto). * @returns {Array<IApiAuthorizationPolicySubscriberRule<E>>} Allow rule array with owner scope. */ protected scopeToOwner(ownerField?: keyof E, rule?: TApiAuthorizationPolicySubscriberRuleWithoutEffectWithoutTransform<E>, options?: { isRelation?: boolean; }): Array<TApiAuthorizationPolicySubscriberRuleWithoutTransform<E>>; protected scopeToOwner<R>(ownerField: keyof E | undefined, rule: Omit<IApiAuthorizationPolicySubscriberRule<E, R>, "effect">, options?: { isRelation?: boolean; }): Array<IApiAuthorizationPolicySubscriberRule<E, R>>; }