UNPKG

@lanaqi/rsr

Version:
184 lines (183 loc) 4.61 kB
import { AccessBehave, AccessDecision, type AccessPath } from './common'; import type { AccessContext } from './context'; /** * 访问处理器 */ export interface AccessHandler { /** * 没有资源 * @param context 上下文 */ notResource(context: AccessContext): AccessBehave; /** * 没有认证 * @param context 上下文 */ notAuthentication(context: AccessContext): AccessBehave; /** * 无效认证 * @param context 上下文 */ invalidAuthentication(context: AccessContext): AccessBehave; /** * 没有授权 * @param context 上下文 */ notAuthorization(context: AccessContext): AccessBehave; /** * 没有签名 * @param context 上下文 */ notSignature(context: AccessContext): AccessBehave; /** * 访问拒绝 * @param context 上下文 */ accessDenied(context: AccessContext): AccessBehave; /** * 允许访问 * @param context 上下文 */ allowAccess(context: AccessContext): AccessBehave; /** * 错误决策 * @param context 上下文 * @param decision 决策 */ errorDecision(context: AccessContext, decision: AccessDecision): void; } /** * 行为路径 */ export type BehavePath = string | Partial<AccessPath>; /** * 行为配置 */ export type BehaveConfig = { /** * 没有资源路径值 */ readonly notResourcePath?: BehavePath; /** * 没有资源函数 * @param context 上下文 */ readonly notResourceFunc?: (context: AccessContext) => AccessBehave; /** * 没有认证路径值 */ readonly notAuthenticationPath?: BehavePath; /** * 没有认证函数 * @param context 上下文 */ readonly notAuthenticationFunc?: (context: AccessContext) => AccessBehave; /** * 无效认证路径值 */ readonly invalidAuthenticationPath?: BehavePath; /** * 无效认证函数 * @param context 上下文 */ readonly invalidAuthenticationFunc?: (context: AccessContext) => AccessBehave; /** * 没有授权路径值 */ readonly notAuthorizationPath?: BehavePath; /** * 没有授权函数 * @param context 上下文 */ readonly notAuthorizationFunc?: (context: AccessContext) => AccessBehave; /** * 没有签名路径值 */ readonly notSignaturePath?: BehavePath; /** * 没有签名函数 * @param context 上下文 */ readonly notSignatureFunc?: (context: AccessContext) => AccessBehave; /** * 拒绝访问路径值 */ readonly accessDeniedPath?: BehavePath; /** * 拒绝访问函数 * @param context 上下文 */ readonly accessDeniedFunc?: (context: AccessContext) => AccessBehave; /** * 允许访问函数 * @param context 上下文 */ readonly allowAccessFunc?: (context: AccessContext) => void; /** * 错误决策函数 * @param context 上下文 * @param decision 决策 */ readonly errorDecisionFunc?: (context: AccessContext, decision: AccessDecision) => void; }; /** * 行为处理器 */ export declare class BehaveHandler implements AccessHandler { /** * 行为配置 * @private */ private _config; /** * 构造函数 * @param config 行为配置 */ constructor(config: BehaveConfig); /** * 覆盖配置 * @param config 行为配置 */ config(config: BehaveConfig): void; /** * 没有资源 * @param context 上下文 */ notResource(context: AccessContext): AccessBehave; /** * 没有认证 * @param context 上下文 */ notAuthentication(context: AccessContext): AccessBehave; /** * 无效认证 * @param context 上下文 */ invalidAuthentication(context: AccessContext): AccessBehave; /** * 没有授权 * @param context 上下文 */ notAuthorization(context: AccessContext): AccessBehave; /** * 没有签名 * @param context 上下文 */ notSignature(context: AccessContext): AccessBehave; /** * 拒绝访问 * @param context 上下文 */ accessDenied(context: AccessContext): AccessBehave; /** * 允许访问 * @param context 上下文 */ allowAccess(context: AccessContext): AccessBehave; /** * 错误决策 * @param context 上下文 * @param decision 决策 */ errorDecision(context: AccessContext, decision: AccessDecision): void; }