@hz-9/a5-tenant
Version:
Tenant module for the @hz-9/a5-* series of repositories.
157 lines (139 loc) • 3.6 kB
TypeScript
/**
* @packageDocumentation
* A5 Tenant Module - Tenant management and validation for A5 framework
*/
import { A5TenantGuardConstructorOptions as A5TenantGuardConstructorOptions_2 } from '../interfaces';
import { CanActivate } from '@nestjs/common';
import { ConfigurableModuleCls } from '@nestjs/common';
import { ExecutionContext } from '@nestjs/common';
/**
* @public
*/
export declare const A5_TENANT_ID_HEADER: "x-tenant-id";
/**
* @public
*/
export declare const A5_TENANT_ID_PARAM: "tenantId";
/**
* @public
*/
export declare const A5_TENANT_MODULE_OPTIONS: string | symbol;
/**
* @public
*/
export declare const A5_TENANT_SERVICE_TOKEN: "A5_TENANT_SERVICE_TOKEN";
/**
* @public
*/
export declare const A5TenantConfigurableModule: ConfigurableModuleCls<A5TenantGuardConstructorOptions_2, "forRoot", "createOptions", {
isGlobal: boolean;
}>;
/**
* @public
*/
export declare const A5TenantCurrentTenant: (...dataOrPipes: unknown[]) => ParameterDecorator;
/**
* @public
*/
export declare const A5TenantCurrentTenantId: (...dataOrPipes: unknown[]) => ParameterDecorator;
/**
* 租户检查 Guard
*
* 从 headers 或 route params 中获取租户 ID,并检查租户是否存在
*
* @public
*/
export declare class A5TenantGuard implements CanActivate {
private readonly tenantService;
private readonly options;
constructor(options: A5TenantGuardConstructorOptions, tenantService: A5TenantService);
canActivate(context: ExecutionContext): Promise<boolean>;
private parseFromHeaders;
/**
* 从 headers 中获取租户 ID
*
* @param request - FastifyRequest 对象
* @returns 租户 ID 或 undefined
*/
private getTenantIdFromHeaders;
}
/**
* @public
*/
export declare interface A5TenantGuardConstructorOptions {
/**
* 是否启用空白自动转换为默认租户功能
*
* @defaultValue true
*/
emptyToDefault?: boolean;
/**
* 默认租户 ID
*
* @defaultValue '-'
*/
defaultTenantId?: string;
}
/**
* @public
*/
export declare type A5TenantGuardOptions = Required<A5TenantGuardConstructorOptions>;
/**
* @public
*/
export declare class A5TenantModule extends A5TenantConfigurableModule {
}
/**
* A5 缓存模块异步配置选项接口
*
* @public
*/
export declare interface A5TenantModuleAsyncOptions {
/**
* 工厂函数,返回 A5TenantModuleOptions 配置对象
*/
useFactory?: (...args: unknown[]) => Promise<A5TenantModuleOptions> | A5TenantModuleOptions;
/**
* 需要注入到 useFactory 函数中的依赖项
*/
inject?: unknown[];
/**
* 需要导入的模块列表
*/
imports?: unknown[];
}
/**
* A5 缓存模块配置选项
*
* @public
*/
export declare type A5TenantModuleOptions = A5TenantGuardConstructorOptions;
/**
* @public
*/
export declare interface A5TenantPayload {
/**
* 租户 ID
*/
tenantId: string;
}
/**
* @public
*/
export declare interface A5TenantService {
/**
* 获取租户信息,如果没有,则返回 null
*
* @param tenantId - 租户 ID
* @returns 检查结果
*/
getTenant(tenantId: string): Promise<A5TenantPayload | null>;
/**
* 返回默认租户信息
*
* @param tenantId - 租户 ID
* @returns 检查结果
*/
getDefaultTenant(defaultTenantId: string): Promise<A5TenantPayload>;
}
export { }