@getanthill/datastore
Version:
Event-Sourced Datastore
26 lines (25 loc) • 1.7 kB
TypeScript
import { Services, authorizations as authz } from '../typings';
import Ajv from 'ajv';
import { Obligation } from '../typings/authorizations';
export interface AuthzConfig {
noPolicyVerb: authz.PolicyVerb;
}
export default class Authz {
private config;
private services;
private validator;
constructor(config: AuthzConfig, services: Services);
static getScopes(scope: authz.Scope): Array<authz.Scope>;
applyObligations(obj: any, obligations: Array<Obligation>): any;
static areRulesValidated(validations: Array<authz.RuleValidation>): boolean;
static getDecision(decisions: Array<authz.Decision>, config: AuthzConfig): authz.Decision;
static isAllowed(decisions: Array<authz.Decision>): boolean;
static validateScope(validator: Ajv, schema: authz.JSONSchema, obj: object): authz.ScopeValidation;
static validateRules(validator: Ajv, request: authz.AuthorizationRequest, attributes: authz.RequestAttributes, rules: Array<authz.Rule>): Array<authz.RuleValidation>;
static validatePolicy(validator: Ajv, request: authz.AuthorizationRequest, attributes: authz.RequestAttributes, policy: authz.Policy): authz.Decision;
static validatePolicies(validator: Ajv, request: authz.AuthorizationRequest, attributes: authz.RequestAttributes, policies: Array<authz.Policy>, config: AuthzConfig): authz.Decision;
getScopeAttributes(scope: authz.Scope): Promise<Array<authz.Attribute>>;
getRequestAttributes(request: authz.AuthorizationRequest): Promise<authz.RequestAttributes>;
getRequestPolicies(request: authz.AuthorizationRequest): Promise<Array<authz.Policy>>;
authorize(request: authz.AuthorizationRequest): Promise<authz.Decision>;
}