it-swarm.asia

كيف يمكن للمستخدم الوصول إلى عقدة واحدة فقط ، وليس كل العقد من هذا النوع؟

لدي مستخدم لديه حقوق العرض والتعديل لنوع محتوى معين. هذا يعطي الامتياز لجميع المستخدمين لعرض وتحرير جميع العقد من هذا النوع. ولكن في الواقع ، أريد إنشاء عقدة فريدة لكل مستخدم ، حتى يتمكن هذا المستخدم فقط من عرضها وتعديلها. كيف يمكنني القيام بذلك في Drupal 7؟

10
Ek Kosmos

باستخدام وحدة نمطية موجودة ، يمكنك القيام بذلك باستخدام الوصول إلى المحتوى ، والذي (عند استخدامه معًا ACL ) يسمح بتعيين الأذونات على الوصول إلى عقدة لكل مستخدم.
هذا يعني أنك بحاجة إلى تعيين أذونات الوصول يدويًا لكل عقدة.

إذا قمت بإنشاء العقد يدويًا ، ثم تريد التأكد من أن المستخدم الذي تم تعيينه كمالك للعقدة هو فقط القادر على عرضه (وتعديله) ، فيمكنك إنشاء وحدة مخصصة (مما يعني وحدة نمطية تكون تستخدم لموقعك) ، وتنفيذ hook_node_access() على النحو التالي (تمت كتابة الشفرة لتسهيل قراءتها):

function mymodule_node_access($node, $op, $account) {
  // We are interested to existing objects. When the node is being created, Drupal passed the node type instead of the node object. 
  if (is_object($node)) {
    $bool = (
      ($node->type == 'the node type you need to check') && 
      (($op == 'view') || ($op == 'update'))
    );
    if ($bool) {
      if ($account->uid == $node->uid) {
        return NODE_ACCESS_ALLOW;
      }
      else {
        return NODE_ACCESS_DENY;
      }
    }
  }

  return NODE_ACCESS_IGNORE;
}

باستخدام هذا التطبيق ، لن تحتاج إلى تعديل أذونات الوصول الممنوحة لكل عقدة من نوع المحتوى الذي تقوم بإنشائه يدويًا. سيكون تغيير مالك العقدة أسهل أيضًا ، حيث لا تحتاج إلى تغيير أذونات الوصول لتلك العقدة ؛ يمنح الكود التحديث وعرض الأذونات تلقائيًا لمجموعة المستخدم كمالك (أو مؤلف) للعقدة.

11
kiamlaluno

لا تحتاج إلى أي وحدة خاصة أو رمز مخصص للقيام بذلك. ما عليك سوى إنشاء تلك العقد يدويًا ، وتعيين المستخدمين المناسبين كمالك (مؤلف) للعقد وتعيين أذونات لنوع المحتوى هذا لتحرير المحتوى الخاص فقط (وليس تحرير أي محتوى من هذا النوع) وستنتهي.

5
Petr Svehla

ما تتحدث عنه هو Drupal التحكم في الوصول إلى العقدة ، وهو موضوع ضخم.

إن الدعم الأساسي للنواة للتحكم في الوصول إلى العقدة هو بالطبع ، وللتحكم في الوصول لعرض العقدة حسب الدور ، يجب عليك استخدام نوع من وحدة التحكم في الوصول إلى العقدة. هناك صفحة في Drupal.org تسرد جميع وحدات الوصول إلى العقدة ، مع مراجعة كبسولة لكل منها. أقترح عليك إلقاء نظرة على تلك الصفحة لمعرفة ما إذا كان يمكنك العثور على وحدة مناسبة للتحكم في الوصول.

يبدو أن Flexi Access الوحدة هي الوحدة الأقرب لمتطلباتك ، حيث أن وظيفتها الأساسية هي هي السماح أنت تتحكم في الوصول للمستخدمين الفرديين ، بدلاً من الدور أو حسب مصطلح التصنيف.

إنها وحدة صغيرة تسمح لك بإعداد قوائم التحكم في الوصول (ACL) للمستخدمين الفرديين. إنها في الأساس واجهة مستخدم للوحدة النمطية ACL ، لذلك تحتاج إلى تثبيت ذلك أيضًا.

تفتقر إلى بعض ميزات وحدات التحكم في الوصول الأكثر تقدمًا ، مثل الوصول إلى المحتوى ، ولكنها تتم صيانتها بشكل نشط ولا توجد حاليًا أخطاء مفتوحة في قائمة انتظار المشكلة.

الكشف: أنا المشرف على Flexi Access.

1
Free Radical