পাইপলাইন পরিচালনার জন্য নিরাপত্তা নিয়মাবলী

পাইপলাইন কোয়েরি রুলস সাপোর্টের প্রাথমিক লক্ষ্য হল বিদ্যমান রুলস ইঞ্জিনের ফিল্টারিং ক্ষমতার সাথে মিল করা। পাইপলাইন কোয়েরিগুলি বিভিন্ন ধরণের বৈশিষ্ট্য প্রদান করে, রুলস ইঞ্জিনটি কোয়েরির সন্তুষ্টি এবং সুরক্ষা নিশ্চিত করার জন্য সহজ ফিল্টারগুলি সনাক্ত করার মধ্যে সীমাবদ্ধ।

সমর্থিত ফিল্টার এক্সপ্রেশন

কোনও কোয়েরি যাতে আপনার নিয়ম দ্বারা সীমাবদ্ধ না হয়, তার জন্য এটিকে ধ্রুবকের বিপরীতে স্ট্যান্ডার্ড তুলনা অপারেটর ব্যবহার করতে হবে। নিম্নলিখিত ফিল্টার প্রকারগুলি রুলস ইঞ্জিন দ্বারা স্বীকৃত:

  • সমতা এবং অসমতা: eq , neq
  • তুলনা: gt , gte , lt , lte .
  • সদস্যপদ: in , arrayContains .

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

  • where(eq("foo", 2))
  • where(lt("foo", 2))
  • documents("/user/1", "/user/2").where(...)

অনুরোধ সম্পত্তি

আপনি প্রমাণীকরণ এবং কোয়েরি প্রসঙ্গ যাচাই করার জন্য request অবজেক্ট ব্যবহার করা চালিয়ে যেতে পারেন, যদিও স্ট্যান্ডার্ড কোয়েরিতে উপলব্ধ কিছু বৈশিষ্ট্য পাইপলাইনে সমর্থিত নয়।

সমর্থিত বৈশিষ্ট্য

নতুন ইঞ্জিনটি নিম্নলিখিত বৈশিষ্ট্যগুলি সমর্থন করে চলেছে:

  • request.auth : ব্যবহারকারীর ইউআইডি এবং টোকেন ডেটা অ্যাক্সেস করুন।
  • request.method : অপারেশনটি সনাক্ত করে (উদাহরণস্বরূপ, get , list )।
  • request.path : যে রিসোর্সটি অ্যাক্সেস করা হচ্ছে তার পথ।
  • request.time : অনুরোধের সার্ভার-সাইড টাইমস্ট্যাম্প।

অসমর্থিত প্রপার্টি

মাল্টি-স্টেজ কোয়েরিতে এই মানগুলি নির্ধারণের জটিলতার কারণে, limit , offset , এবং orderBy এর মতো request.query বৈশিষ্ট্যগুলি Pipelines নিয়ম পরীক্ষাগুলির জন্য সমর্থিত নয়।

পাইপলাইন পর্যায় পরিচালনা এবং অনুমতি

নিরাপত্তা নিয়মে নির্দিষ্ট গ্রানুলার অপারেশনের সাথে মানানসই বিভিন্ন পাইপলাইন পর্যায় রয়েছে:

  • allow list : collection() , collectionGroup() , এবং database() পর্যায় দ্বারা ট্রিগার করা হয়েছে।
  • allow get permissions: documents() পর্যায় দ্বারা ট্রিগার করা হয়, যা ব্যাচ get অপারেশনের মতোই আচরণ করা হয়।
  • ক্ষেত্র পরিবর্তনের ধাপ: নিয়মগুলি কেবল সঞ্চিত ডেটার উপর কাজ করে, প্রাপ্ত মানগুলিতে নয়। যদি কোনও পাইপলাইনে এমন পর্যায় থাকে যা ক্ষেত্রগুলি পরিবর্তন করে (উদাহরণস্বরূপ, AddFields , ReplaceWith , Select ), তাহলে সেই পর্যায়ের সম্মুখীন হওয়ার পরে নিয়ম ইঞ্জিন ফিল্টার সীমাবদ্ধতা প্রয়োগ করা বন্ধ করে দেয়।
  • লিটারাল স্টেজ: literals() স্টেজ ডাটাবেস থেকে পড়ে না, কিন্তু খরচ বহন করতে পারে। অপব্যবহার রোধ করার জন্য, এটিকে অন্য একটি স্টেজের (যেমন collection() ) সাথে যুক্ত করতে হবে যা নিয়ম দ্বারা যাচাই করা যেতে পারে।