আমি কীভাবে ব্যবহারকারীর_অ্যাক্সেস ($ স্ট্রিং) ফাংশনের জন্য উপলব্ধ স্ট্রিং মানগুলির একটি তালিকা খুঁজে পেতে পারি?


27

ব্যবহারকারীর_অ্যাক্সেস ($ স্ট্রিং, $ অ্যাকাউন্ট = নুল)

$ স্ট্রিং: "প্রশাসক নোডস" এর মতো অনুমতি যাচাই করা হচ্ছে।

user_access()ফাংশনের জন্য উপলব্ধ স্ট্রিং মানগুলির একটি তালিকা আমি কীভাবে খুঁজে পেতে পারি ?

উত্তর:


12

যতক্ষণ না প্রতিটি মডিউল তাদের নিজস্ব অনুমতিগুলি সংজ্ঞায়িত করতে পারে ততক্ষণ এই স্ট্রিংগুলির একটি "কঠোর" তালিকা নেই। আপনার যদি সত্যিই প্রোগ্রামালিফিকভাবে এমন একটি তালিকা থাকা প্রয়োজন তবে আপনাকে এটি "নির্মাণ" করতে হবে।

আপনি এই স্ক্রিপ্টটি একটি / ডেভেল / পিএইচপি পৃষ্ঠায় চালাতে পারেন। (অবশ্যই, আপনার ডিভেল মডিউলটি দরকার )

// Render role/permission overview:
$options = array();
foreach (module_list(FALSE, FALSE, TRUE) as $module) {
  print_r($module);
  // Drupal 6
  // if ($permissions = module_invoke($module, 'perm')) {
  //  print_r($permissions);
  // }

  // Drupal 7
  if ($permissions = module_invoke($module, 'permission')) {
    print_r($permissions);
  }
}

26

@ বারডির যেমন বলেছিলেন, কোন অনুমতিগুলি পাওয়া যায় তা দেখার সহজ উপায় হ'ল দ্রুপাল in-এর অনুমতি প্রশাসক / লোক / অনুমতিতে যাওয়া।

আমি যে সমস্যাটি চালিয়ে যাচ্ছি তা হ'ল আমি কখনই বুঝতে পারছিলাম না যে অনুমতিটি ব্যবহারের জন্য 'অ্যাক্সেস আর্গুমেন্ট' হিসাবে আমার কী স্ট্রিং সরবরাহ করতে হবে। ঠিক আছে, আপনি যে অনুমতিগুলি ব্যবহার করতে চান তার জন্য আপনি স্ট্রিংয়ের নামটি কীভাবে খুঁজে পান (এই উদাহরণটি গুগল ক্রোম ব্যবহার করে))

প্রথম ধাপ. আপনি যে অনুমতিটি ব্যবহার করতে চান সেটি অ্যাডমিন / লোক / অনুমতিতে যান এবং আপনি যে অনুমতিটি ব্যবহার করতে চান তার ডানদিকে একটি চেক বাক্সে ডান ক্লিক করুন। 'উপাদান পরিদর্শন করুন' নির্বাচন করুন বা উত্সটি দেখুন।

উদাহরণ

