@superawesome/permissions-nestjs
Version:
NestJS Guard & Decorators for @superawesome/permissions, promoting orthogonal fine-grained API access control to resources.
29 lines (28 loc) • 1.48 kB
TypeScript
import { CanActivate, ExecutionContext } from '@nestjs/common';
import { Reflector } from '@nestjs/core';
import { PermissionDefinitionDefaults, Permissions, Tid } from '@superawesome/permissions';
import { TExtractUserFromRequest, IPermissionDefinitionStringOwnHooks, TProjectTo } from './types';
/**
* Acts only as an interface
* @internal
*/
export declare abstract class AbstractPermissionsGuard implements CanActivate {
protected readonly permissions: Permissions<Tid, Tid>;
protected readonly permissionsOwnershipService: any;
protected reflector: Reflector;
protected readonly extractUserFromRequest: TExtractUserFromRequest<Tid>;
constructor(permissions: Permissions<Tid, Tid>, permissionsOwnershipService: any, reflector: Reflector, extractUserFromRequest: TExtractUserFromRequest<Tid>);
abstract canActivate(context: ExecutionContext): any;
}
export interface IGuardOptions<TResourceId extends Tid = number> {
resource?: string;
projectResourceId?: TProjectTo<TResourceId>;
}
/**
* The factory function that creates the customised Guard for a Controller.
*
* @param guardOptions see IGuardOptions
* @param permissionDefinitionStringOwnHooks
* @param pdDefaults
*/
export declare const createPermissionsGuard: (guardOptions?: IGuardOptions, permissionDefinitionStringOwnHooks?: IPermissionDefinitionStringOwnHooks | IPermissionDefinitionStringOwnHooks[], pdDefaults?: PermissionDefinitionDefaults) => typeof AbstractPermissionsGuard;