@rytass/member-base-nestjs-module
Version:
Rytass Member System NestJS Base Module
50 lines (49 loc) • 2.26 kB
TypeScript
import type { TypeORMAdapterOptions } from 'typeorm-adapter';
import type { BaseMemberEntity } from '../models/base-member.entity';
import type { ReflectableDecorator } from '@nestjs/core';
import type { OAuth2Provider } from './oauth2-provider.interface';
import type { CasbinDomainResolver, CasbinPermissionCheckerParams, CasbinPermissionCheckerResult } from './casbin-permission';
export interface MemberBaseModuleOptionsDTO<MemberEntity extends BaseMemberEntity = BaseMemberEntity, TokenPayload extends {
id: string;
account?: string;
domain?: string;
} = Pick<MemberEntity, 'id' | 'account'> & {
domain?: string;
}> {
loginFailedBanThreshold?: number;
resetPasswordTokenExpiration?: number;
resetPasswordTokenSecret?: string;
cookieMode?: boolean;
loginFailedAutoUnlockSeconds?: number;
accessTokenSecret?: string;
accessTokenExpiration?: number;
refreshTokenSecret?: string;
refreshTokenExpiration?: number;
onlyResetRefreshTokenExpirationByPassword?: boolean;
enableGlobalGuard?: boolean;
casbinAdapterOptions?: TypeORMAdapterOptions;
casbinModelString?: string;
casbinPermissionDecorator?: ReflectableDecorator<[string, string][]>;
casbinPermissionChecker?: (params: CasbinPermissionCheckerParams<TokenPayload>) => CasbinPermissionCheckerResult;
casbinDomainResolver?: CasbinDomainResolver<TokenPayload>;
memberEntity?: new () => MemberEntity;
passwordShouldIncludeUppercase?: boolean;
passwordShouldIncludeLowercase?: boolean;
passwordShouldIncludeDigit?: boolean;
passwordShouldIncludeSpecialCharacters?: boolean;
passwordMinLength?: number;
passwordPolicyRegExp?: RegExp;
passwordHistoryLimit?: number;
passwordAgeLimitInDays?: number;
forceRejectLoginOnPasswordExpired?: boolean;
customizedJwtPayload?: (member: MemberEntity) => TokenPayload;
oauth2Providers?: OAuth2Provider[];
oauth2ClientDestUrl?: string;
}
export type MemberBaseModuleOptions<MemberEntity extends BaseMemberEntity = BaseMemberEntity, TokenPayload extends {
id: string;
account?: string;
domain?: string;
} = Pick<MemberEntity, 'id' | 'account'> & {
domain?: string;
}> = MemberBaseModuleOptionsDTO<MemberEntity, TokenPayload>;