UNPKG

shyft

Version:

Model driven GraphQL API framework

116 lines (115 loc) 5.47 kB
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[];