ডিলিট ইউজার ডাটা এক্সটেনশন ব্যবহার করে

ডিলিট ইউজার ডেটা এক্সটেনশন ( delete-user-data ) আপনাকে আপনার ফায়ারবেস প্রজেক্ট থেকে কোনো ব্যবহারকারীকে ডিলিট করার সময় তার ডেটা মুছে ফেলার সুবিধা দেয়। আপনি এই এক্সটেনশনটি নিম্নলিখিত যেকোনো বা সবগুলো থেকে ব্যবহারকারীর ডেটা ডিলিট করার জন্য কনফিগার করতে পারেন: ক্লাউড ফায়ারস্টোর, রিয়েলটাইম ডেটাবেস, বা ক্লাউড স্টোরেজ। ডেটা ডিলিট করার জন্য এক্সটেনশনটির প্রতিটি ট্রিগার ব্যবহারকারীর UserId দ্বারা নিয়ন্ত্রিত হয়।

এই এক্সটেনশনটি ব্যবহারকারীর গোপনীয়তা রক্ষা এবং নিয়মকানুন-সংক্রান্ত আবশ্যকতা পূরণের জন্য উপযোগী। তবে, এই এক্সটেনশনটি ব্যবহার করলে সরকারি ও শিল্পখাতের বিধিবিধান মেনে চলার কোনো নিশ্চয়তা পাওয়া যায় না।

পূর্বশর্ত

এক্সটেনশনটি ইনস্টল করুন

এক্সটেনশনটি ইনস্টল করতে, 'Install Firebase Extension' পেজের ধাপগুলো অনুসরণ করুন। সংক্ষেপে, নিম্নলিখিতগুলির মধ্যে একটি করুন:

