Aller au contenu principal

Réinitialisation du mot de passe avec vérification par code

Dans cet exemple, nous démontrons comment réinitialiser le mot de passe d'un utilisateur en utilisant un code de vérification envoyé par email ou SMS via l'API OneEntry.

✅ Objectif du scénario :

  • L'utilisateur saisit une adresse email ou un numéro de téléphone
  • Reçoit un code de confirmation (par email ou SMS)
  • Saisit le code et le nouveau mot de passe. Le mot de passe est mis à jour dans OneEntry

✅ Ce dont vous avez besoin :

  • Une PROJECT_URL et un APP_TOKEN valides pour l'authentification avec l'API OneEntry.
  • Un utilisateur enregistré

📌 Important :

  • La méthode generateCode envoie un code par email/SMS.
  • Changer le mot de passe avec un code fonctionne sans autorisation de l'utilisateur.
  • Nous ne gérons pas les erreurs dans ces exemples.
  • Vous pouvez gérer les erreurs dans un trycatch ou dans une construction comme "await Promise.catch((error) => error)"

Scénario

1. Importer oneEntry et définir l'url et le token

Exemple :

import { defineOneEntry } from 'oneentry';

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

2. Créer un client API avec la fonction defineOneEntry()

Exemple :

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

3. Générer et envoyer le code avec AuthProvider.generateCode() envoyé par email/SMS

Données :

your-user@email.com

Exemple :

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

4. L'utilisateur saisit le code reçu par email/SMS

Exemple :

const code = prompt('Entrez le code de vérification :');
Résultat :
547491

5. Vérification du code avec AuthProvider.checkCode()

Exemple :

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

6. Changer le mot de passe avec AuthProvider.changePassword()

Données :

your-user@email.com

Exemple :

if (isCodeValid) {
const changePassword = await AuthProvider.changePassword(
'email',
emailReg,
1,
code,
'123456',
);
console.log('✅ Mot de passe changé avec succès', changePassword);
} else {
console.log('❌ Code de vérification invalide');
}
Résultat :
true

7. Authentification de l'utilisateur avec AuthProvider.auth()

Données :

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

Exemple :

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

Exemple final

// 1. Importer oneEntry et définir PROJECT_URL et 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. Créer un client API et importer AuthProvider
const { AuthProvider } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

// 3. Générer et envoyer le code avec AuthProvider.generateCode() (email/SMS)
const generateCode = await AuthProvider.generateCode(
'email',
emailReg,
'auth',
);

// 4. L'utilisateur saisit le code reçu par email/SMS
const code = prompt('Entrez le code de vérification :') as string;
setCode(code);

// 5. Vérification du code avec AuthProvider.checkCode()
const isCodeValid = await AuthProvider.checkCode(
'email',
authData[0].value,
'password_code',
code,
);

// 6. Changer le mot de passe avec AuthProvider.changePassword() si le code est valide
let changePassword = null;
if (isCodeValid) {
changePassword = await AuthProvider.changePassword(
'email',
emailReg,
1,
code,
'123456',
);
console.log('✅ Mot de passe changé avec succès', changePassword);
} else {
console.log('❌ Code de vérification invalide');
}

// 7. Authentification de l'utilisateur avec 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);