Views modülü: Kullanıcı tarafından erişim nasıl sınırlandırılır


8

Views modülünü yalnızca belirli kullanıcıların erişebilmesi gereken bir görünüm oluşturmak için kullanıyorum. Views rol veya izinleri ile erişim denetimi içerir biliyorum, ama daha ince taneli bir şeye ihtiyacım var: Temelde, sadece kullanıcı "x" ve kullanıcı "y" belirli bir görünüme (veya başka bir site yöneticisi rolü). Dolayısıyla bu, ACL modülünün bağımsız düğümler için nasıl davrandığına çok benzer bir şekilde işlev görür.

Özel görünümler erişim eklentisi oluşturmak için en iyi yaklaşım nedir? Bu konuda fazla deneyimim yok.

Ayrıca, bunu gerçekleştirmek için bazı doğrulama ile bir argüman kullanmayı merak ediyorum (böylece düzinelerce ayrı görünüm oluşturmak zorunda değilim). Örneğin, bu görünüm belirli bir düğüm yolunda bir sekme olacağından, bu düğümde görünümü kimlerin görebileceğini belirten bir kullanıcı başvuru alanı kurmayı merak ediyorum. Ben sadece görünüm geçerli kullanıcı kullanıcı başvuru alanında belirtilen bir kullanıcıya eşitse doğrulamak için bir yol gerekir.

Herhangi bir fikir? Yoksa bunu olması gerekenden daha mı karmaşık hale getiriyorum?

Teşekkürler, Ben


Bir görünüm erişim eklentisi yazmanız gerekebilir, ancak sorunuzu biraz daha ayrıntılı olarak güncelleyebiliyorsanız, belki başka bir yolla başarabilirsiniz. Görünüm ne yapar / görüntüler? Hangi kullanıcıların görüntülemesine izin verilir? Kullanıcıların farklı rolleri var mı? Kullanıcıların belirli bir alanı veya kendileriyle ilişkili, alana erişmelerini sağlayan bir alanı var mı?
Jamie Hollern

Jamie, Cevabınız için teşekkürler. Aslında, benzersiz bir çevrimiçi mağaza oluşturmak için Drupal Commerce kullanıyorum. Her ürün düğümünde bir sekme olarak (Sekmeleri Görüntüle ve Düzenle'ye ek olarak), söz konusu ürünü içeren tüm siparişleri gösteren bir görünüm olacak "Siparişler" adında ek bir sekme oluşturmak istiyorum. Belirli bir ürünün tedarikçisi, o ürün için "Siparişler" görünümünü görmek istediğim kullanıcıdır.
BenK

Bu şekilde tedarikçi, ürünlerinin satışlarını sürekli olarak izleyebilir. Ancak "tedarikçi" rolü olan herkese erişim izni vermek istemiyorum, çünkü o zaman herhangi bir tedarikçi diğer tedarikçilerin ürünlerinin satışlarını görebilir. Mantıklı olmak? ;-) --Ben
BenK

Yanıtlar:


5

Görünüm'deki izinleri sınırlamak yerine, o görünüme götüren menü öğesindeki izinleri sınırlayabilirsiniz (bir düğümdeki sekme veya menü geri araması olsun). Görünümünüzü yalnızca "Varsayılanlar" ekranıyla ve Sayfa görüntülemesiyle oluşturabilirsiniz (böylece kullanıcılar ekranın yolunu bulamazlar). Sonra page callbackmenü öğesi için sadece views_embed_viewgörünüm görüntülemek için arayın . Bir menü öğesinde izinleri işlemek, Görünümler için yeni bir eklenti yazmaktan daha kolay olabilir (ancak bir eklenti başkaları için yararlı olabilir).


Önerin için teşekkürler! Bu genel yaklaşımı (Berdir tarafından da önerildi) takip ettim, ancak field_usercanaccess adı verilen her düğümde bir kullanıcı referans alanı oluşturdum. Hook_menu () kullanmak ve geçerli kullanıcının alanda başvurulan bir kullanıcı eşleştiğinden emin bir erişim geri arama tanımlamak mümkün. Aksi takdirde, sekme (ve görünüm) görüntülenmez. Harika çalışıyor! :-)
BenK