পরবর্তী চেক বাক্সের মানটি দেখুন এবং মানটি নোট করুন। (এই ক্ষেত্রে স্ট্রিংটি হ'ল 'কুপন সামগ্রী তৈরি করুন')

এখানে চিত্র বর্ণনা লিখুন

Hook_menu () এ অ্যাক্সেস আর্গুমেন্ট হিসাবে আপনার সরবরাহ করতে হবে এটি স্ট্রিং

উদাহরণ কোড: (প্রাসঙ্গিক আইটেমগুলি সরানো হয়েছে, শিরোনাম, কলব্যাক ইত্যাদি ভুলে যাবেন না হুক_মেনু ())

function fsrsys_menu() {
    $items = array();
    $items['my-custom-url'] = array(
        'access callback' => 'user_access',
        'access arguments' => array('create coupon content'),
    );
    return $items;
}

9

এখানে হাজার উত্তরের একটি ডি 7 সংস্করণ রয়েছে, প্রিন্ট_আরের পরিবর্তে ডিএসএম ব্যবহার করার জন্য এবং হুক_পিমারেশন প্রয়োগ করে না এমন মডিউলগুলি ছেড়ে দেওয়ার জন্য:

// Render permission overview:
$options = array();
foreach (module_list(FALSE, FALSE, TRUE) as $module) {
  if ($permissions = module_invoke($module, 'permission')) {
    // List only the modules that have permissions.
    dsm($module);
    dsm($permissions);
  }
}

6

আপনি user_permission_get_modules()ফাংশনটি ব্যবহার করতে পারেন যা সমস্ত সংজ্ঞায়িত অনুমতি এবং তাদের মডিউলগুলির একটি অ্যারে প্রদান করে।

অনুমতিগুলির সাথে সম্পর্কিত মডিউলগুলি নির্ধারণ করুন।

ফেরত মূল্য

$ অনুমতি => $ মডিউলে ফর্ম্যাটটিতে একটি সহযোগী অ্যারে।


2
আপনি যদি এটি মুড়ে রাখেন তবে array_keys()অবশ্যই অনুরোধ করা তথ্য পান। এর পরে আপনি এছাড়াও ফলাফলের ব্যবহার করতে পারেন user_role_grant_permissions, উদাহরণস্বরূপ প্রশাসকের ভূমিকা সব অনুমতি মঞ্জুর করতে:user_role_grant_permissions(variable_get("user_admin_role"), array_keys(user_permission_get_modules()));
aross

4

সবচেয়ে সহজ উপায় হ'ল অনুমতি পৃষ্ঠাটি পরীক্ষা করা (ডি 7: অ্যাডমিন / লোক / অনুমতি, ডি 6: অ্যাডমিন / ব্যবহারকারী / অনুমতি)। নোট করুন যে আপনি সরাসরি ড্রুপাল 6 এ প্রদর্শিত স্ট্রিংটি ব্যবহার করেন, 7 এর জন্য আপনার চেকবক্সের নাম / মানটি দেখতে হবে। এটি কারণ এখন ড্রুপাল 7 এ অনুমতিগুলির একটি অনুবাদকৃত শিরোনাম এবং বিবরণ রয়েছে।

সুতরাং আপনি যদি ড্রুপাল 7 এ "প্রকাশিত সামগ্রী দেখুন" এর অনুমতিটির জন্য নামটি চান তবে মানটি হল "প্রবেশাধিকার সামগ্রী" যা আপনার অনুমতিের নাম।

আপনি যদি জানেন যে অনুমতিটি কোন মডিউল থেকে আসছে, আপনি সেই মডিউলটির সংশ্লিষ্ট হুক_পার্ম () (ডি 6) / হুক_পিমেশন () (ডি 7) বাস্তবায়নও পরীক্ষা করতে পারেন ।

অনেক ক্ষেত্রে, আপনি নিজের অনুমোদনের সংজ্ঞা দিতে এবং এটি ব্যবহার করতে চান, আপনি উপরের হুক দিয়ে এটি করতে পারেন।


পুনরায়: "সবচেয়ে সহজ উপায় হ'ল অনুমতি পৃষ্ঠাটি পরীক্ষা করা (ডি 7: অ্যাডমিন / লোক / অনুমতি,)"। পৃষ্ঠাটি অনুমতিগুলির একটি তালিকা দেখায়, তবে সেগুলি মেশিন পাঠযোগ্য স্ট্রিংয়ের পরিবর্তে মানব পাঠযোগ্য স্ট্রিং।
গিলজারো

1
যেমনটি আমি নীচে লিখেছি, মেশিনটি পঠনযোগ্য নাম কোনও প্রদত্ত অনুমতির জন্য যে কোনও চেকবক্সের মান থেকে বের করা যেতে পারে।
বারদির

এই উত্তরটিতে দ্রুপাল 6 এবং covers, স্বীকৃত একটি মাত্র দ্রুপাল covers রয়েছে - তবে স্বীকৃত উত্তরটি একটি ঝরঝরে কৌশল এবং দ্রুপালের জন্য সহজেই পরিবর্তন করা যেতে পারে =. =)
গ্রেগ

