Drupal 7 - Berikan izin untuk mengelola pengguna tetapi tidak izin


11

Kami telah menyiapkan situs di Drupal 7 di mana kami ingin pengguna tertentu memiliki akses ke halaman manajemen pengguna, dan dapat membuat pengguna baru, menetapkan peran, dll., Tetapi kami tidak ingin memberi mereka akses ke Halaman Peran dan Izin.

Saat ini Drupal hanya memiliki 2 izin Administer Permissionsdan Administer users.

Dengan Administer usersizin, pengguna memiliki akses ke halaman Manajemen Pengguna, dan dapat membuat pengguna baru tetapi tidak dapat menetapkan peran kepada pengguna.

Jika pengguna memiliki Administer permissionsizin, ia dapat menetapkan peran kepada pengguna dan juga akses ke halaman izin dan peran manajemen.

Bagaimana Anda memberi pengguna hak untuk menetapkan peran kepada pengguna, tetapi mencegahnya mengakses halaman izin?

Jawaban:


16

Saya memiliki persyaratan yang sama persis, dan saya dapat menggunakan modul Delegation Peran untuk membangunnya dengan sempurna :-)

Inilah skenario saya untuk memberi Anda lebih banyak konteks -

  1. Saya memiliki situs drupal dengan peran - A, B, C, Admin, Maint
  2. Saya ingin pengguna dengan peran Maint dapat membuat pengguna baru dan juga menetapkan peran mereka saat melakukannya
  3. Saya juga ingin membatasi pengguna Maint untuk dapat menetapkan hanya peran A, B, C untuk pengguna baru dan bukan peran Admin
  4. Semua itu hanya beberapa klik dengan modul Peran Delegasi

Semoga ini membantu.


1
Menggunakan Delegasi Peran Saya sepertinya tidak dapat mengonfigurasi siapa yang dapat membuat pengguna. Mereka dapat mengeditnya untuk menetapkan peran, tetapi tidak membuatnya. Apakah saya melewatkan sesuatu?
Johnathan Elmore

2

Hmmm ... Menarik bahwa tampaknya tidak ada cara yang jelas untuk melakukan ini. Sepertinya ini bisa menjadi fitur umum bagi orang-orang. Saya menemukan beberapa solusi:

http://drupal.org/project/protect_permissions - Namun, ini belum siap untuk penggunaan produksi.

Namun, saya pikir Anda dapat mencapai apa yang Anda inginkan dengan: http://drupal.org/project/permissions_lock

Anda juga perlu: http://drupal.org/project/user_permissions

Yang belakangan tampaknya melakukan kebalikan dari apa yang Anda inginkan tetapi yang pertama tampaknya melakukan persis apa yang Anda inginkan. Saya belum menguji salah satu dari ini di situs dev saya untuk memastikan 100% ini yang akan bekerja untuk Anda. Jika saya menemukan hal lain, saya akan memperbarui jawaban ini.


1
Saya juga mulai berpikir pada baris yang sama seperti yang Anda sarankan, tetapi kemudian saya menemukan modul Delegation Peran ( drupal.org/project/role_delegation ). Periksa untuk persyaratan semacam ini. Ini bekerja dengan baik.
Sumeet Pareek

Luar biasa! Saya bookmark ini, temukan baik-baik.
Brandon Bearden

2

Delegasi peran meninggalkan lubang keamanan. Anda perlu menetapkan orang pengguna pengguna agar mereka dapat menggunakan halaman administrasi dan alat-alat yang dimilikinya.

Tetapi jika Anda melakukannya, maka peran itu akan dapat mengedit bahkan superadmin. Lihat Waspadai izin pengguna Drupal Administer untuk deskripsi lengkap.

Solusi saya adalah delegasi peran + kail ini


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

Akhir-akhir ini kami telah menggunakan modul roleassign , yang melakukan persis seperti yang Anda minta. Ini pada dasarnya identik dengan modul role_delegation, tetapi bisa menjadi alternatif jika Anda membutuhkan sesuatu yang sedikit berbeda.

Satu perbedaan utama adalah bagaimana Anda memutuskan peran mana yang tersedia untuk ditugaskan. Dengan roleassign, Anda tinggal memilih mana yang ingin Anda sediakan, dan itu hanya menambahkan satu izin baru untuk menetapkan peran tersebut: penugasan peran

Modul role_delegation muncul untuk memberikan izin baru untuk setiap peran yang ada di situs: izin modul role_delegation

Modul role_delegation juga tampaknya memiliki hampir tiga kali lipat jumlah instalasi, dan rilis Drupal 8 yang "direkomendasikan". Masalah antrian juga tampaknya dalam kondisi yang lebih baik, jadi mungkin itu pilihan yang lebih baik?

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.