it-swarm-eu.dev

Jak může uživatel přistupovat pouze k jednomu konkrétnímu uzlu a ne ke všem uzlům tohoto typu?

Mám uživatele s právy na prohlížení a úpravy konkrétního typu obsahu. To dává oprávnění všem uživatelům prohlížet a upravovat všechny uzly tohoto typu. Ale vlastně chci pro každého uživatele vytvořit jedinečný uzel, aby jej mohl prohlížet a upravovat pouze tento uživatel. Jak to mohu udělat v Drupal 7?

10
Ek Kosmos

Pomocí existujícího modulu to můžete udělat pomocí Access Access , který (pokud se používá společně ACL ) umožňuje nastavit oprávnění na přístup k uzlu pro každého uživatele.
To znamená, že musíte ručně nastavit přístupová oprávnění pro každý uzel.

Pokud uzly vytvoříte ručně a chcete si být jisti, že pouze uživatel, který je nastaven jako vlastník uzlu, jej může zobrazit (a upravit), můžete vytvořit vlastní modul (což znamená modul, který je používá se pro váš web) a implementujte hook_node_access() následujícím způsobem (kód byl napsán, aby bylo snazší čtení):

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

Pomocí této implementace zavěšení nemusíte ručně upravovat přístupová oprávnění udělená pro každý uzel daného typu obsahu, který vytvoříte. Změna vlastníka uzlu by také byla jednodušší, protože nemusíte měnit přístupová oprávnění tohoto uzlu; kód automaticky udělí oprávnění k aktualizaci a zobrazení uživateli nastavenému jako vlastník (nebo autor) uzlu.

11
kiamlaluno

K tomu nepotřebujete žádný speciální modul ani vlastní kód. Jednoduše vytvořte tyto uzly ručně, nastavte příslušné uživatele jako vlastníka (autora) uzlů a nastavte oprávnění pro tento typ obsahu, abyste mohli upravovat pouze vlastní obsah (nikoli upravovat žádný obsah tohoto typu) a jste hotovi.

5
Petr Svehla

To, o čem mluvíte, je Drupal řízení přístupu k uzlu, což je obrovský předmět.

Vestavěná podpora jádra pro řízení přístupu k uzlu je spíše samozřejmostí a pro řízení přístupu k zobrazení uzlu podle role musíte použít nějaký druh modulu pro řízení přístupu k uzlu. Existuje stránka Drupal.org se seznamem všech přístupových modulů pro uzly , přičemž každý z nich má přehled o kapslích. Doporučuji vám podívat se na tuto stránku a zjistit, zda najdete vhodný modul pro řízení přístupu.

Modul Flexi Access se zdá být modulem, který nejlépe odpovídá vašim požadavkům, protože jeho primární funkce je nechat kontrolujete přístup pro jednotlivé uživatele, nikoli podle role nebo taxonomického termínu.

Je to malý modul, který umožňuje nastavit seznamy ACL (seznamy řízení přístupu) pro jednotlivé uživatele. Jde v zásadě o uživatelské rozhraní modulu ACL , takže je třeba jej také nainstalovat.

Postrádá některé funkce pokročilejších modulů pro řízení přístupu, jako je Content Access , ale je aktivně udržován a v jeho frontě problémů nejsou aktuálně žádné otevřené chyby.

Zveřejnění: Jsem správce systému Flexi Access.

1
Free Radical