shyft
Version:
Model driven GraphQL API framework
116 lines (115 loc) • 5.47 kB
TypeScript
import { Action } from '../action/Action';
import { Entity } from '../entity/Entity';
import { ViewEntity } from '../entity/ViewEntity';
import { Mutation } from '../mutation/Mutation';
import { Subscription } from '../subscription/Subscription';
import { Context } from '../..';
export interface PermissionMap {
read?: Permission | Permission[];
find?: Permission | Permission[];
mutations?: {
[key: string]: Permission | Permission[];
};
subscriptions?: Record<string, unknown> | Permission | Permission[];
}
export declare type PermissionMapGenerator = () => PermissionMap;
export declare class Permission {
static EVERYONE: Permission;
static AUTHENTICATED: Permission;
isEmpty: boolean;
everyoneCanAccess: boolean;
authenticatedCanAccess: boolean;
types: {};
roles: any[];
userAttributes: any[];
lookups: any[];
values: any[];
states: any[];
constructor();
_checkCompatibility(type: any): void;
everyone(): Permission;
authenticated(): Permission;
role(name: string): Permission;
userAttribute(attributeName: string): Permission;
lookup(entity: Entity | ViewEntity | (() => Entity) | (() => ViewEntity), lookupMap: Record<string, unknown>): Permission;
value(attributeName: string, value: any): Permission;
state(stateName: string): Permission;
toString(): string;
}
export declare const isPermission: (obj: unknown) => obj is Permission;
export declare const isPermissionsArray: (obj: Permission | Permission[]) => obj is Permission[];
export declare const findInvalidPermissionAttributes: (permission: Permission, entity: Entity | ViewEntity) => void;
export declare const findMissingPermissionAttributes: (permission: Permission, permissionEntity: Entity | ViewEntity, mutation?: Mutation) => string | boolean;
export declare const findMissingPermissionStates: (permission: Permission, permissionEntity: Entity) => any;
export declare const validateActionLookupPermission: (permission: Permission, permissionAction: Action) => void;
export declare const generatePermissionDescription: (permissions: Permission | Permission[]) => string | boolean;
export declare const checkPermissionSimple: (permission: Permission, userId?: any, userRoles?: any[]) => boolean;
export declare const isPermissionSimple: (permission: unknown) => boolean;
export declare type UserAttributesPermissionFilter = {
$or?: [{
[attributeName: number]: string | number;
}];
};
export declare const buildUserAttributesPermissionFilter: ({ permission, userId, }: {
permission: Permission;
userId: string | number;
}) => UserAttributesPermissionFilter | undefined;
export declare type StatesPermissionFilter = {
$or?: [{
state: {
$in: string[] | number[];
};
}];
};
export declare const buildStatesPermissionFilter: ({ permission, entity, }: {
permission: Permission;
entity: Entity;
}) => StatesPermissionFilter | undefined;
export declare type ValuesPermissionFilter = {
$or?: [{
[attributeName: number]: any;
}];
};
export declare const buildValuesPermissionFilter: ({ permission, }: {
permission: Permission;
}) => ValuesPermissionFilter | undefined;
export declare type LookupsPermissionFilter = {
$or?: [
{
$sub: {
entity: string;
condition: any[];
};
}
];
};
export declare const buildLookupsPermissionFilter: ({ permission, userId, userRoles, input, context, }: {
permission: Permission;
userId?: string | number;
userRoles?: any;
input?: any;
context?: any;
}) => Promise<LookupsPermissionFilter | undefined>;
export declare type PermissionFilterSingle = {
$and?: [
UserAttributesPermissionFilter | StatesPermissionFilter | ValuesPermissionFilter | LookupsPermissionFilter
];
};
export declare const buildPermissionFilterSingle: (permission: Permission, userId?: string | number, userRoles?: any, entity?: Entity, input?: any, context?: any) => Promise<PermissionFilterSingle | undefined>;
export declare type PermissionFilter = {
$or?: [PermissionFilterSingle];
};
export declare const buildPermissionFilter: (_permissions: Permission | Permission[], userId?: string | number, userRoles?: any, entity?: Entity, input?: any, context?: any) => Promise<PermissionFilter | undefined>;
export declare type ActionPermissionFilter = {
$or?: [LookupsPermissionFilter];
};
export declare const buildActionPermissionFilter: (_permissions: () => Permission | Permission[], userId: any, userRoles: any[], action: Action | Subscription, input?: Record<string, unknown>, context?: Context) => Promise<{
where: ActionPermissionFilter;
lookupPermissionEntity: Entity;
}>;
export declare const checkPermissionAdvanced: (data: any, permission: Permission, userId?: any) => boolean;
export declare const hasEmptyPermissions: (_permissions: Permission | Permission[]) => boolean;
export declare const findEmptyEntityPermissions: (permissions: any) => string[];
export declare const processEntityPermissions: (entity: Entity, permissions: PermissionMap, defaultPermissions?: any) => PermissionMap;
export declare const processViewEntityPermissions: (entity: ViewEntity, permissions: PermissionMap, defaultPermissions?: any) => PermissionMap;
export declare const processActionPermissions: (action: Action, permissions: Permission | Permission[]) => Permission | Permission[];