UNPKG

@hz-9/a5-tenant

Version:

Tenant module for the @hz-9/a5-* series of repositories.

157 lines (139 loc) 3.6 kB
/** * @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 { }