4

ডিভেল মডিউলটি ব্যবহার করে

  • দেভেল মডিউলটি ইনস্টল ও সক্ষম করার পরে নেভিগেট করুন admin/config/development/devel। "অনুমতি এবং মডিউলগুলির মেশিনের নাম প্রদর্শন করুন" শিরোনামে একটি সেটিংস রয়েছে। এটি পরীক্ষা করা হয়েছে তা নিশ্চিত হন।

  • অনুমতি পৃষ্ঠাতে এখন people/permissions, আপনি যে অনুমতিটি জিজ্ঞাসা করছেন তার নামটি ধরে রাখুন। এটি এক বা দুটি বিলম্ব করতে পারে তবে তারপরে স্ট্রিংয়ের মানটি প্রদর্শিত হবে।


বাহ, আমি এই সম্পর্কে জানতাম না। আমি আমার উত্তর পোস্ট করার পরে এটি দেখেছি। ধন্যবাদ!
বাটান্দোয়া

খুব দরকারী! Tyvm।
DrCord

মিষ্টি, মডিউল কোড খোলার চেয়ে অনেক সহজ!
bloke_zero

1

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

/**
 * Implements hook_form_FORM_ID_alter().
 */
function mymodule_form_user_admin_permissions_alter(&$form, $form_state) {
  foreach ($form['permission'] as $key => &$item) {
    if (isset($item['#type']) && $item['#type'] == 'item') {
      $item['#markup'] .= ' (' . $key . ')';
    }
  }
}

1

আমি এই জাভাস্ক্রিপ্ট স্নিপেট তৈরি করেছি যা আমাকে এটিতে সহায়তা করে। আমি এটি চকচকে থিমটিতে ড্রুপাল 7 এ পরীক্ষা করেছি ।

এটি মূলত মেশিনের নাম আউটপুট করে, সেই নামের প্রথম চেকবক্স থেকে নেওয়া প্রথম কক্ষে, লেবেলের নীচে। স্ক্রিপ্টটি jQuery এর উপর নির্ভর করে, যা ড্রুপাল 7-এ কোনও সমস্যা হওয়া উচিত নয়।

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

// Go through each of the rows on the permissin table
rows = jQuery('#permissions tr');
rows.each(function() {
    // Get the first checkbox in the row.
    checkbox = jQuery('.checkbox .form-checkbox', this).first();
    // Get the first cell, containing the permission label.
    nameCell = jQuery('td:first-child', this);
    // In case this is not a permission row
    if(checkbox.length == 0) {
        return;
    }

    // Embed the permission maching name on permission label cell.
    nameCell.append("<div><code>" + checkbox.val() + "</code></div>");
});

এবং বুকমার্কিফাই.আইটি পরিষেবাদির জন্য ধন্যবাদ আপনি এখানে বুকমার্কলেটটি পেতে পারেন ।
বাটান্দোয়া

এটি সত্যিই দরকারী সরঞ্জাম, টাই!
DrCord



0

কিছু মডিউল সরিয়ে ফেলুন, আপনি / প্রশাসক / লোক / অনুমতিতে মেশিনের অনুমতি দেখতে পাবেন

function YOURMODULE_form_user_admin_permissions_alter(&$form, &$form_state) 
{
    $perms = &$form['permission'];

    $group_counter = 0;
    foreach ($perms as $k => &$v) {
        if ($k == $group_counter) { // skip fieldsets
            $group_counter++;
            continue;
        }

        $v['#markup'] .= ' (<span class="description" style="color:brown">'.$k.'</span>)'; 
    }
}

শুভেচ্ছা

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