এক্সটেনশনটি ইনস্টল করার সময়, আপনাকে বেশ কিছু কনফিগারেশন প্যারামিটার নির্দিষ্ট করতে বলা হবে:

  • ক্লাউড ফাংশনের অবস্থান:

    এই এক্সটেনশনের জন্য তৈরি করা ফাংশনগুলো আপনি কোথায় স্থাপন করতে চান, সেই স্থানটি নির্বাচন করুন। সাধারণত আপনার ডাটাবেসের কাছাকাছি একটি স্থান প্রয়োজন হবে। স্থান নির্বাচনের জন্য সাহায্যের প্রয়োজন হলে, স্থান নির্বাচন নির্দেশিকাটি দেখুন।

  • ক্লাউড ফায়ারস্টোর পাথ:

    আপনার ক্লাউড ফায়ারস্টোর ইনস্ট্যান্সের কোন পাথগুলিতে ব্যবহারকারীর ডেটা রয়েছে? আপনি যদি ক্লাউড ফায়ারস্টোর ব্যবহার না করেন তবে এটি খালি রাখুন। কমা দিয়ে আলাদা করে সম্পূর্ণ পাথগুলি লিখুন। আপনি মুছে ফেলা ব্যবহারকারীর ইউজার আইডি {UID} দিয়ে প্রকাশ করতে পারেন। উদাহরণস্বরূপ, যদি আপনার users এবং admins নামে কালেকশন থাকে এবং প্রতিটি কালেকশনে ইউজার আইডিকে ডকুমেন্ট আইডি হিসাবে ব্যবহার করে ডকুমেন্ট থাকে, তাহলে আপনি users/{UID},admins/{UID} লিখতে পারেন।

  • ক্লাউড ফায়ারস্টোর ডিলিট মোড:

    (শুধুমাত্র তখনই প্রযোজ্য যদি আপনি Cloud Firestore paths প্যারামিটার ব্যবহার করেন।) আপনি ক্লাউড ফায়ারস্টোর ডকুমেন্টগুলো কীভাবে ডিলিট করতে চান? সাবকালেকশনের ডকুমেন্টগুলোও ডিলিট করার জন্য, এই প্যারামিটারটি recursive এ সেট করুন।

  • রিয়েলটাইম ডাটাবেস ইনস্ট্যান্স:

    আপনি কোন রিয়েলটাইম ডেটাবেস ইনস্ট্যান্স থেকে ব্যবহারকারীর ডেটা মুছে ফেলতে চান?

  • রিয়েলটাইম ডেটাবেসের অবস্থান:

    (শুধুমাত্র তখনই প্রযোজ্য যদি আপনি Realtime Database instance প্যারামিটারটি দিয়ে থাকেন।) আপনি রিয়েলটাইম ডেটাবেসের কোন অবস্থান থেকে ব্যবহারকারীর ডেটা মুছে ফেলতে চান?

  • রিয়েলটাইম ডেটাবেস পাথ:

    আপনার রিয়েলটাইম ডেটাবেস ইনস্ট্যান্সের কোন পাথগুলিতে ব্যবহারকারীর ডেটা রয়েছে? আপনি যদি রিয়েলটাইম ডেটাবেস ব্যবহার না করেন তবে এটি খালি রাখুন। কমা দিয়ে আলাদা করে সম্পূর্ণ পাথগুলি লিখুন। আপনি মুছে ফেলা ব্যবহারকারীর ইউজার আইডি {UID} দিয়ে প্রকাশ করতে পারেন। উদাহরণস্বরূপ: users/{UID},admins/{UID}

  • ক্লাউড স্টোরেজ পাথ:

    আপনি গুগল ক্লাউড স্টোরেজে ব্যবহারকারীর ডেটা কোথায় সংরক্ষণ করেন? আপনি যদি ক্লাউড স্টোরেজ ব্যবহার না করেন তবে এই স্থানটি খালি রাখুন। আপনার স্টোরেজ বাকেটগুলিতে থাকা ফাইল বা ডিরেক্টরিগুলির সম্পূর্ণ পাথ কমা দিয়ে আলাদা করে লিখুন। মুছে ফেলা ব্যবহারকারীর ইউজার আইডি বোঝাতে {UID} ব্যবহার করুন এবং আপনার ডিফল্ট স্টোরেজ বাকেট বোঝাতে {DEFAULT} ব্যবহার করুন।

    এখানে কয়েকটি উদাহরণ দেওয়া হলো:

    • আপনার ডিফল্ট বাকেটে থাকা {UID}-pic.png ফাইল নামকরণের স্কিমযুক্ত সমস্ত ফাইল মুছে ফেলতে, {DEFAULT}/{UID}-pic.png লিখুন।
    • {UID}-logs.txt ফাইল নামকরণের স্কিমযুক্ত my-app-logs নামক অন্য একটি বাকেটের সমস্ত ফাইলও মুছে ফেলতে, {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt লিখুন।
    • ইউজার আইডি-চিহ্নিত ডিরেক্টরি এবং এর সমস্ত ফাইল (যেমন media/{UID} ) একসাথে মুছে ফেলার জন্য, {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}

মুছে ফেলার জন্য ডেটা আবিষ্কার করা

এই এক্সটেনশনটি মুছে ফেলার জন্য ডেটা খুঁজে বের করতে কয়েকটি পদ্ধতি ব্যবহার করে। এক্সটেনশনটি যাতে ডেটা মুছে ফেলতে পারে, তার জন্য এই পদ্ধতিগুলো সুস্পষ্টভাবে কনফিগার করতে হয়। এক্সটেনশনটি শুধুমাত্র সেই ডেটাই মুছবে যা প্রদত্ত পদ্ধতিগুলোর উপর ভিত্তি করে মুছে ফেলার জন্য সুস্পষ্টভাবে কনফিগার করা হয়েছে।

প্রতিটি পরিষেবার মধ্যে নিম্নলিখিত আচরণগত পার্থক্যগুলো সম্পর্কে সচেতন থাকুন:

  • ক্লাউড ফায়ারস্টোর: এর ডিফল্ট আচরণ হলো একটি ডকুমেন্টকে শ্যালো ডিলিট করা (সাব-কালেকশনগুলো ডিলিট করা হবে না)। একটি ডকুমেন্টের সমস্ত সাব-কালেকশন রিকার্সিভলি ডিলিট করতে, 'ক্লাউড ফায়ারস্টোর ডিলিট মোড' অপশনটি 'রিকার্সিভ'-এ সেট করুন।
  • রিয়েলটাইম ডাটাবেস: নির্দিষ্ট নোডের সমস্ত ডেটা মুছে ফেলা হবে।
  • সংরক্ষণ: যদি কোনো ডিরেক্টরি পাথ নির্দিষ্ট করা থাকে, তাহলে সমস্ত ফাইল এবং সাব-ডিরেক্টরি মুছে ফেলা হবে।

পথ ধরে

ক্লাউড ফায়ারস্টোর, রিয়েলটাইম ডেটাবেস এবং ক্লাউড স্টোরেজ পাথ কনফিগার করার সময়, পাথগুলিতে একটি UID ভেরিয়েবল নির্ধারণ করা সম্ভব, যা প্রমাণীকৃত ব্যবহারকারীর UID দ্বারা প্রতিস্থাপিত হবে। যখন কোনো ব্যবহারকারীকে মুছে ফেলা হয়, তখন এক্সটেনশনটি প্রদত্ত পাথগুলিতে সেই UID-এর উপর ভিত্তি করে সমস্ত ডেটা মুছে ফেলবে, উদাহরণস্বরূপ:

  • ক্লাউড ফায়ারস্টোর পাথ(গুলি): users/{UID},admins/{UID}
  • রিয়েলটাইম ডেটাবেস পাথ(গুলি): likes/{UID}
  • ক্লাউড স্টোরেজ পাথ(গুলি): {DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg

স্বয়ংক্রিয় আবিষ্কার (ক্লাউড ফায়ারস্টোর)

ডিলিট করার জন্য ফায়ারস্টোর ডকুমেন্টগুলো স্বয়ংক্রিয়ভাবে খুঁজে বের করতে এক্সটেনশনটিকে সক্ষম করতে, 'Enable auto discovery' কনফিগারেশন প্যারামিটারটি 'Yes'-এ সেট করুন।

আপনার কনফিগারেশন অনুযায়ী মুছে ফেলার জন্য প্রয়োজনীয় কালেকশন এবং ডকুমেন্টগুলো খুঁজে বের করতে অটো-ডিসকভারি স্বয়ংক্রিয়ভাবে ডাটাবেস অনুসন্ধান করে কাজ করে। এক্সটেনশনটি নিম্নলিখিত পদ্ধতি ব্যবহার করে সেই কালেকশন এবং ডকুমেন্টগুলো শনাক্ত করে:

  1. প্রথমে, এক্সটেনশনটি ডাটাবেসে থাকা সমস্ত রুট কালেকশন খুঁজে বের করে। যদি কোনো কালেকশনের আইডি ব্যবহারকারীর UID-এর সাথে মিলে যায়, তবে সম্পূর্ণ কালেকশনটি মুছে ফেলা হয় (এক্সটেনশনটির "ক্লাউড ফায়ারস্টোর ডিলিট মোড"-এর কনফিগারেশনের উপর নির্ভর করে এই মোছার প্রক্রিয়াটি রিকার্সিভ বা শ্যালো হতে পারে)।
  2. দ্বিতীয়ত, যদি কালেকশন আইডি না মেলে, তাহলে এক্সটেনশনটি একটি ডকুমেন্ট শনাক্ত করে মুছে ফেলার চেষ্টা করবে, যদি তার ডকুমেন্ট আইডি ব্যবহারকারীর ইউআইডি-র সাথে মিলে যায়।
  3. অবশেষে, প্রতিটি ডকুমেন্টের জন্য: ক. যদি বর্তমান সার্চ ডেপথ (নিচে দেখুন) কনফিগার করা সার্চ ডেপথের চেয়ে কম বা সমান হয়, তাহলে বর্তমান ডকুমেন্টটির সমস্ত সাব-কালেকশনের জন্য প্রক্রিয়াটি পুনরাবৃত্তি করা হবে। খ. যদি সার্চ ফিল্ড কনফিগার করা থাকে, তাহলে এক্সটেনশনটি যাচাই করবে যে প্রদত্ত ফিল্ডগুলো ব্যবহারকারীর UID-এর সাথে মেলে কি না। যদি মিল পাওয়া যায়, তাহলে ডকুমেন্টটি মুছে ফেলা হবে।

অনুসন্ধানের গভীরতা

এই এক্সটেনশনটি একটি কনফিগারযোগ্য সার্চ ডেপথ ভ্যালু প্রদান করে (ডিফল্ট মান ৩)। ট্রাভার্সাল কেবল তখনই সম্পাদিত হবে, যদি বর্তমান সার্চ ডেপথ কনফিগার করা সার্চ ডেপথের চেয়ে কম বা তার সমান হয়। উদাহরণস্বরূপ, বর্তমান সার্চ ডেপথটি বর্তমান কালেকশন বা ডকুমেন্টের প্যারেন্ট কালেকশনের ডেপথের উপর ভিত্তি করে নির্ধারিত হয়।

/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2

এই এক্সটেনশনটি অ্যারে বা ম্যাপে সংরক্ষিত UID-গুলো স্বয়ংক্রিয়ভাবে মুছে ফেলবে না, এবং এটি উপরে উল্লেখিত গভীরতার বাইরে গভীরভাবে নেস্টেড সাব-কালেকশনে সংরক্ষিত ইউজার আইডি দ্বারা কী করা ডেটা অনুসন্ধান করবে না।