UNPKG

@restorecommerce/acs-client

Version:

Access Control Service Client

80 lines 3.78 kB
import { Subject, DeepPartial } from '@restorecommerce/rc-grpc-clients/dist/generated-server/io/restorecommerce/auth'; import { Request } from '@restorecommerce/rc-grpc-clients/dist/generated-server/io/restorecommerce/access_control'; import { FilterOp } from '@restorecommerce/rc-grpc-clients/dist/generated-server/io/restorecommerce/resource_base'; import { ACSAuthZ } from './authz'; import { ACSClientContext, DecisionResponse, PolicySetRQResponse, ACSResource, AuthZAction, ACSClientOptions } from './interfaces'; export declare const isAllowedRequest: (subject: Subject, resources: ACSResource[], actions: AuthZAction, ctx: ACSClientContext, useCache: boolean) => Promise<DecisionResponse>; /** * It turns an API request as can be found in typical Web frameworks like express, koa etc. * into a proper ACS request. For `whatIsAllowed` operation it returns the filters * to enforce the applicapble poilicies. The response is `Decision` * or policy set reverse query `PolicySetRQ` depending on the requeste operation `isAllowed()` or * `whatIsAllowed()` respectively. * @param {Subject} subject Contains subject information * @param {ACSResource[]} resource Contains resource name, resource instance and optional resource properties * @param {AuthZAction} action Action to be performed on resource * @param {ACSClientContext} ctx Context containing Subject and Context Resources for ACS * @param {Operation} operation Operation to perform `isAllowed` or `whatIsAllowed`, * if this param is missing defaults to `isAllowed` operation * @param {Database} database database used either `arangoDB` or `postgres`, * if this param is missing defaults to `arangoDB` * @param {boolean} useCache by default ACS caching is used, if set to false then ACS cache * is not used and ACS request is made to `access-control-srv` * @returns {DecisionResponse | PolicySetRQResponse} */ export declare const accessRequest: (subject: DeepPartial<Subject>, resource: ACSResource[], action: AuthZAction, ctx: ACSClientContext, options?: ACSClientOptions) => Promise<DecisionResponse | PolicySetRQResponse>; /** * Exposes the isAllowed() api of `access-control-srv` and retruns the response * as `Decision`. * @param {ACSRequest} request input authorization request * @param {ACSContext} ctx Context Object containing requester's subject information * @return {Decision} PERMIT or DENY or INDETERMINATE */ export declare const isAllowed: (request: Request, authZ: ACSAuthZ) => Promise<DecisionResponse>; /** * Exposes the whatIsAllowed() api of `access-control-srv` and retruns the response * a policy set reverse query `PolicySetRQ` * @param {ACSRequest} authZRequest input authorization request * @param {ACSContext} ctx Context Object containing requester's subject information * @return {PolicySetRQ} set of applicable policies and rules for the input request */ export declare const whatIsAllowed: (request: Request, authZ: ACSAuthZ) => Promise<PolicySetRQResponse>; export interface Output { details?: PayloadStatus[]; error?: OutputError; } export interface OutputError { message: string; code: number; } export interface PayloadStatus { payload: any; status: { message: string; code: number; }; } export interface LoginResult { me?: Subject; error?: LoginError; } export interface LoginError { code: string; message: string; } export interface QueryArguments { filters?: FilterOp[]; limit?: any; sort?: any; offset?: any; custom_queries: string[]; custom_arguments: any; } export interface UserQueryArguments extends QueryArguments { user_role: RoleRequest; } export interface RoleRequest { role: string; organizations: string[]; } //# sourceMappingURL=resolver.d.ts.map