@rytass/member-base-nestjs-module
Version:
Rytass Member System NestJS Base Module
43 lines (42 loc) • 1.55 kB
TypeScript
import type { ExecutionContext } from '@nestjs/common';
import type { Enforcer } from 'casbin';
import type { AuthTokenPayloadBase } from './auth-token-payload';
export type CasbinPermissionCheckerParams<TokenPayload extends {
id: string;
account?: string;
domain?: string;
} = AuthTokenPayloadBase> = {
enforcer: Enforcer;
payload: TokenPayload;
actions: [string, string][];
context?: ExecutionContext;
request?: unknown;
};
export type CasbinAuthorizationDecision = {
allowed: boolean;
matchedDomain?: string;
matchedAction?: [string, string];
meta?: Record<string, unknown>;
};
export type CasbinPermissionCheckerSyncResult = boolean | CasbinAuthorizationDecision;
export type CasbinPermissionCheckerResult = Promise<CasbinPermissionCheckerSyncResult>;
export type CasbinPermissionChecker<TokenPayload extends {
id: string;
account?: string;
domain?: string;
} = AuthTokenPayloadBase> = (params: CasbinPermissionCheckerParams<TokenPayload>) => CasbinPermissionCheckerResult;
export type CasbinDomainResolverParams<TokenPayload extends {
id: string;
account?: string;
domain?: string;
} = AuthTokenPayloadBase> = {
context?: ExecutionContext;
request?: unknown;
payload: TokenPayload;
actions: [string, string][];
};
export type CasbinDomainResolver<TokenPayload extends {
id: string;
account?: string;
domain?: string;
} = AuthTokenPayloadBase> = (params: CasbinDomainResolverParams<TokenPayload>) => string | string[] | Promise<string | string[]>;