انتقل إلى المحتوى الرئيسي

إعادة تعيين كلمة المرور مع التحقق من الرمز

في هذا المثال، نوضح كيفية إعادة تعيين كلمة مرور المستخدم باستخدام رمز تحقق يتم إرساله عبر البريد الإلكتروني أو الرسائل القصيرة من خلال واجهة برمجة التطبيقات OneEntry.

✅ هدف السيناريو:

  • يدخل المستخدم بريدًا إلكترونيًا أو رقم هاتف
  • يتلقى رمز تأكيد (عبر البريد الإلكتروني أو الرسائل القصيرة)
  • يدخل الرمز وكلمة المرور الجديدة. يتم تحديث كلمة المرور في OneEntry

✅ ما تحتاجه:

  • عنوان PROJECT_URL و APP_TOKEN صالحين للمصادقة مع واجهة برمجة التطبيقات OneEntry.
  • مستخدم مسجل

📌 مهم:

  • ترسل طريقة generateCode رمزًا إلى البريد الإلكتروني/الرسائل القصيرة.
  • تغيير كلمة المرور باستخدام الرمز يعمل بدون تفويض المستخدم.
  • لا نتعامل مع الأخطاء في هذه الأمثلة.
  • يمكنك التعامل مع الأخطاء في trycatch أو في بناء مثل "await Promise.catch((error) => error)"

السيناريو

1. استيراد oneEntry وتعريف url و token

مثال:

import { defineOneEntry } from 'oneentry';

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

2. إنشاء عميل API باستخدام دالة defineOneEntry()

مثال:

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

3. توليد وإرسال الرمز باستخدام AuthProvider.generateCode() المرسل عبر البريد الإلكتروني/الرسائل القصيرة

البيانات:

your-user@email.com

مثال:

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

4. يدخل المستخدم الرمز الذي تم استلامه عبر البريد الإلكتروني/الرسائل القصيرة

مثال:

const code = prompt('أدخل رمز التحقق:');
النتيجة:
547491

5. مراجعة الرمز باستخدام AuthProvider.checkCode()

مثال:

const isCodeValid = await AuthProvider.checkCode(
'email',
authData[0].value,
'password_code',
code,
);
النتيجة:
true

6. تغيير كلمة المرور باستخدام AuthProvider.changePassword()

البيانات:

your-user@email.com

مثال:

if (isCodeValid) {
const changePassword = await AuthProvider.changePassword(
'email',
emailReg,
1,
code,
'123456',
);
console.log('✅ تم تغيير كلمة المرور بنجاح', changePassword);
} else {
console.log('❌ رمز التحقق غير صالح');
}
النتيجة:
true

7. مصادقة المستخدم باستخدام AuthProvider.auth()

البيانات:

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

مثال:

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

المثال النهائي

// 1. استيراد oneEntry وتعريف PROJECT_URL و 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. إنشاء عميل API واستيراد AuthProvider
const { AuthProvider } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

// 3. توليد وإرسال الرمز باستخدام AuthProvider.generateCode() (البريد الإلكتروني/الرسائل القصيرة)
const generateCode = await AuthProvider.generateCode(
'email',
emailReg,
'auth',
);

// 4. يدخل المستخدم الرمز الذي تم استلامه عبر البريد الإلكتروني/الرسائل القصيرة
const code = prompt('أدخل رمز التحقق:') as string;
setCode(code);

// 5. مراجعة الرمز باستخدام AuthProvider.checkCode()
const isCodeValid = await AuthProvider.checkCode(
'email',
authData[0].value,
'password_code',
code,
);

// 6. تغيير كلمة المرور باستخدام AuthProvider.changePassword() إذا كان الرمز صالحًا
let changePassword = null;
if (isCodeValid) {
changePassword = await AuthProvider.changePassword(
'email',
emailReg,
1,
code,
'123456',
);
console.log('✅ تم تغيير كلمة المرور بنجاح', changePassword);
} else {
console.log('❌ رمز التحقق غير صالح');
}

// 7. مصادقة المستخدم باستخدام 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);