@casl/mongoose
Version:
Allows to query accessible records from MongoDB based on CASL rules
22 lines (21 loc) • 956 B
TypeScript
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 {};