Saya menggunakan modul Views untuk membuat tampilan yang hanya dapat diakses oleh pengguna tertentu. Saya tahu bahwa Tampilan menyertakan kontrol akses berdasarkan peran atau izin, tetapi saya memerlukan sesuatu yang lebih halus: Pada dasarnya, saya ingin dapat mengatakan hanya pengguna "x" dan pengguna "y" yang dapat mengakses tampilan tertentu (atau seseorang dengan peran administrator situs). Jadi ini berfungsi sangat mirip dengan bagaimana modul ACL bertindak untuk masing-masing node.
Apakah pendekatan terbaik untuk membuat plugin akses tampilan khusus? Saya tidak punya banyak pengalaman dengan ini.
Juga, saya bertanya-tanya tentang menggunakan argumen dengan beberapa validasi untuk mencapai ini (sehingga saya tidak harus membuat lusinan tampilan terpisah). Misalnya, karena tampilan ini akan menjadi tab pada jalur simpul tertentu, saya ingin tahu tentang menyiapkan bidang referensi pengguna pada simpul itu yang menentukan siapa yang bisa melihat tampilan. Saya hanya perlu cara agar tampilan hanya memvalidasi jika pengguna saat ini sama dengan pengguna yang ditentukan dalam bidang referensi pengguna.
Ada ide? Atau apakah saya membuat ini lebih rumit dari yang seharusnya?
Terima kasih, Ben
Jawaban:
Alih-alih membatasi izin pada Tampilan, Anda bisa membatasi izin pada item menu yang mengarah ke tampilan itu (baik itu tab pada node atau panggilan balik menu). Anda dapat membuat tampilan hanya dengan tampilan "Default" dan tanpa tampilan Halaman (sehingga pengguna tidak bisa mengetahui jalurnya). Kemudian di
page callback
item menu Anda hanya memanggilviews_embed_view
untuk menampilkan tampilan. Sepertinya menangani izin pada item menu mungkin lebih mudah daripada menulis plug-in baru untuk Views (meskipun plug-in dapat membantu orang lain).sumber
Coba modul Panggilan Balik Akses Views .
sumber
Saya pasti melewatkan sesuatu, tetapi sepertinya Anda akan membuat peran baru dan menambahkan Pengguna ini. Kemudian gunakan fitur Views 'Access: Role.
Jika Anda perlu mengikat hak akses ke sesuatu dalam konten, saya akan menggunakan akses Views kustom, yang saya temukan menyulitkan pengaturan pertama kali, tetapi menghargai fleksibilitas setelah bekerja. Jika View menghasilkan Item Menu, View tidak akan muncul jika View tidak melewati fungsi akses.
Jika Anda hanya menyembunyikan item menu, menurut saya tampilan akan tetap berjalan dan Pengguna dapat mengubah URI untuk melihat data.
Jerry
sumber
Bagaimana dengan menggunakan modul Izin Kustom untuk membuat beberapa izin baru khusus untuk tujuan Anda, dan kemudian menggunakan modul Izin Pengguna untuk menetapkan izin baru tersebut untuk masing-masing pengguna?
Modul izin khusus sangat ringan. Saya tidak begitu yakin tentang modul izin Pengguna, karena pada dasarnya menciptakan peran baru untuk setiap pengguna di belakang layar (peran ini tidak terlihat pada halaman izin utama). Jika Anda memiliki banyak pengguna, ini mungkin sedikit meningkatkan ukuran peran Anda dan tabel user_roles.
sumber
Benar, itu lebih masuk akal. Saya pikir Anda bisa (mungkin, tidak 100% yakin) menggunakan Tampilan dan argumen. Tetapkan argumen menjadi id pengguna yang diambil dari pengguna yang saat ini masuk dan buat argumen default tidak menampilkan apa pun. Itu seharusnya bisa melakukannya, meskipun saya tidak tahu seberapa aman itu akan adil. Jika Anda mencobanya, poskan kembali dan beri tahu saya perkembangan Anda.
sumber
Jika Anda ingin menggabungkan berbagai plugin akses di Views, Anda mungkin ingin melihat modul banyak akses Views .
sumber