@ackplus/nest-aut-合同
共享类型脚本类型 @ackplus/nest-auth 生态系统. 只有类型——零运行时间代码,零捆绑成本.
此软件包为何存在
后端,JS客户端,和React层都需要相同的类型——DTO,enums,域界面. 此软件包是真理的单一来源, 所以更改为服务器上的请求/响应形状会在编译时而不是运行时打破客户端 .
其消耗者为:
@ackplus/nest-auth— NestJS后端模块@ackplus/nest-auth-client——框架不可知JS/TS客户端@ackplus/nest-auth-react- 反应提供者、钩子、警卫
你通常不直接安装它——它是所有三个的过渡依赖. 当您想要在不拖动完整后端或客户端软件包的情况下, 直接安装它 .
安装
pnpm add @ackplus/nest-auth-contracts
无害环境管理和共同JS都在一揽子计划中建造了船舶。 无对等依存.
出口的东西
数字
import {
NestAuthMFAMethodEnum, // 'email' | 'sms' | 'totp'
NestAuthOTPTypeEnum, // 'passwordless_login' | 'magic_link_login' | 'password_reset' | 'email_verification' | 'phone_verification' | 'mfa'
TenantModeEnum, // 'isolated' | 'shared'
} from '@ackplus/nest-auth-contracts';
请求 DTO
ILoginRequest, (中文(简体) ), ISignupRequest, (中文(简体) ), IRefreshRequest, (中文(简体) ), ISwitchTenantRequest, (中文(简体) ), IVerify2faRequest, (中文(简体) ), IToggleMfaRequest, (中文(简体) ), IVerifyTotpSetupRequest, (中文(简体) ), IForgotPasswordRequest, (中文(简体) ), IResetPasswordWithTokenRequest, (中文(简体) ), IChangePasswordRequest, (中文(简体) ), IVerifyForgotPasswordOtpRequest, (中文(简体) ), IVerifyEmailRequest, (中文(简体) ), IVerifyPhoneRequest, (中文(简体) ), IPasswordlessSendRequest, (中文(简体) ), IInitializeAdminRequest, (中文(简体) ), ICreateRoleInput, (中文(简体) ), IUpdateRoleInput, (中文(简体) ), IUpdatePermissionInput .
反应 DTOs
IAuthResponse, (中文(简体) ), ITokenPair, (中文(简体) ), IUserResponse, (中文(简体) ), ISessionUserData, (中文(简体) ), IMessageResponse, (中文(简体) ), IVerify2faResponse, (中文(简体) ), IMfaStatusResponse, (中文(简体) ), IMfaDevice, (中文(简体) ), ITotpSetupResponse, (中文(简体) ), IVerifyOtpResponse, (中文(简体) ), ISessionVerifyResponse .
证书型工会
ILoginCredentials = IEmailCredentials | IPhoneCredentials | ISocialCredentials | IPasswordlessOtpLoginCredentials
域界面
INestAuthUser, (中文(简体) ), INestAuthIdentity, (中文(简体) ), INestAuthSession, (中文(简体) ), INestAuthAccessKey, (中文(简体) ), INestAuthOTP, (中文(简体) ), INestAuthMFASecret, (中文(简体) ), INestAuthTrustedDevice, (中文(简体) ), INestAuthRole, (中文(简体) ), INestAuthPermission, (中文(简体) ), INestAuthTenant, (中文(简体) ), INestAuthUserAccess
配置接口
IEmailAuthConfig, (中文(简体) ), IPhoneAuthConfig, (中文(简体) ), IMfaConfig, (中文(简体) ), IRegistrationConfig, (中文(简体) ), INestAuthTenantOptions, (中文(简体) ), ITenantsConfig, (中文(简体) ), ISsoConfig, (中文(简体) ), IUiConfig .
普通进口
import {
// Enums
NestAuthMFAMethodEnum,
NestAuthOTPTypeEnum,
TenantModeEnum,
// Request/response DTOs
ILoginRequest,
ISignupRequest,
IAuthResponse,
IMfaStatusResponse,
ISessionUserData,
// Domain interfaces
INestAuthUser,
INestAuthSession,
INestAuthRole,
INestAuthTenant,
} from '@ackplus/nest-auth-contracts';
async function login(req: ILoginRequest): Promise<IAuthResponse> {
return fetch('/auth/login', { method: 'POST', body: JSON.stringify(req) }).then((r) => r.json());
}
命名公约
- 域实体 →
INestAuth{Entity}(例如:.INestAuthUser, (中文(简体) ),INestAuthRole(中文(简体) ) - 数字 →
NestAuth{Name}Enum(例如:.NestAuthMFAMethodEnum(中文(简体) ) - 请求 DTO →
I{Feature}Request - 反应 DTOs →
I{Feature}Response - 配置 →
I{Feature}Config或者说I{Feature}Options
配套软件包
| 软件包 | 目的 |
|---|---|
@ackplus/nest-auth | NestJS 后端模块 |
@ackplus/nest-auth-client | 框架不可知JS/TS客户端 |
@ackplus/nest-auth-react | 反应提供者、钩子、警卫 |
所有4个包都与同版本号一起放出. 把它们绑在同一个版本.