111 lines
3.1 KiB
TypeScript

/**
* Auth Domain - Contract
*
* Constants and types for the authentication domain.
* All validated types are derived from schemas (see schema.ts).
*/
// ============================================================================
// Authentication Error Codes
// ============================================================================
export const AUTH_ERROR_CODE = {
INVALID_CREDENTIALS: "INVALID_CREDENTIALS",
EMAIL_NOT_VERIFIED: "EMAIL_NOT_VERIFIED",
ACCOUNT_LOCKED: "ACCOUNT_LOCKED",
MFA_REQUIRED: "MFA_REQUIRED",
INVALID_TOKEN: "INVALID_TOKEN",
TOKEN_EXPIRED: "TOKEN_EXPIRED",
PASSWORD_TOO_WEAK: "PASSWORD_TOO_WEAK",
EMAIL_ALREADY_EXISTS: "EMAIL_ALREADY_EXISTS",
WHMCS_ACCOUNT_NOT_FOUND: "WHMCS_ACCOUNT_NOT_FOUND",
SALESFORCE_ACCOUNT_NOT_FOUND: "SALESFORCE_ACCOUNT_NOT_FOUND",
LINKING_FAILED: "LINKING_FAILED",
} as const;
export type AuthErrorCode = (typeof AUTH_ERROR_CODE)[keyof typeof AUTH_ERROR_CODE];
// ============================================================================
// Token Type Constants
// ============================================================================
export const TOKEN_TYPE = {
BEARER: "Bearer",
} as const;
export type TokenTypeValue = (typeof TOKEN_TYPE)[keyof typeof TOKEN_TYPE];
// ============================================================================
// Gender Constants
// ============================================================================
export const GENDER = {
MALE: "male",
FEMALE: "female",
OTHER: "other",
} as const;
export type GenderValue = (typeof GENDER)[keyof typeof GENDER];
// ============================================================================
// Security Configuration Constants
// ============================================================================
/**
* Password reset token configuration
* Single-use tokens tracked in Redis
*/
export const PASSWORD_RESET_CONFIG = {
/** Time-to-live in seconds (15 minutes) */
TTL_SECONDS: 900,
/** Tokens can only be used once */
SINGLE_USE: true,
} as const;
/**
* OTP (One-Time Password) configuration
* Used for email verification in get-started flow
*/
export const OTP_CONFIG = {
/** Time-to-live in seconds (10 minutes) */
TTL_SECONDS: 600,
/** Maximum verification attempts before invalidation */
MAX_ATTEMPTS: 3,
/** Length of generated code */
CODE_LENGTH: 6,
} as const;
// ============================================================================
// Re-export Types from Schema (Schema-First Approach)
// ============================================================================
export type {
// Request types
LoginRequest,
SignupRequest,
PasswordResetRequest,
ResetPasswordRequest,
SetPasswordRequest,
ChangePasswordRequest,
LinkWhmcsRequest,
ValidateSignupRequest,
UpdateCustomerProfileRequest,
AccountStatusRequest,
SsoLinkRequest,
CheckPasswordNeededRequest,
RefreshTokenRequest,
// Token types
AuthTokens,
AuthSession,
PasswordResetTokenPayload,
// Response types
AuthResponse,
SignupResult,
PasswordChangeResult,
SsoLinkResponse,
CheckPasswordNeededResponse,
LinkWhmcsResponse,
// Error types
AuthError,
} from "./schema.js";