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

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

এই এক্সটেনশনটি ব্যবহারকারীর গোপনীয়তাকে সম্মান করার জন্য এবং সম্মতির প্রয়োজনীয়তা পূরণের জন্য দরকারী। যাইহোক, এই এক্সটেনশনটি ব্যবহার করে সরকার এবং শিল্পের নিয়ম মেনে চলার নিশ্চয়তা দেয় না।

পূর্বশর্ত

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

এক্সটেনশনটি ইনস্টল করতে, ফায়ারবেস এক্সটেনশন ইনস্টল করুন পৃষ্ঠায় পদক্ষেপগুলি অনুসরণ করুন৷ সংক্ষেপে, নিম্নলিখিতগুলির মধ্যে একটি করুন:

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

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

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

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

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

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

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

  • রিয়েলটাইম ডাটাবেস উদাহরণ:

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

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

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

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

    আপনার রিয়েলটাইম ডাটাবেসের কোন পাথ ব্যবহারকারীর ডেটা ধারণ করে? আপনি যদি রিয়েলটাইম ডেটাবেস ব্যবহার না করেন তবে খালি রাখুন। কমা দিয়ে আলাদা করে সম্পূর্ণ পাথগুলি লিখুন। আপনি {UID} দিয়ে মুছে ফেলা ব্যবহারকারীর User ID উপস্থাপন করতে পারেন। যেমন: 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

অটো ডিসকভারি (ক্লাউড ফায়ারস্টোর)

মুছে ফেলার জন্য Firestore নথিগুলিকে স্বয়ংক্রিয়ভাবে আবিষ্কার করতে এক্সটেনশন সক্ষম করতে, "স্বয়ংক্রিয় আবিষ্কার সক্ষম করুন" কনফিগারেশন প্যারামিটারটিকে "হ্যাঁ" তে সেট করুন।

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

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

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

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

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

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