এই ডকুমেন্ট থেকে আপনি জানতে পারবেন কীভাবে Firebase Authentication Admin SDK ব্যবহার করে আপনার মাল্টি-ফ্যাক্টর ব্যবহারকারীদের প্রোগ্রাম্যাটিক পদ্ধতিতে ম্যানেজ করতে হয়। মাল্টি-ফ্যাক্টর ব্যবহারকারীদের ম্যানেজ করার সময়, সিঙ্গেল-ফ্যাক্টর ব্যবহারকারীদের তুলনায় আপনি ব্যবহারকারীর প্রপার্টির একটি বর্ধিত রেঞ্জে অ্যাক্সেস পান।
শুরু করার আগে
Node.js Admin SDK ইনস্টল করুন। অন্যান্য Admin SDK ভাষা বর্তমানে কাজ করে না।
ব্যবহারকারী পাওয়া
আপনি UserRecord অবজেক্ট থেকে ব্যবহারকারীর মাল্টি-ফ্যাক্টর সম্পর্কিত ডেটা, যেমন এনরোল করা
সেকেন্ড ফ্যাক্টরের তালিকা, ফিরিয়ে আনতে পারবেন। ব্যবহারকারীর রেকর্ড পেতে, getUser() বা getUserByEmail()-এ কল করুন।
নিচের উদাহরণে একাধিক ধাপে যাচাইকরণে এনরোল করা ব্যবহারকারীকে দেখানো হয়েছে:
// console.log(userRecord.toJSON());
{
uid: 'some-uid',
displayName: 'John Doe',
email: 'johndoe@gmail.com',
photoURL: 'http://www.example.com/12345678/photo.png',
emailVerified: true,
phoneNumber: '+11234567890',
// Set this user as admin.
customClaims: {admin: true},
// User with Google provider.
providerData: [{
uid: 'google-uid',
email: 'johndoe@gmail.com',
displayName: 'John Doe',
photoURL: 'http://www.example.com/12345678/photo.png',
providerId: 'google.com'
}],
multiFactor: {
enrolledFactors: [
// 2FA with SMS as 2nd factor.
{
uid: '53HG4HG45HG8G04GJ40J4G3J',
phoneNumber: '+16505551234',
displayName: 'Work phone',
enrollmentTime: 'Fri, 22 Sep 2017 01:49:58 GMT',
factorId: 'phone',
},
],
},
};
ব্যবহারকারীদের তালিকা তৈরি করা
নিচের কোড থেকে কীভাবে সব ব্যবহারকারীর তালিকা তৈরি করতে হয় এবং তারা সেকেন্ডারি ফ্যাক্টর এনরোল করেছেন কিনা তা চেক করতে হয় তা জানতে পারবেন:
admin.auth().listUsers(1000, nextPageToken)
.then((listUsersResult) => {
listUsersResult.users.forEach((userRecord) => {
// Multi-factor enrolled users second factors can be retrieved via:
if (userRecord.multiFactor) {
userRecord.multiFactor.enrolledFactors.forEach((enrolledFactor) => {
console.log(userRecord.uid, enrolledFactor.toJSON());
});
}
});
})
.catch((error) => {
console.log('Error listing users:', error);
});
ব্যবহারকারীদের ব্যাচ হিসেবে ফেরত পাঠানো হয় এবং তাদের uid অনুযায়ী সাজানো হয়। ফলাফলের প্রতিটি ব্যাচে
ব্যবহারকারীদের একটি তালিকা এবং পরবর্তী ব্যাচ আনার জন্য ব্যবহৃত একটি নেক্সট পেজ টোকেন থাকে।
সব ব্যবহারকারীর নাম তালিকাভুক্ত করা হয়ে গেলে, কোনও pageToken ফেরত আসে না।
maxResult ফিল্ডে সর্বাধিক ব্যাচ সাইজ উল্লেখ করা হয়। ডিফল্ট এবং
সর্বাধিক ভ্যালু হল ১০০০।
ব্যবহারকারী তৈরি করা
নতুন ব্যবহারকারী তৈরি করতে createUser() নম্বরে কল করুন। সেকেন্ডারি ফ্যাক্টর সহ নতুন ব্যবহারকারীদের অবশ্যই
যাচাই করা ইমেল আইডি (emailVerified-কে true হিসেবে সেট করুন) থাকতে হবে এবং সাইন-ইন করার জন্য
কাজ করে এমন ফার্স্ট ফ্যাক্টর ব্যবহার করতে হবে। প্রতি ব্যবহারকারী সর্বাধিক ৫টি সেকেন্ডারি ফ্যাক্টর ব্যবহার করতে
পারেন।
এই উদাহরণে দেখানো হয়েছে কীভাবে ২টি সেকেন্ডারি ফ্যাক্টর সহ নতুন ব্যবহারকারী তৈরি করতে হয়:
admin.auth().createUser({
uid: '123456789',
email: 'user@example.com',
emailVerified: true,
password: 'password',
multiFactor: {
enrolledFactors: [
// When creating users with phone second factors, the uid and
// enrollmentTime should not be specified. These will be provisioned by
// the Auth server.
// Primary second factor.
{
phoneNumber: '+16505550001',
displayName: 'Corp phone',
factorId: 'phone',
},
// Backup second factor.
{
phoneNumber: '+16505550002',
displayName: 'Personal phone',
factorId: 'phone'
},
],
},
})
.then((userRecord) => {
console.log(userRecord.multiFactor.enrolledFactors);
})
.catch((error) => {
console.log(error);
});
ব্যবহারকারীকে আপডেট করা
আগে থেকেই থাকা ব্যবহারকারীর তথ্য আপডেট করতে, updateUser() নম্বরে কল করুন:
admin.auth().updateUser(uid: '123456789', {
multiFactor: {
enrolledFactors: [
{
// uid will be auto-generated.
phoneNumber: '+16505550003',
displayName: 'Spouse\'s phone',
factorId: 'phone',
},
{
// uid can also be specified. This is useful if a new second factor is added and an
// existing enrolled second factor is kept unmodified.
uid: 'existing-enrolled-mfa-uid',
phoneNumber: '+16505550004',
displayName: 'Personal phone',
factorId: 'phone',
},
{
phoneNumber: '+16505550005',
displayName: 'Backup phone',
factorId: 'phone',
// Enrollment time can also be explicitly specified.
enrollmentTime: new Date().toUTCString(),
},
],
},
})
.then((userRecord) => {
console.log(userRecord.multiFactor.enrolledFactors);
})
.catch((error) => {
console.log(error);
});
নতুন সেকেন্ডারি ফ্যাক্টর যোগ করা
enrolledFactors-এর তালিকা সহ updateUser()-এ কল করলে, ব্যবহারকারীর বর্তমান সেকেন্ডারি ফ্যাক্টরগুলির
যেকোনও একটি মুছে যাবে। আগে থেকে থাকা ফ্যাক্টরগুলি রেখে নতুন সেকেন্ডারি ফ্যাক্টর যোগ করতে, প্রথমে ব্যবহারকারীকে খুঁজে দেখুন, তারপর তালিকায় নতুন ফ্যাক্টরটি
যোগ করুন:
function enrollSecondFactor(userId, secondFactorPhoneNumber, secondFactorDisplayName) {
return admin.auth().getUser(userId)
.then((userRecord) => {
const updatedList = (userRecord.multiFactor &&
userRecord.multiFactor.toJSON().enrolledFactors) || [];
updatedList.push({
phoneNumber: secondFactorPhoneNumber,
displayName: secondFactorDisplayName,
factorId: 'phone',
});
return admin.auth().updateUser(userRecord.uid, {
multiFactor: {
enrolledFactors: updatedList,
},
});
})
.catch((error) => {
console.log(error);
});
}
সেকেন্ডারি ফ্যাক্টর সরানো
কোনও ব্যবহারকারীকে বহু-স্তরীয় যাচাইকরণ থেকে সম্পূর্ণভাবে আনএনরোল করতে, enrolledFactors-কে null বা খালি অ্যারে হিসেবে সেট করুন:
admin.auth().updateUser(uid: '123456789', {
multiFactor: {
enrolledFactors: null,
},
})
.then((userRecord) => {
console.log(userRecord.multiFactor);
})
.catch((error) => {
console.log(error);
});