UNPKG

@casl/mongoose

Version:

Allows to query accessible records from MongoDB based on CASL rules

22 lines (21 loc) 956 B
import type { AnyMongoAbility, Generics, SubjectType, Abilities, AbilityTuple, ExtractSubjectType } from '@casl/ability'; export declare const EMPTY_RESULT_QUERY: { $expr: { $eq: number[]; }; }; export declare class AccessibleRecords<T extends SubjectType> { private readonly _ability; private readonly _action; constructor(_ability: AnyMongoAbility, _action: string); /** * In case action is not allowed, it returns `{ $expr: { $eq: [0, 1] } }` */ ofType(subjectType: T): Record<string, unknown>; } type SubjectTypes<T extends Abilities> = T extends AbilityTuple ? ExtractSubjectType<T[1]> : never; /** * Returns accessible records Mongo query per record type (i.e., entity type) based on provided Ability and action. */ export declare function accessibleBy<T extends AnyMongoAbility>(ability: T, action?: Parameters<T['rulesFor']>[0]): AccessibleRecords<SubjectTypes<Generics<T>['abilities']>>; export {};