Saltar al contenido principal

Restablecimiento de contraseña con verificación de código

En este ejemplo, demostramos cómo restablecer la contraseña de un usuario utilizando un código de verificación enviado por correo electrónico o SMS a través de la API de OneEntry.

✅ Propósito del escenario:

  • El usuario ingresa un correo electrónico o número de teléfono
  • Recibe un código de confirmación (por correo electrónico o SMS)
  • Ingresa el código y la nueva contraseña. La contraseña se está actualizando en OneEntry

✅ Lo que necesitas:

  • Una PROJECT_URL y APP_TOKEN válidos para la autenticación con la API de OneEntry.
  • Usuario registrado

📌 Importante:

  • El método generateCode envía un código a correo/sms.
  • Cambiar la contraseña con código funciona sin autorización del usuario.
  • No manejamos errores en estos ejemplos.
  • Puedes manejar errores en trycatch o en una construcción como "await Promise.catch((error) => error)"

Escenario

1. Importar oneEntry y definir url y token

Ejemplo:

import { defineOneEntry } from 'oneentry';

const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';

2. Crear un cliente API con la función defineOneEntry()

Ejemplo:

const { AuthProvider } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

3. Generar y enviar código con AuthProvider.generateCode() enviado por correo/SMS

Datos:

your-user@email.com

Ejemplo:

const generateCode = await AuthProvider.generateCode(
'email',
emailReg,
'generate_code',
);

4. El usuario ingresa el código recibido por correo/sms

Ejemplo:

const code = prompt('Ingresa el código de verificación:');
Resultado:
547491

5. Revisión del código con AuthProvider.checkCode()

Ejemplo:

const isCodeValid = await AuthProvider.checkCode(
'email',
authData[0].value,
'password_code',
code,
);
Resultado:
true

6. Cambiar la contraseña con AuthProvider.changePassword()

Datos:

your-user@email.com

Ejemplo:

if (isCodeValid) {
const changePassword = await AuthProvider.changePassword(
'email',
emailReg,
1,
code,
'123456',
);
console.log('✅ Contraseña cambiada con éxito', changePassword);
} else {
console.log('❌ Código de verificación inválido');
}
Resultado:
true

7. Autenticación del usuario con AuthProvider.auth()

Datos:

[
{
"marker": "email_reg",
"value": "your-user@email.com"
},
{
"marker": "password_reg",
"value": "123456"
}
]

Ejemplo:

const authResponse = await AuthProvider.auth('email', {
authData,
});
Resultado:
{
"userIdentifier": "your-user@email.com",
"authProviderIdentifier": "email",
"accessToken": "eyJhbGciOiJIUzI1NiIsInR...pZCI6MTYsImF1dGhQ"
"refreshToken": "1745494429101-...-2834edf8"
}

Ejemplo final

// 1. Importar oneEntry y definir PROJECT_URL y APP_TOKEN
import { defineOneEntry } from 'oneentry';

const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';

const emailReg = 'your-user@email.com';

// 2. Crear un cliente API e importar AuthProvider
const { AuthProvider } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

// 3. Generar y enviar código con AuthProvider.generateCode() (correo/SMS)
const generateCode = await AuthProvider.generateCode(
'email',
emailReg,
'auth',
);

// 4. El usuario ingresa el código recibido por correo/sms
const code = prompt('Ingresa el código de verificación:') as string;
setCode(code);

// 5. Revisión del código con AuthProvider.checkCode()
const isCodeValid = await AuthProvider.checkCode(
'email',
authData[0].value,
'password_code',
code,
);

// 6. Cambiar la contraseña con AuthProvider.changePassword() si el código es válido
let changePassword = null;
if (isCodeValid) {
changePassword = await AuthProvider.changePassword(
'email',
emailReg,
1,
code,
'123456',
);
console.log('✅ Contraseña cambiada con éxito', changePassword);
} else {
console.log('❌ Código de verificación inválido');
}

// 7. Autenticación del usuario con AuthProvider.auth()
const authData = [
{
marker: 'email_reg',
value: 'your-user@email.com',
},
{
marker: 'password_reg',
value: '123456',
},
];
const authResponse = await AuthProvider.auth('email', {
authData,
});
console.log(authResponse);