Bir kullanıcı bu türdeki tüm düğümlere değil, yalnızca belirli bir düğüme nasıl erişebilir?


10

Belirli bir içerik türünü görüntüleme ve düzenleme haklarına sahip bir kullanıcı var. Bu, tüm kullanıcılara bu türdeki tüm düğümleri görüntüleme ve düzenleme ayrıcalığı verir. Ama aslında, her kullanıcı için benzersiz bir düğüm oluşturmak istiyorum, böylece sadece o kullanıcı onu görüntüleyebilir ve düzenleyebilir. Bunu Drupal 7'de nasıl yapabilirim?


1
Bunu bir modül kullanarak nasıl yapabileceğiniz veya gerekli kodu yazarak nasıl yapabileceğiniz anlamına mı geliyor?
kiamlaluno

Başka bir yol, düğümü kullanarak reddetme ve kullanıcı profilini alanlara göre genişletmektir.
ya.teck

Kullanıcı başına bu düğümün bir çeşit kullanıcı profili gereksinimini karşılaması gibi görünebilir. Ayrı bir düğüm mü olmalı yoksa kullanıcı varlığının kendisini ek alanlarla genişletmesi daha iyi olmaz mı?
Alfred Armstrong

Drupal 7 kullanıcı başına düğüm görüntüleme izinlerini kaldırdı. Onları bu modülle geri getirebilirsiniz drupal.org/project/node_view_permissions
giorgio79

modülü kullanmak "nodeaccess" bağlantı drupal.org/project/nodeaccess size yardımcı olacağını diliyorum
Mahipal Purohit

Yanıtlar:


11

Mevcut bir modülü kullanarak, bunu ( ACL ile birlikte kullanıldığında ) her kullanıcı için bir düğüme erişim izinlerini ayarlamaya izin veren Content Access ile yapabilirsiniz . Bu, her bir düğüm için erişim izinlerini manuel olarak ayarlamanız gerektiği anlamına gelir.

Düğümleri el ile oluşturursanız ve daha sonra yalnızca düğümün sahibi olarak ayarlanan kullanıcının onu görüntüleyebildiğinden (ve düzenleyebildiğinden) emin olmak istiyorsanız, özel bir modül oluşturabilirsiniz (yani bir modül siteniz için kullanılır) ve hook_node_access()aşağıdaki gibi uygulayın (kod okumayı kolaylaştırmak için yazılmıştır):

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;
}

Bu kanca uygulamasını kullanarak, oluşturduğunuz içerik türünün her düğümü için verilen erişim izinlerini el ile düzenlemeniz gerekmez. Düğümün erişim izinlerini değiştirmeniz gerekmediği için düğüm sahibini değiştirmek de daha kolay olacaktır; kod, düğümün sahibi (veya yazarı) olarak ayarlanan kullanıcıya güncelleme ve görünüm izinlerini otomatik olarak verir.


5

Bunu yapmak için herhangi bir özel modüle veya özel koda ihtiyacınız yoktur. Bu düğümleri manuel olarak oluşturun, uygun kullanıcıları düğümlerin sahibi (yazar) olarak ayarlayın ve yalnızca kendi içeriğini düzenlemek için bu içerik türüne izinleri ayarlayın (bu türden herhangi bir içeriği düzenlemeyin) ve işiniz bitti.


1

Bahsettiğiniz şey, büyük bir konu olan Drupal düğüm erişim kontrolüdür.

Çekirdeğin düğüm erişim kontrolü için yerleşik desteği oldukça kurudur ve bir düğümü rolle görüntülemek için erişimi kontrol etmek için bir çeşit düğüm erişim kontrol modülü kullanmanız gerekir. Drupal.org'da tüm düğüm erişim modüllerini listeleyen ve her birinin kapsül incelemesini içeren bir sayfa vardır . Erişimi kontrol etmek için uygun bir modül bulup bulamayacağınızı görmek için bu sayfaya göz atmanızı öneririm.

Flexi Erişim modülü onun gibi ihtiyaçlarınız en yakından eşleşen modülü gibi görünüyor birincil işlevi Bunun yerine rolüyle veya daha taksonomi terimi ile, bireysel kullanıcılar için erişimi kontrol izin vermektir.

Bireysel kullanıcılar için ACL'ler (erişim kontrol listeleri) ayarlamanıza izin veren küçük bir modüldür. Temel olarak ACL modülü için bir kullanıcı arayüzüdür , bu yüzden bunu da yüklemeniz gerekir.

İçerik Erişimi gibi daha gelişmiş erişim kontrol modüllerinin bazı özelliklerinden yoksundur , ancak aktif olarak korunur ve şu anda sorun kuyruğunda açık hata yoktur.

Açıklama: Flexi Access'in koruyucusuyum.

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.