Recuperación de cuenta
Recuperación de cuentas y generación de nuevas credenciales (passkeys) se realiza a través de un OTP (One-Time Password) para validar la identidad del usuario y la autenticidad del email.
Comenzar recuperación
Un nuevo OTP es enviado al usuario cada vez que se solicita usando la función sendOTP. El usuario debe haber sido registrado previamente usando el método signin.
import { sendOTP } from "@noauth/browser";
await sendOTP("[email protected]", {
apiKey: "tu-api-key",
});import { NoAuth } from "@noauth/browser";
const noauth = new NoAuth({ apiKey: "tu-api-key" });
await noauth.otp.create("[email protected]");Alternativas para validar el OTP
Existen 2 alternativas para validar el código OTP de un usuario:
1. Signin con OTP
Una vez que el usuario recibe el OTP, debe iniciar el proceso de autenticación agregando el OTP en las opciones de la función signin. Este método es útil para recuperar cuentas y forzará la creación de un nuevo passkey para el usuario.
import { signin } from "@noauth/browser";
const { verified } = await signin("[email protected]", {
apiKey: "tu-api-key",
otp: "123456",
});import { NoAuth } from "@noauth/browser";
const noauth = new NoAuth({ apiKey: "tu-api-key" });
const { verified } = await noauth.signin("[email protected]", "123456");2. Validar vía Access Token
Cuando el usuario recibe el OTP, puedes validarlo usando un token de acceso existente. Esté método es útil para confirmar autenticidad de un usuario.
import { verifyOTP, signin } from "@noauth/browser";
// Previamente obtenido el token de acceso
const { accessToken } = await signin("[email protected]");
// Validar el OTP con un token de acceso existente
const verified = await verifyOTP(accessToken, "123456", {
apiKey: "tu-api-key",
});import { NoAuth } from "@noauth/browser";
const noauth = new NoAuth({ apiKey: "tu-api-key" });
// Previamente obtenido el token de acceso
const { accessToken } = await noauth.signin("[email protected]");
// Validar el OTP con un token de acceso existente
const verified = await noauth.otp.verify(accessToken, "123456");Delivery del OTP
El OTP puede ser entregado al usuario a través de dos opciones. Puedes configurar cuál opción usar en la configuración de tu aplicación.
Email gestionado por noauth.sh (recomendado para la mayoría de casos)
El OTP es enviado automáticamente al usuario usando los servidores de email de noauth.sh. Esta opción incluye rate limit para prevenir abuso y es la más sencilla de implementar.
Webhook personalizado (para casos avanzados)
Puedes delegar la notificación via webhooks, lo que te da completa libertad para usar cualquier método de notificación (SMS, email personalizado, notificaciones push, etc.) y controlar completamente el flujo de entrega. Para usar esta opción, debes registrar un webhook en la configuración de tu aplicación.