Drupal 7 - ให้สิทธิ์ในการจัดการผู้ใช้ แต่ไม่ใช่สิทธิ์


11

เรามีการตั้งค่าไซต์ใน Drupal 7 ซึ่งเราต้องการให้ผู้ใช้บางคนสามารถเข้าถึงหน้าการจัดการผู้ใช้และสามารถสร้างผู้ใช้ใหม่กำหนดบทบาท ฯลฯ แต่เราไม่ต้องการให้พวกเขาเข้าถึง บทบาทและหน้าที่อนุญาต

ปัจจุบัน Drupal มีเพียง 2 สิทธิ์และAdminister PermissionsAdminister users

เมื่อAdminister usersได้รับอนุญาตผู้ใช้จะสามารถเข้าถึงหน้าการจัดการผู้ใช้และสามารถสร้างผู้ใช้ใหม่ แต่ไม่สามารถกำหนดบทบาทให้กับผู้ใช้

หากผู้ใช้มีAdminister permissionsสิทธิ์เขาสามารถกำหนดบทบาทให้กับผู้ใช้และเข้าถึงสิทธิ์และหน้าการจัดการบทบาท

คุณจะให้สิทธิ์แก่ผู้ใช้ในการมอบหมายบทบาทให้กับผู้ใช้ แต่ป้องกันไม่ให้เขาเข้าถึงหน้าสิทธิ์ได้อย่างไร

คำตอบ:


16

ฉันมีความต้องการเดียวกันที่แน่นอนและฉันสามารถใช้โมดูลการมอบหมายบทบาทเพื่อสร้างความสมบูรณ์แบบ :-)

นี่คือสถานการณ์ของฉันที่จะให้บริบทเพิ่มเติมแก่คุณ -

  1. ฉันมีไซต์ drupal ที่มีบทบาท - A, B, C, Admin, Maint
  2. ฉันต้องการให้ผู้ใช้ที่มีบทบาท Maint สามารถสร้างผู้ใช้ใหม่และกำหนดบทบาทให้พวกเขาในขณะที่ทำเช่นนั้น
  3. ฉันยังต้องการ จำกัด ผู้ใช้ Maint เพื่อให้สามารถกำหนดบทบาท A, B, C ให้กับผู้ใช้ใหม่ไม่ใช่ผู้ดูแลบทบาท
  4. ทั้งหมดนี้เป็นเพียงไม่กี่คลิกด้วยโมดูลการมอบหมายบทบาท

หวังว่านี่จะช่วยได้


1
การใช้การมอบหมายบทบาทฉันไม่สามารถกำหนดผู้ที่สามารถสร้างผู้ใช้ได้ พวกเขาสามารถแก้ไขเพื่อกำหนดบทบาท แต่ไม่สามารถสร้างได้ ฉันพลาดอะไรไปรึเปล่า?
Johnathan Elmore

2

อืม ... น่าสนใจที่ดูเหมือนจะไม่มีทางที่ชัดเจนในการทำสิ่งนี้ ดูเหมือนว่ามันจะเป็นคุณสมบัติทั่วไปสำหรับผู้คน ฉันพบโซลูชันสองอย่าง:

http://drupal.org/project/protect_permissions - อย่างไรก็ตามสิ่งนี้ยังไม่พร้อมสำหรับการใช้งานจริง

อย่างไรก็ตามฉันคิดว่าคุณสามารถบรรลุสิ่งที่คุณต้องการด้วย: http://drupal.org/project/permissions_lock

คุณจะต้อง: http://drupal.org/project/user_permissions

ดูเหมือนว่าในภายหลังจะทำตรงข้ามกับสิ่งที่คุณต้องการ แต่ในอดีตดูเหมือนจะทำสิ่งที่คุณต้องการ ฉันยังไม่ได้ทดสอบสิ่งเหล่านี้ในเว็บไซต์ dev ของฉันเพื่อให้แน่ใจ 100% นี่คือสิ่งที่จะทำงานให้คุณ ถ้าฉันเจอสิ่งอื่นฉันจะอัปเดตคำตอบนี้


1
ฉันก็เริ่มคิดในบรรทัดเดียวกันกับที่คุณแนะนำ แต่จากนั้นฉันก็พบโมดูลการมอบหมายบทบาท ( drupal.org/project/role_delegation ) ตรวจสอบข้อกำหนดเหล่านี้ มันใช้งานได้ดี
Sumeet Pareek

! น่ากลัว ฉันบุ๊คมาร์คสิ่งนี้ดีมาก
Brandon Bearden

2

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

แต่ถ้าคุณทำเช่นนั้นบทบาทนั้นจะสามารถแก้ไขได้แม้กระทั่ง superadmin ตรวจสอบการอนุญาตผู้ใช้ Administer ของ Drupalสำหรับคำอธิบายแบบเต็ม

ทางออกของฉันคือการมอบหมายบทบาท + เบ็ดนี้


function hook_user_presave(&$edit, $account, $category) {
    if( $account->uid == 1 || in_array('adminrole',$account->roles)){ //trying to edit an admin
        global $user;
        if($user->uid != 1){//only super admin can do that
            drupal_set_message( "You attempted to edit an admin or dev user name and you are not allowed, this attempt was logged." ,'error');
            watchdog('permissions_extra','Logged in user %user tried to edit account %account', array('%user' => $user->uid, '%account' => $account->uid), WATCHDOG_ERROR);
            drupal_goto('/admin/people');
        }
    }
}

0

เมื่อเร็ว ๆ นี้เราได้ใช้โมดูลroleignignซึ่งทำสิ่งที่คุณต้องการอย่างแท้จริง มันเหมือนกันกับโมดูล role_delegation แต่อาจเป็นทางเลือกถ้าคุณต้องการบางสิ่งที่แตกต่างออกไปเล็กน้อย

ความแตกต่างที่สำคัญอย่างหนึ่งคือวิธีที่คุณตัดสินใจว่าบทบาทใดพร้อมใช้งานที่จะถูกมอบหมาย ด้วยการกำหนดบทบาทคุณเพียงแค่เลือกว่าคุณต้องการให้มีอะไรและเพิ่มสิทธิ์ใหม่เพียงครั้งเดียวในการกำหนดบทบาทเหล่านั้น: roleassign

โมดูล role_delegation ปรากฏขึ้นเพื่อให้สิทธิ์ใหม่สำหรับแต่ละบทบาทที่มีอยู่บนไซต์: สิทธิ์โมดูล role_delegation

โมดูล role_delegation ดูเหมือนว่าจะมีจำนวนการติดตั้งเกือบสามเท่าและมีการเปิดตัว "แนะนำ" Drupal 8 คิวปัญหาดูเหมือนว่าจะอยู่ในสภาพที่ดีขึ้นดังนั้นจึงน่าจะเป็นตัวเลือกที่ดีกว่า

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