UNPKG

better-auth

Version:

The most comprehensive authentication framework for TypeScript.

118 lines (117 loc) 3.56 kB
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