UNPKG

@rytass/member-base-nestjs-module

Version:

Rytass Member System NestJS Base Module

50 lines (49 loc) 2.26 kB
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>;