@elsikora/nestjs-crud-automator
Version:
A library for automating the creation of CRUD operations in NestJS.
39 lines (38 loc) • 2.61 kB
TypeScript
import { IApiBaseEntity } from '../../../interface/api-base-entity.interface';
import { IApiAuthenticationRequest } from '../../../interface/api/authentication-request.interface';
import { IApiAuthorizationAuditSink, IApiAuthorizationDecision, IApiAuthorizationPolicyRegistry, IApiAuthorizationPrincipal, IApiAuthorizationPrincipalResolver, IApiAuthorizationRequestMetadata } from '../../../interface/class/api/authorization';
import { IApiControllerAuthorizationProperties } from '../../../interface/decorator/api/controller/properties';
import { IApiRouteAuthorizationProperties } from '../../../interface/decorator/api/route';
import { TApiAuthorizationRuleTransformPayload } from '../../../type/class/api/authorization/rule/transform-payload.type';
import { ApiAuthorizationEngine } from './engine.class';
import { ApiAuthorizationHookPermissionResolver } from './hook';
import { ApiAuthorizationIamAttachmentResolver, ApiAuthorizationIamDocumentResolver, ApiAuthorizationIamEngine } from './iam';
import { EApiRouteType } from '../../../enum/decorator/api/route';
export declare class ApiAuthorizationRuntime {
private readonly policyRegistry;
private readonly authorizationEngine;
private readonly hookPermissionResolver;
private readonly iamAttachmentResolver;
private readonly iamDocumentResolver;
private readonly iamEngine;
private readonly principalResolver?;
private readonly auditSink?;
constructor(policyRegistry: IApiAuthorizationPolicyRegistry, authorizationEngine: ApiAuthorizationEngine, hookPermissionResolver: ApiAuthorizationHookPermissionResolver, iamAttachmentResolver: ApiAuthorizationIamAttachmentResolver, iamDocumentResolver: ApiAuthorizationIamDocumentResolver, iamEngine: ApiAuthorizationIamEngine, principalResolver?: IApiAuthorizationPrincipalResolver | undefined, auditSink?: IApiAuthorizationAuditSink | undefined);
evaluate<E extends IApiBaseEntity>(options: {
action: string;
authenticationRequest?: IApiAuthenticationRequest;
authorization: IApiControllerAuthorizationProperties<E>;
entity: new () => E;
principal?: IApiAuthorizationPrincipal;
requestMetadata: IApiAuthorizationRequestMetadata<E>;
resource?: E;
routeAuthorization?: IApiRouteAuthorizationProperties;
routeType?: EApiRouteType;
}): Promise<IApiAuthorizationDecision<E, TApiAuthorizationRuleTransformPayload<E>>>;
private createImplicitDenyHookPolicy;
private evaluateHooks;
private evaluateIam;
private resolveIamAction;
private resolveMode;
private resolvePrincipal;
}