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