কোন বিষয়বস্তুর প্রকারভেদে কোনও নোড বেসিং দেখতে পারে তা সীমাবদ্ধ করে


18

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

যারা "ই-বুক" নোডগুলি কেবল "মাসিকস্যাবসক্রাইবার" ভূমিকা আছে এমন ব্যবহারকারীদের মধ্যে সীমাবদ্ধ করবেন?

উত্তর:


13

এই অ্যাক্সেস নিয়ন্ত্রণ যুক্ত করতে আপনাকে সামগ্রী অ্যাক্সেস মডিউল ইনস্টল করতে হবে ।

এই মডিউল আপনাকে ভূমিকা এবং লেখক দ্বারা সামগ্রীর ধরণের জন্য অনুমতিগুলি পরিচালনা করতে দেয়। এটি আপনাকে প্রতিটি সামগ্রীর প্রকারের জন্য কাস্টম ভিউ, সম্পাদনা এবং অনুমতিগুলি নির্দিষ্ট করার অনুমতি দেয়।


5

ড্রুপাল 7 এর জন্য, হুক_নোড_অ্যাক্সেস () ব্যবহার করে দেখুন :

/**
 * Implements hook_node_access().
 */
function YOURMODULE_node_access($node, $op, $account) {
  if (
    $node->type == 'ebook' &&
    $op == 'view' &&
    !in_array('MonthlySubscriber', $account->roles)
  ) { return NODE_ACCESS_DENY; }
  return NODE_ACCESS_IGNORE;
}

1
দয়া করে কেবল কোড-উত্তরগুলি এড়ান। তারা কোন শিক্ষার উদ্দেশ্য পরিবেশন করে। কমপক্ষে একটি বাক্য বা তিনটিতে ব্যাখ্যা করুন যে এই নির্দিষ্ট কোডটি একটি উত্তর কীভাবে? এটা কিভাবে কাজ করে? কেন এটি কাজ করে? যে ধরণের বর্ণনা অন্যকে অনুরূপ কোড বার বার জিজ্ঞাসা না করে অনুরূপ পরিস্থিতিতে লিখতে সহায়তা করবে।
Mołot

এটি সঠিক উত্তর হওয়া উচিত।
GrafiCode

5

অপ্রয়োজনীয় ব্যবহারকারীদের কাছ থেকে নোড পৃষ্ঠাগুলি (নোড / এনআইডি) রক্ষা করার একটি সহজ উপায় way

/**
 * Implements hook_menu_alter().
 */
function mymodule_menu_alter(&$items) {
  $items['node/%node']['access callback'] = 'mymodule_check_node_access';
}

/**
 * Determines whether the current user may perform the operation on the node.
 */
function mymodule_check_node_access($op, $node) {
  if ($node->type == 'protected_type' && !user_access('administer site configuration')) {
    return FALSE;
  }
  return node_access($op, $node);
}

2
নোট করুন যে ব্যবহারের hook_node_accessফলে কোনও ভিউয়ের মতো "তালিকাগুলি" নোডের সাথে কোনও কাজ হবে না। সুতরাং আপনি এতে দেখার অ্যাক্সেসকে সীমাবদ্ধ করতে পারেন hook_node_access, তবে একটি ভিউ বা কাস্টম নোড ক্যোয়ারী এখনও সেই নোড ব্যবহারকারীর কাছে প্রদর্শন করতে পারে। hook_node_accessসম্পাদকীয় নিয়ন্ত্রণের জন্য, তৈরি / আপডেট / অপসারণ অপারেশনগুলি নিয়ন্ত্রণের জন্য আরও কার্যকর
ব্রায়ান

আপনার কোডটি আমার পক্ষে কাজ করে না তবে আপনি আমাকে সঠিক দিকে নির্দেশ করেছেন। আমি হুক_নোড_অ্যাক্সেস ডকুমেন্টেশন api.drupal.org/api/drupal/modules%21node%21node.api.php/…
কামিলো

এটি একটি খারাপ উদাহরণ কারণ এটি মায়োমডিউল_নোড_অ্যাক্সেসটি কাস্টম ফাংশন হিসাবে ব্যবহার করে যখন দ্রুপাল একটি হুক_নোড_অ্যাক্সেস হুক সরবরাহ করে। এটি বিভ্রান্তিকর হয়ে উঠতে পারে।
বাটিগোলিক্স

@ বাটিগোলিক্স, উত্তরে যেমন বলা হয়েছে এটি নোড পৃষ্ঠাগুলি নোড নয় রক্ষা করার উপায়।
ya.teck


1

ড্রুপাল 7 এর জন্য, এটি ব্যবহার করে দেখুন: টার্ম দ্বারা অ্যাক্সেস

