@lanaqi/rsr
Version:
216 lines (215 loc) • 4.6 kB
TypeScript
import type { PathPattern } from '../bridge';
import type { AccessPermission, AccessPermissions } from './common';
/**
* 资源模式
*/
export type ResourcePattern = PathPattern<string> | string;
/**
* 资源模式集合
*/
export type ResourcePatterns = ResourcePattern[];
/**
* 资源标签
*/
export type ResourceLabel = string;
/**
* 资源标签集合
*/
export type ResourceLabels = ResourceLabel[];
/**
* 访问资源
*/
export interface AccessResource {
/**
* 获取模式集合
*/
getPatterns(): Set<ResourcePattern>;
/**
* 获取权限集合
*/
getPermissions(): Set<AccessPermission>;
/**
* 获取标签集合
*/
getLabels(): Set<ResourceLabel>;
/**
* 是否包含模式
* @param pattern 模式
*/
hasPattern(pattern: ResourcePattern): boolean;
/**
* 是否包含权限
* @param permission 权限
*/
hasPermission(permission: AccessPermission): boolean;
/**
* 是否包含标签
* @param label 标签
*/
hasLabel(label: ResourceLabel): boolean;
/**
* 是否匿名的
*/
isAnonymous(): boolean;
/**
* 是否已认证
*/
isAuthenticated(): boolean;
/**
* 是否已授权
*/
isAuthorized(): boolean;
/**
* 是否已签名
*/
isSignatured(): boolean;
/**
* 是否始终签名
*/
isAlwaysSignature(): boolean;
/**
* 获取基础路径
*/
getBasename(): string | undefined;
/**
* 设置基础路径
*/
setBasename(basename: string | undefined): void;
}
/**
* 访问资源集合
*/
export type AccessResources = AccessResource[];
/**
* 简单资源
*/
export declare class SimpleResource implements AccessResource {
/**
* 权限:匿名的
*/
static readonly PERMISSION_ANONYMOUS = "__aqi_rsr_anonymous";
/**
* 权限:已认证
*/
static readonly PERMISSION_AUTHENTICATED = "__aqi_rsr_authenticated";
/**
* 权限:已授权
*/
static readonly PERMISSION_AUTHORIZED = "__aqi_rsr_authorized";
/**
* 标签:已签名
*/
static readonly LABEL_SIGNATURED = "__aqi_rsr_signatured";
/**
* 标签:始终签名
*/
static readonly LABEL_ALWAYS_SIGNATURE = "__aqi_rsr_always_signature";
/**
* 模式集合
* @private
*/
private readonly patterns;
/**
* 权限集合
* @private
*/
private readonly permissions;
/**
* 标签集合
* @private
*/
private readonly labels;
/**
* 匿名的
* @private
*/
private readonly anonymous;
/**
* 已认证
* @private
*/
private readonly authenticated;
/**
* 已授权
* @private
*/
private readonly authorized;
/**
* 已签名
* @private
*/
private readonly signatured;
/**
* 始终签名
* @private
*/
private readonly alwaysSignature;
/**
* 基础路径
* @private
*/
private basename?;
/**
* 构造函数
* @param patterns 模式集合
* @param permissions 权限集合
* @param labels 标签集合
* @param basename 基础路径
*/
constructor(patterns: ResourcePatterns | Set<ResourcePattern>, permissions: AccessPermissions | Set<AccessPermission>, labels: ResourceLabels | Set<ResourceLabel>, basename?: string);
/**
* 获取模式集合
*/
getPatterns(): Set<ResourcePattern>;
/**
* 获取权限集合
*/
getPermissions(): Set<AccessPermission>;
/**
* 获取标签集合
*/
getLabels(): Set<ResourceLabel>;
/**
* 是否包含模式
* @param pattern 模式
*/
hasPattern(pattern: ResourcePattern): boolean;
/**
* 是否包含权限
* @param permission 权限
*/
hasPermission(permission: AccessPermission): boolean;
/**
* 是否包含标签
* @param label 标签
*/
hasLabel(label: ResourceLabel): boolean;
/**
* 是否匿名的
*/
isAnonymous(): boolean;
/**
* 是否已认证
*/
isAuthenticated(): boolean;
/**
* 是否已授权
*/
isAuthorized(): boolean;
/**
* 是否已签名
*/
isSignatured(): boolean;
/**
* 是否始终签名
*/
isAlwaysSignature(): boolean;
/**
* 获取基础路径
*/
getBasename(): string | undefined;
/**
* 设置基础路径
*/
setBasename(basename: string | undefined): void;
}