Nhảy đến nội dung

Đặt lại mật khẩu với xác minh mã

Trong ví dụ này, chúng tôi sẽ trình bày cách đặt lại mật khẩu của người dùng bằng cách sử dụng mã xác minh được gửi qua email hoặc SMS thông qua API OneEntry.

✅ Mục đích của kịch bản:

  • Người dùng nhập địa chỉ email hoặc số điện thoại
  • Nhận mã xác nhận (qua email hoặc SMS)
  • Nhập mã và mật khẩu mới. Mật khẩu đang được cập nhật trong OneEntry

✅ Những gì bạn cần:

  • Một PROJECT_URL và APP_TOKEN hợp lệ để xác thực với API OneEntry.
  • Người dùng đã đăng ký

📌 Quan trọng:

  • Phương thức generateCode gửi mã đến email/sms.
  • Thay đổi mật khẩu bằng mã hoạt động mà không cần sự ủy quyền của người dùng.
  • Chúng tôi không xử lý lỗi trong các ví dụ này.
  • Bạn có thể xử lý lỗi trong trycatch hoặc trong một cấu trúc như "await Promise.catch((error) => error)"

Kịch bản

1. Nhập oneEntry và định nghĩa url và token

Ví dụ:

import { defineOneEntry } from 'oneentry';

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

2. Tạo một API client với hàm defineOneEntry()

Ví dụ:

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

3. Tạo và gửi mã với AuthProvider.generateCode() gửi qua email/SMS

Dữ liệu:

your-user@email.com

Ví dụ:

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

4. Người dùng nhập mã nhận được qua email/sms

Ví dụ:

const code = prompt('Nhập mã xác minh:');
Kết quả:
547491

5. Xem xét mã với AuthProvider.checkCode()

Ví dụ:

const isCodeValid = await AuthProvider.checkCode(
'email',
authData[0].value,
'password_code',
code,
);
Kết quả:
true

6. Thay đổi mật khẩu với AuthProvider.changePassword()

Dữ liệu:

your-user@email.com

Ví dụ:

if (isCodeValid) {
const changePassword = await AuthProvider.changePassword(
'email',
emailReg,
1,
code,
'123456',
);
console.log('✅ Mật khẩu đã được thay đổi thành công', changePassword);
} else {
console.log('❌ Mã xác minh không hợp lệ');
}
Kết quả:
true

7. Xác thực người dùng với AuthProvider.auth()

Dữ liệu:

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

Ví dụ:

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

Ví dụ cuối cùng

// 1. Nhập oneEntry và định nghĩa PROJECT_URL và 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. Tạo một API client và nhập AuthProvider để xử lý
const { AuthProvider } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

// 3. Tạo và gửi mã với AuthProvider.generateCode() (email/SMS)
const generateCode = await AuthProvider.generateCode(
'email',
emailReg,
'auth',
);

// 4. Người dùng nhập mã nhận được qua email/sms
const code = prompt('Nhập mã xác minh:') as string;
setCode(code);

// 5. Xem xét mã với AuthProvider.checkCode()
const isCodeValid = await AuthProvider.checkCode(
'email',
authData[0].value,
'password_code',
code,
);

// 6. Thay đổi mật khẩu với AuthProvider.changePassword() nếu mã hợp lệ
let changePassword = null;
if (isCodeValid) {
changePassword = await AuthProvider.changePassword(
'email',
emailReg,
1,
code,
'123456',
);
console.log('✅ Mật khẩu đã được thay đổi thành công', changePassword);
} else {
console.log('❌ Mã xác minh không hợp lệ');
}

// 7. Xác thực người dùng với 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);