Come può un utente l'accesso solo un nodo specifico, e non tutti i nodi di quel tipo?

drupal.stackexchange https://drupal.stackexchange.com/questions/905

  •  16-10-2019
  •  | 
  •  

Domanda

Ho un utente con visualizzare e modificare i diritti a un tipo di contenuto specifico. Questo dà il privilegio a tutti gli utenti di visualizzare e modificare tutti i nodi di quel tipo. Ma in realtà, voglio creare per ogni utente un nodo unico, in modo che solo l'utente può visualizzare e modificare esso. Come posso fare questo in Drupal 7?

È stato utile?

Soluzione

L'utilizzo di un modulo esistente, è possibile farlo con di accesso al contenuto, che (se usato insieme ACL ) permette di impostare i permessi per accedere a un nodo per ogni utente.
Ciò significa che è necessario impostare manualmente le autorizzazioni di accesso per ogni nodo.

Se si crea manualmente i nodi, e poi si vuole essere sicuri che solo l'utente che è impostato come proprietario del nodo è in grado di visualizzare (e modificare), allora è possibile creare un modulo personalizzato (che significa un modulo che viene utilizzato per il sito), e implementare hook_node_access() come segue (il codice è stato scritto per rendere più facile la lettura):

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

Con questa implementazione gancio, non c'è bisogno di modificare manualmente le autorizzazioni di accesso dati per ogni nodo di che tipo di contenuto creato. Modifica del proprietario del nodo sarebbe anche più facile, in quanto non è necessario modificare le autorizzazioni di accesso di quel nodo; il codice avrebbe concesso automaticamente le autorizzazioni aggiornamento e vista sul set di utente come proprietario (o autore) del nodo.

Altri suggerimenti

Non c'è bisogno di alcun codice speciale modulo o personalizzato per fare questo. Basta creare manualy quei nodi, impostare utenti appropriati come proprietario (autore) dei nodi e impostare le autorizzazioni a questa contentype per modificare il contenuto proprio solo (non modificare alcun contenuto di questo tipo) e si è fatto.

Che cosa si sta parlando è il controllo di Drupal accesso nodo, che è un soggetto enorme.

Il nucleo è il supporto integrato per il controllo dell'accesso nodo è piuttosto corso, e per controllare l'accesso a visualizzare un nodo ruolo, è necessario utilizzare una sorta di modulo di controllo di accesso nodo. C'è un href="http://drupal.org/node/270000" pagina a Drupal.org messa in vendita di tutti gli accessi nodo moduli , con una revisione capsula di ciascuno. Vi suggerisco di dare un'occhiata a quella pagina per vedere se è possibile trovare un modulo adatto per il controllo di accesso.

Il modulo Flexi accesso sembra essere il modulo che più si avvicina alle vostre esigenze, come il suo funzione primaria è quello di poter controllare l'accesso per i singoli utenti, piuttosto che per ruolo o per durata tassonomia.

Si tratta di un piccolo modulo che consentono di impostare ACL (Access Control Lists) per i singoli utenti. Si tratta essenzialmente di un interfaccia utente per il ACL modulo, quindi è necessario installare anche quello.

E 'manca di alcune delle caratteristiche dei moduli di controllo accesso più avanzate, come Content Access , ma si è mantenuto attivamente e non ci sono bug attualmente aperti nella sua coda di emissione.

Disclosure:. Io sono il manutentore di Flexi di accesso

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a drupal.stackexchange
scroll top