@rytass/member-base-nestjs-module
Version:
Rytass Member System NestJS Base Module
40 lines (39 loc) • 1.78 kB
TypeScript
import type { TypeORMAdapterOptions } from 'typeorm-adapter';
import type { BaseMemberEntity } from '../models/base-member.entity';
import type { ReflectableDecorator } from '@nestjs/core';
import type { Enforcer } from 'casbin';
import type { OAuth2Provider } from './oauth2-provider.interface';
export interface MemberBaseModuleOptionsDto<MemberEntity extends BaseMemberEntity = BaseMemberEntity, TokenPayload extends Record<string, any> = Pick<MemberEntity, 'id' | 'account'>> {
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<any[]>;
casbinPermissionChecker?: ({ enforcer, payload, actions, }: {
enforcer: Enforcer;
payload: TokenPayload;
actions: any[];
}) => Promise<boolean>;
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;
}