ผู้ใช้สามารถเข้าถึงได้เพียงหนึ่งโหนดเท่านั้นและไม่ใช่ทุกโหนดที่เป็นประเภทนั้น


10

ฉันมีผู้ใช้ที่มีสิทธิ์ดูและแก้ไขประเภทเนื้อหาเฉพาะ สิ่งนี้ให้สิทธิ์แก่ผู้ใช้ทั้งหมดในการดูและแก้ไขโหนดทั้งหมดของประเภทนั้น แต่ที่จริงแล้วฉันต้องการสร้างโหนดเฉพาะสำหรับผู้ใช้แต่ละรายเพื่อให้ผู้ใช้นั้นเท่านั้นที่สามารถดูและแก้ไขได้ ฉันจะทำสิ่งนี้ใน Drupal 7 ได้อย่างไร


1
คุณหมายถึงวิธีที่คุณสามารถทำได้โดยใช้โมดูลหรือวิธีการเขียนโค้ดที่จำเป็น?
kiamlaluno

อีกวิธีหนึ่งคือปฏิเสธการใช้โหนดและขยายโปรไฟล์ผู้ใช้ตามเขตข้อมูล
ya.teck

ดูเหมือนว่าโหนดนี้ต่อผู้ใช้อาจเป็นไปตามข้อกำหนดของโปรไฟล์ผู้ใช้บางประเภท จำเป็นต้องเป็นโหนดแยกต่างหากหรือไม่จะดีกว่าที่จะขยายเอนทิตีผู้ใช้ด้วยฟิลด์เพิ่มเติม?
Alfred Armstrong

Drupal 7 ลบสิทธิ์การดูโหนดต่อผู้ใช้ คุณสามารถนำพวกมันกลับมาได้ด้วยโมดูลdrupal.org/project/node_view_permissions
giorgio79

ใช้โมดูล "nodeaccess" ลิงก์คือdrupal.org/project/nodeaccessฉันหวังว่ามันจะช่วยคุณได้
Mahipal Purohit

คำตอบ:


11

การใช้โมดูลที่มีอยู่คุณสามารถทำได้ด้วยContent Accessซึ่ง (เมื่อใช้ร่วมกัน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;
}

เมื่อใช้การติดตั้ง hook นี้คุณไม่จำเป็นต้องแก้ไขสิทธิ์การเข้าถึงที่กำหนดให้สำหรับแต่ละโหนดของประเภทเนื้อหาที่คุณสร้าง การเปลี่ยนเจ้าของโหนดก็จะง่ายขึ้นเช่นกันเนื่องจากคุณไม่จำเป็นต้องเปลี่ยนสิทธิ์การเข้าถึงของโหนดนั้น รหัสจะให้สิทธิ์การอัปเดตและดูสิทธิ์โดยอัตโนมัติแก่ผู้ใช้ที่ตั้งเป็นเจ้าของ (หรือผู้แต่ง) ของโหนด


5

คุณไม่จำเป็นต้องมีโมดูลพิเศษหรือรหัสที่กำหนดเองในการทำเช่นนี้ เพียงสร้าง manualy โหนดเหล่านั้นตั้งค่าผู้ใช้ที่เหมาะสมในฐานะเจ้าของ (ผู้เขียน) ของโหนดและตั้งค่าการอนุญาตให้เนื้อหาประเภทนี้เพื่อแก้ไขเนื้อหาของตัวเองเท่านั้น (ไม่แก้ไขเนื้อหาใด ๆ ของประเภทนี้) และคุณเสร็จแล้ว


1

สิ่งที่คุณกำลังพูดถึงคือการควบคุมการเข้าถึงโหนด Drupal ซึ่งเป็นเรื่องใหญ่

การสนับสนุนในตัวของแกนหลักสำหรับการควบคุมการเข้าถึงโหนดค่อนข้างแน่นอนและการควบคุมการเข้าถึงเพื่อดูโหนดตามบทบาทคุณต้องใช้โมดูลควบคุมการเข้าถึงโหนดบางประเภท มีหน้าหนึ่งที่ Drupal.org แสดงรายการโมดูลการเข้าถึงโหนดทั้งหมดพร้อมกับการตรวจสอบแคปซูลของแต่ละคน ฉันขอแนะนำให้คุณดูที่หน้านั้นเพื่อดูว่าคุณสามารถหาโมดูลที่เหมาะสมเพื่อควบคุมการเข้าถึงได้หรือไม่

Flexi เข้าถึงโมดูลดูเหมือนว่าจะเป็นโมดูลที่เป็นคู่ที่ใกล้เคียงกับความต้องการของคุณเป็นของฟังก์ชั่นหลักคือการช่วยให้คุณสามารถควบคุมการเข้าถึงสำหรับผู้ใช้แต่ละคนมากกว่าโดยบทบาทหรือระยะอนุกรมวิธาน

เป็นโมดูลขนาดเล็กที่ให้คุณตั้งค่า ACLs (รายการควบคุมการเข้าถึง) สำหรับผู้ใช้แต่ละคน มันเป็นส่วนติดต่อผู้ใช้สำหรับโมดูลACLดังนั้นคุณต้องติดตั้งเช่นกัน

มันขาดคุณสมบัติบางอย่างของโมดูลควบคุมการเข้าใช้ขั้นสูงเช่น Content Accessแต่ได้รับการบำรุงรักษาอย่างแข็งขันและในปัจจุบันยังไม่มีบั๊กที่เปิดอยู่ในคิวปัญหา

การเปิดเผยข้อมูล: ฉันเป็นผู้ดูแลระบบของ Flexi Access

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.