UNPKG

@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
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;