এন্টিফিল্ডকিউরি ব্যবহার করার সময় নোড_একসেসকে কীভাবে বাইপাস করবেন?


12

নিম্নলিখিত কোড সহ, যদি বর্তমান ব্যবহারকারীর 'বাইপাস নোড অ্যাক্সেস' না থাকে ( সঠিক যাচাইয়ের জন্য _নোড_কোয়ারি_নোড_একসেস_াল্টার দেখুন () দেখুন , তবে কোয়েরিটি নোড_একসেসের জন্য পরীক্ষা করে, যদিও আমি "নোড_একসেস" ট্যাগ ব্যবহার করি না।

নন-অ্যাডমিন ব্যবহারকারীর জন্য নীচের প্রশ্নের সাথে নোড_একসেস চেকটি এড়াতে পারি কীভাবে?

আমি এই কোডটি একটি মডিউল থেকে ব্যবহার করছি, তাই আমি নিজেই অনুমতিগুলি যাচাই করতে পারি, নোড_এক্সেস চেকগুলির প্রয়োজন নেই।

  $query = new EntityFieldQuery;
  $result = $query
    ->entityCondition('entity_type', 'node')
    ->entityCondition('bundle', 'foo')
    ->fieldCondition('custom_id', 'value', $custom_id)
    ->execute();

উত্তর:


26

ড্রুপাল 7.15 আপনাকে নোডের অ্যাক্সেসটিকে বাইপাস করতে দেয়।

দেখুন DANGEROUS_ACCESS_CHECK_OPT_OUT ক্যোয়ারী ট্যাগ EntityFieldQuery যোগ করা আরও তথ্যের জন্য।

EntityFieldQueryঅ্যাক্সেস চেকগুলি বাইপাস করার অনুমতি দেওয়ার জন্য একটি "DANGEROUS_ACCESS_CHECK_OPT_OUT" ক্যোয়ারী ট্যাগ যুক্ত করা হয়েছে । পূর্বে, এর মাধ্যমে সম্পাদিত প্রশ্নগুলি EntityFieldQueryনোড অ্যাক্সেস সিস্টেম দ্বারা সর্বদা পরিবর্তন করা হত, সম্ভাব্যত অপ্রত্যাশিত আচরণ এবং ডেটা ক্ষতি হ'ল।

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

function MYMODULE_field_query($field) {
  $query = new EntityFieldQuery();
  return $query
    ->fieldCondition($field)
    ->addTag('DANGEROUS_ACCESS_CHECK_OPT_OUT')
    ->execute();
}

বাহ, আমি কিছুক্ষণ ধরে এটি আটকে যাচ্ছি এমনকি এটি উপলব্ধি না করেই। যখন এই জাতীয় প্রশ্নের জন্য অগণিত নিরীহ ব্যবহার রয়েছে তখন এটি "বিপজ্জনক" ভালবাসুন। : পি
রায়ান জাজ্রামা

11

উত্তরটি হ'ল আপনি পারবেন না।

accountমেটাডেটা যুক্ত করার জন্য আমি কেবল এটির মত চিন্তা করতে পারি :

$query = new EntityFieldQuery;
$result = $query
  ->entityCondition('entity_type', 'node')
  ->entityCondition('bundle', 'foo')
  ->fieldCondition('custom_id', 'value', $custom_id)
  ->addMetaData('account', user_load(1))
  ->execute();

সম্পাদনা: DANGEROUS_ACCESS_CHECK_OPT_OUTড্রুপাল 7.15 সুরক্ষা প্রকাশের অংশ হিসাবে একটি বিকল্প যুক্ত করা হয়েছে।


1
এটি দেখতে বেশ ভালো কাজ করার মতো, ড্যামিয়েনকে ধন্যবাদ!
ওয়েবোয়েড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.