@ra-libs/react-rbac
Version:
React admin RBAC front components and utils
19 lines (18 loc) • 892 B
TypeScript
import { ForcedSubject, MongoQuery, PureAbility as Ability } from '@casl/ability';
import { BoundCanProps } from '@casl/react';
import { RaRecord } from 'react-admin';
import { CASLAction, Role } from '../../config';
export type Model<T, TName extends string> = T & ForcedSubject<TName>;
export type RaSubjects<T extends Partial<Record<string, Record<string, unknown>>>> = keyof T | {
[K in keyof T]: Model<T[K], K & string>;
}[keyof T];
export type Subjects = RaSubjects<RaRecord> | 'all';
export type Conditions = MongoQuery;
export type AppAbility = Ability<[CASLAction, Subjects], Conditions>;
export type CASLContextData = {
ability: AppAbility;
permissions?: Role[];
setPermissions?: React.Dispatch<React.SetStateAction<Role[]>>;
Can: React.FunctionComponent<BoundCanProps<AppAbility>>;
};
export declare const CASLContext: import("react").Context<CASLContextData>;