UNPKG

@restorecommerce/acs-client

Version:

Access Control Service Client

39 lines 2.85 kB
import { type CallOptions } from 'nice-grpc'; import { Client } from '@restorecommerce/grpc-client'; import { UserServiceDefinition } from '@restorecommerce/rc-grpc-clients/dist/generated-server/io/restorecommerce/user'; import { ResourceList } from '@restorecommerce/rc-grpc-clients/dist/generated-server/io/restorecommerce/resource_base'; import { Operation, ACSResource, AuthZAction, ACSClientContext } from './interfaces'; export type DatabaseProvider = 'arangoDB' | 'postgres'; export type ACSClientContextFactory<T extends ResourceList> = (self: any, request: T, ...args: any) => Promise<ACSClientContext>; export type ResourceFactory<T extends ResourceList> = (self: any, request: T, ...args: any) => Promise<ACSResource[]>; export type DatabaseSelector<T extends ResourceList> = (self: any, request: T, ...args: any) => Promise<DatabaseProvider>; export type MetaDataInjector<T extends ResourceList> = (self: any, request: T, ...args: any) => Promise<T>; export type SubjectResolver<T extends ResourceList> = (self: any, request: T, ...args: any) => Promise<T>; export interface AccessControlledService { readonly __userService: Client<UserServiceDefinition>; readonly __acsDatabaseProvider: DatabaseProvider; } export declare const DefaultACSClientContextFactory: <T extends ResourceList>(self: any, request: T, context: any) => Promise<ACSClientContext>; export declare function DefaultResourceFactory<T extends ResourceList>(...resourceNames: string[]): ResourceFactory<T>; export declare const DefaultSubjectResolver: <T extends ResourceList>(self: any, request: T, ...args: any) => Promise<T>; export declare const DefaultMetaDataInjector: <T extends ResourceList>(self: any, request: T, ...args: any) => Promise<T>; export declare enum ByPass { SUBJECT = "SUBJECT", META = "META", ACS = "ACS" } export declare function setByPass(...args: ByPass[]): CallOptions; export declare function access_controlled_service<T extends { new (...args: any): any; }>(baseService: T): T; export declare function access_controlled_function<T extends ResourceList>(kwargs: { action: AuthZAction; operation: Operation; context?: ACSClientContext | ACSClientContextFactory<T>; resource?: ACSResource[] | ResourceFactory<T>; database?: DatabaseProvider | DatabaseSelector<T>; useCache?: boolean; }): (target: any, propertyName: string, descriptor: TypedPropertyDescriptor<any>) => void; export declare function resolves_subject<T extends ResourceList>(subjectResolver?: SubjectResolver<T>): (target: any, propertyName: string, descriptor: TypedPropertyDescriptor<any>) => void; export declare function injects_meta_data<T extends ResourceList>(metaDataInjector?: MetaDataInjector<T>): (target: any, propertyName: string, descriptor: TypedPropertyDescriptor<any>) => void; //# sourceMappingURL=decorators.d.ts.map