@lanaqi/rsr
Version:
95 lines (94 loc) • 2.37 kB
TypeScript
import type { AccessPath } from './common';
import type { AccessContext } from './context';
import type { AccessResource } from './resource';
/**
* 阻断处理器
* @param context 上下文
* @param currentPath 当前路径
* @param currentResource 当前资源
*/
export type BlockHandler = (context: AccessContext, currentPath: AccessPath, currentResource: AccessResource | null) => boolean;
/**
* 访问阻断器
*/
export interface AccessBlocker {
/**
* 进行阻断
* @param context 上下文
* @param currentPath 当前路径
* @param currentResource 当前资源
*/
block(context: AccessContext, currentPath: AccessPath, currentResource: AccessResource | null): boolean;
/**
* 注册处理器
* @param handler 处理器
*/
register(handler: BlockHandler): void;
/**
* 注销处理器
* @param handler 处理器
*/
unregister(handler: BlockHandler): void;
}
/**
* 单一阻断器
*/
export declare class SingleBlocker implements AccessBlocker {
/**
* 处理器
* @private
*/
private handler?;
/**
* 进行阻断
* @param context 上下文
* @param currentPath 当前路径
* @param currentResource 当前资源
*/
block(context: AccessContext, currentPath: AccessPath, currentResource: AccessResource): boolean;
/**
* 注册处理器
* @param handler 处理器
*/
register(handler: BlockHandler): void;
/**
* 注销处理器
* @param handler 处理器
*/
unregister(handler: BlockHandler): void;
}
/**
* 多个阻断器
*/
export declare class MultiBlocker implements AccessBlocker {
/**
* 处理器集合
* @private
*/
private readonly handlers;
/**
* 构造函数
*/
constructor();
/**
* 进行阻断
* @param context 上下文
* @param currentPath 当前路径
* @param currentResource 当前资源
*/
block(context: AccessContext, currentPath: AccessPath, currentResource: AccessResource): boolean;
/**
* 注册处理器
* @param handler 处理器
*/
register(handler: BlockHandler): void;
/**
* 注销处理器
* @param handler 处理器
*/
unregister(handler: BlockHandler): void;
/**
* 清理处理器集合
*/
clear(): void;
}