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

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

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

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

  • সমতা ও অসমতা: 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 : অনুরোধটির সার্ভার-সাইড টাইমস্ট্যাম্প।

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

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

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

নিরাপত্তা নিয়মের মধ্যে বিভিন্ন পাইপলাইন পর্যায় রয়েছে যা নির্দিষ্ট সূক্ষ্ম ক্রিয়াকলাপের সাথে সংযুক্ত থাকে:

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