ডি 7 এর জন্য খুব নমনীয়, শ্রেণিবদ্ধ নোড অ্যাক্সেস নিয়ন্ত্রণ (সামগ্রী অ্যাক্সেস নিয়ন্ত্রণ) সরবরাহ করে।


0

Ya.teck দ্বারা উপরে পোস্ট করা হুক_মেনু_াল্টার সমাধানটি কাজ করে তবে এর ক্রিয়াকলাপের নামে মানক হুক_নোড_অ্যাক্সেসের সাথে দ্বন্দ্ব। এই ক্ষেত্রে হুক_মেনু_াল্টার প্রয়োজন হয় না, এবং তাই উপরে ডেনিস পোস্ট করেছেন উত্তরটি আমার মতে আরও সঠিক এবং সঠিক উপায়ে। মেনু_এইটেমটি সম্পন্ন হওয়ার সাথে সাথে পরিবর্তন করা হ'ল প্রথম উল্লেখযোগ্য উদাহরণটি পাইপটির আরও নিচে আরও একটি মডিউল দ্বারা আঁটসাঁট করা যেতে পারে।


0

আমি হুক_নোড_অ্যাক্সেস হুকের জন্য ডি 7 এপিআই ডকুমেন্টেশনে একটি কোড স্নিপেট ব্যবহার করেছি ।

এই কোডটি "ebook" সামগ্রী যে ব্যবহারকারীদের "ভিউ ইবুক" অনুমতি রয়েছে তাদের দেখার জন্য অ্যাক্সেস মঞ্জুর করবে।

Hook_permission () প্রয়োগ করে আপনার অ্যাক্সেস নিয়ন্ত্রণ করতে একটি নতুন অনুমতি প্রয়োজন।

/**
 * Implements hook_permission().
 */
function mymodule_permission() {
  return array(
    'view ebook' => array(
      'title' => t('View Ebook'),
      'description' => t('View Ebook nodes.'),
    ),
  );
}

হুক_নোড_অ্যাক্সেস () প্রয়োগ করে ড্রুপাল নোডের অ্যাক্সেসকে মঞ্জুর বা অস্বীকার করতে পারে।

/**
 * Implements hook_node_access().
 */
function mymodule_node_access($node, $op, $account) {

  // Checks for an ebook node in view mode.
  if (is_object($node) && $node->type === 'ebook' && $op === 'view') {

    // Grants permission to view the node if the current user has an role
    // with the permission 'view ebook'.
    if (user_access('view ebook')) {
      return NODE_ACCESS_ALLOW;
    }

    // Otherwise disallows access to view the node.
    return NODE_ACCESS_DENY;
  }
  // For all other nodes and other view modes, don't affect the access.
  return NODE_ACCESS_IGNORE;
}

অন্যান্য অনুমতি (সম্পাদনা, মোছা, ইত্যাদি) সাধারণ দ্রুপাল অনুমতিগুলির মাধ্যমে ডিল করা যেতে পারে।

Ptionচ্ছিকভাবে আপনি hook_query_TAG_NAME_alter প্রয়োগ করে অ্যাডমিন ওভারভিউ থেকে সামগ্রীটি সরাতে পারেন।

/**
 * Implements hook_query_TAG_NAME_alter().
 */
function mymodule_query_node_admin_filter_alter(QueryAlterableInterface $query) {
  if (!user_access('view ebook')) {
  $query->condition('n.type', 'ebook', '!=');
  }
}

0

আমি ব্যবহার করে অনুধাবন নোড ভিউ অনুমতি মডিউলটি । এটি কন্টেন্ট অ্যাক্সেস মডিউলটির চেয়ে সহজ।

ডি 6 এর মতো এটি আপনার পছন্দসই যে কোনও সামগ্রীর ধরণের "কোনও সামগ্রী দেখুন" এবং "নিজস্ব সামগ্রী দেখুন" অনুমতিগুলি যুক্ত করে।

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

অনুসরণের পদক্ষেপগুলি:

  1. ইনস্টল এবং সক্ষম করার পরে, যান /admin/config/content/node-view-permissionsএবং আপনি যে বিষয়বস্তুর প্রকারে অ্যাক্সেস সীমাবদ্ধ করতে চান তা নির্বাচন করুন।
  2. তারপরে, যান /admin/people/permissions#module-node_view_permissions এবং আপনি যে সামগ্রীগুলি দেখতে সক্ষম হতে চান সেগুলি নির্বাচন করুন। অনুমতি সংরক্ষণ করুন।

    সম্পন্ন!


ড্রুপাল 8 এর জন্য "নোড ভিউ পারমিশন" কাজ করছে না
কার্তিকেইঁ মণিবাসাগম

@ কার্তিকেইন মণিবসাগম কিভাবে?
ক্রিস হ্যাপি

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