@BenK harika! Çalıştığın bir şey olduğuna sevindim. Drupal Cevapları'nın mükemmel bir kaynak olmasına yardımcı olmanın bir parçası olarak, yararlı bulduğunuz cevaplara (veya sorulara) da oy vermelisiniz. Muhtemelen @ Berdir'in cevabına oy vermelisiniz (ve benimki, ama bu oy almaya çalışmıyorum, Drupal Cevapları daha iyi bir site yapmaya çalışıyor)
Chaulky

Teşekkürler. :-) Stack Exchange'de yeniyim ve sadece 13 puanım var. Oy vermeye çalıştığımda oy vermek için 15 puana ihtiyacım var. Yani eğer birinin yedek iki puanı varsa (ya da başka bir şekilde kazanabilirsem) kesinlikle cevaplara ve sorulara oy verirdim. - Ben
BenK

@BenK oh, 15 puan sınırını unuttum. Her zaman soruları cevaplamayı deneyebilirsiniz ... Cevabınızdaki bir oylama 10 tekrar alır.
Chaulky

6

Views Access Callback modülünü deneyin .

Views için geri arama tabanlı erişim kontrolü sağlar.

Kullanılabilir geri çağırma işlevleri, işlevi kullanan hook_views_access_callbacks()( modüller gibi) modüller tarafından tanımlanır hook_perm(), daha sonra görünümün "Erişim kısıtlamaları" yapılandırmasında ayarlanabilir.


Görünümleri kullanma erişim geri arama garip bir ölümcül hata dışında harika çalışıyor. Buraya bakın: drupal.stackexchange.com/questions/3336/… . Gidilecek yol gibi görünüyor - ama nasıl düzeltilir?
Druvision

2

Bir şey eksik olmalıyım, ancak yeni bir rol oluşturup bu Kullanıcıları ekleyeceğiniz anlaşılıyor. Ardından Görünümlerin Erişimi: Rol özelliğini kullanın.

Erişim haklarını içerikteki bir şeye bağlamanız gerekiyorsa, ilk kez bir ağrı ayarı bulduğum, ancak bir kez çalıştıktan sonra esnekliği takdir ettiğim özel bir Views erişimi kullanırdım. Görünüm Menü Öğesini oluşturuyorsa, Görünüm erişim işlevini geçmezse görünmez.

Yalnızca bir menü öğesini gizliyorsanız, görünümün hala çalışacağı ve Kullanıcı'nın verileri görüntülemek için bir URI ayarlayabileceği anlaşılıyor.

Jerry


1

Özel Amaçlar modülünü özel olarak amacınız için yeni izinler oluşturmak üzere kullanmaya ve ardından bu izinleri tek tek kullanıcılara atamak için Kullanıcı İzinleri modülünü kullanmaya ne dersiniz ?

Özel izinler modülü çok hafiftir. Aslında kullanıcı izinleri modülü hakkında o kadar emin değilim, çünkü aslında bu sahnelerin arkasındaki her kullanıcı için yeni bir rol oluşturuyor (bu roller ana izinler sayfasında görünmüyor). Çok fazla kullanıcınız varsa, bu, rollerinizin ve user_roles tablolarınızın boyutunu biraz artırabilir.


Bu, Özel İzinleri kullanmak için ilginç bir öneri. Sadece Modül Yapılandırma İzinlerinden daha geniş olduğu için bu modülü görmemiştim. Buradaki tek komplikasyon, tüm bunları Drupal 7'de yapıyorum (ve henüz resmi bir şube yok). Ancak bu çalışmayı alabilirsem, görünümün erişim kontrolündeki izni doğrudan (Kullanıcı İzinleri modülüne ihtiyaç duymadan) belirlemek mümkün olabilir. Önerin için teşekkürler! :-)
BenK

Bunu deneyip rapor vereceğim.
BenK

0

Doğru, bu daha mantıklı. Bence bir Görünüm ve bir argüman kullanabilirsiniz (muhtemelen,% 100 emin değilim). Bağımsız değişkeni, şu anda oturum açmış olan kullanıcıdan alınan bir kullanıcı kimliği olarak ayarlayın ve varsayılan bağımsız değişkenin hiçbir şey göstermemesini sağlayın. Adil olabilmenin ne kadar güvenli olacağını bilmesem de, bunu yapabilmelidir. Denerseniz, geri gönderin ve ilerlemenizi bildirin.


Evet, bir şeyler deneyeceğim ve rapor vereceğim. Ben de bir argüman ile bir görünüm erişim eklentisi çalışıyorum, bu yüzden nasıl gittiğini göreceğiz. Teşekkürler.
BenK

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.