better-auth
Version:
The most comprehensive authentication framework for TypeScript.
118 lines (117 loc) • 3.56 kB
text/typescript
import { User } from "../../types/models.mjs";
import { InferOptionSchema } from "../../types/plugins.mjs";
import "../../types/index.mjs";
import { schema } from "./schema.mjs";
import { Awaitable, GenericEndpointContext } from "@better-auth/core";
//#region src/plugins/phone-number/types.d.ts
interface UserWithPhoneNumber extends User {
phoneNumber: string;
phoneNumberVerified: boolean;
}
interface PhoneNumberOptions {
/**
* Length of the OTP code
* @default 6
*/
otpLength?: number | undefined;
/**
* Send OTP code to the user
*
* @param phoneNumber
* @param code
* @returns
*/
sendOTP: (data: {
phoneNumber: string;
code: string;
}, ctx?: GenericEndpointContext | undefined) => Awaitable<void>;
/**
* Custom OTP verification function
*
* If provided, this function will be called instead of the internal verification logic.
* This is useful when using SMS providers that handle their own OTP generation and verification.
*
* @param data - Contains phone number and OTP code
* @param request - The request object
* @returns true if OTP is valid, false otherwise
*/
verifyOTP?: ((data: {
phoneNumber: string;
code: string;
}, ctx?: GenericEndpointContext) => Awaitable<boolean>) | undefined;
/**
* a callback to send otp on user requesting to reset their password
*
* @param data - contains phone number and code
* @param request - the request object
* @returns
*/
sendPasswordResetOTP?: ((data: {
phoneNumber: string;
code: string;
}, ctx?: GenericEndpointContext) => Awaitable<void>) | undefined;
/**
* Expiry time of the OTP code in seconds
* @default 300
*/
expiresIn?: number | undefined;
/**
* Function to validate phone number
*
* by default any string is accepted
*/
phoneNumberValidator?: ((phoneNumber: string) => Awaitable<boolean>) | undefined;
/**
* Require a phone number verification before signing in
*
* @default false
*/
requireVerification?: boolean | undefined;
/**
* Callback when phone number is verified
*/
callbackOnVerification?: ((data: {
phoneNumber: string;
user: UserWithPhoneNumber;
}, ctx?: GenericEndpointContext) => Awaitable<void>) | undefined;
/**
* Sign up user after phone number verification
*
* the user will be signed up with the temporary email
* and the phone number will be updated after verification
*/
signUpOnVerification?: {
/**
* When a user signs up, a temporary email will be need to be created
* to sign up the user. This function should return a temporary email
* for the user given the phone number
*
* @param phoneNumber
* @returns string (temporary email)
*/
getTempEmail: (phoneNumber: string) => string;
/**
* When a user signs up, a temporary name will be need to be created
* to sign up the user. This function should return a temporary name
* for the user given the phone number
*
* @param phoneNumber
* @returns string (temporary name)
*
* @default phoneNumber - the phone number will be used as the name
*/
getTempName?: (phoneNumber: string) => string;
} | undefined;
/**
* Custom schema for the admin plugin
*/
schema?: InferOptionSchema<typeof schema> | undefined;
/**
* Allowed attempts for the OTP code
* @default 3
*/
allowedAttempts?: number | undefined;
}
//#endregion
export { PhoneNumberOptions, UserWithPhoneNumber };
//# sourceMappingURL=types.d.mts.map