মাল্টি-ফ্যাক্টর ব্যবহারকারীদের পরিচালনা করুন, মাল্টি-ফ্যাক্টর ব্যবহারকারীদের পরিচালনা করুন

এই দস্তাবেজটি আপনাকে দেখায় কিভাবে আপনার মাল্টি-ফ্যাক্টর ব্যবহারকারীদের প্রোগ্রাম্যাটিকভাবে পরিচালনা করতে Firebase অ্যাডমিন SDK ব্যবহার করতে হয়। মাল্টি-ফ্যাক্টর ব্যবহারকারীদের পরিচালনা করার সময়, একক-ফ্যাক্টর ব্যবহারকারীদের তুলনায় ব্যবহারকারীর বৈশিষ্ট্যের একটি বর্ধিত পরিসরে আপনার অ্যাক্সেস থাকে।

তুমি শুরু করার আগে

Node.js অ্যাডমিন SDK ইনস্টল করুন । অন্যান্য অ্যাডমিন 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 ক্ষেত্র সর্বাধিক ব্যাচের আকার নির্দিষ্ট করে। ডিফল্ট এবং সর্বোচ্চ মান হল 1000।

একজন ব্যবহারকারী তৈরি করা হচ্ছে

একটি নতুন ব্যবহারকারী তৈরি করতে createUser() কল করুন। সেকেন্ডারি ফ্যাক্টর সহ নতুন ব্যবহারকারীদের অবশ্যই একটি যাচাইকৃত ইমেল ঠিকানা থাকতে হবে ( emailVerified true সেট করুন) এবং সাইন ইন করার জন্য একটি সমর্থিত প্রথম ফ্যাক্টর ব্যবহার করুন৷ প্রতি ব্যবহারকারী 5টি গৌণ ফ্যাক্টর পর্যন্ত অনুমোদিত৷

উদাহরণ দেখায় কিভাবে 2টি গৌণ বিষয়ের সাথে একটি নতুন ব্যবহারকারী তৈরি করতে হয়:

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);
});