Come limitare l'accesso diretto ai nodi?


12

Come limitare l'accesso diretto ai nodi ma consentire solo alle viste di accedere al campo richiesto del tipo di nodo specifico?

Ad esempio, in Slideshow Slideshow stiamo facendo scorrere il campo immagine che appartiene a un particolare tipo di nodo. Ma non vogliamo che i motori di ricerca accedano e che i visitatori accedano ai nodi appartengono a quel tipo di nodo.

Eventuali suggerimenti?

Risposte:


12

Una soluzione semplice sarebbe quella di non pubblicare i nodi a cui non si desidera essere accessibili. Le viste possono comunque estrarre i dati da quei nodi.


1
Troppo facile? Non esiste una "soluzione troppo semplice". La complessità non è un obiettivo in sé, vero? Forse la risposta di Googletorp non risolve il tuo problema specifico, ma in tal caso dovrai essere più elaborato e spiegare perché no.
marcvangend,

@marcvangend Anche se è tardi, ma ho capito che non è la risposta alla mia domanda. Spero che qualcuno possa aggiungere una risposta migliore
Fahad Ur Rehman,

@Fahad Per ottenere risposte migliori, è necessario porre domande migliori. La risposta di Googletorp mi sembra una buona soluzione, e i voti sembrano essere d'accordo. Se non risolve il problema, accedi e modifica la domanda, aggiungendo tutti i dettagli pertinenti.
marcvangend,

@marcvangend in realtà il mio problema è stato risolto e ho accettato la risposta prima ma alla luce del tuo commento. Googletorps ha una reputazione molto alta, non fa alcuna differenza se accetto o non accetto la sua risposta. Ha fornito un'eccellente soluzione alternativa per la quale ho anche votato lui.
Fahad Ur Rehman,

@Fahad Per accetto una risposta che stai dicendo: questa risposta ha risolto il mio problema. È una dichiarazione potente e molto utile per i visitatori a venire, per scoprire se una risposta è utile o meno. Se la mia risposta non ha risolto il tuo problema, allora dovresti modificare la tua domanda e pubblicare alcuni dettagli sul perché la mia soluzione non funziona per te e come diceva marcvangend, aggiungi maggiori dettagli.
googletorp

3

Se non pubblichiamo nodi aggiunti dall'utente1, questi non saranno modificabili da nessun altro utente anche se l'utente ha i diritti per modificare il contenuto di quel tipo di contenuto.

Limita visualizzazione pagina nodo sembra un modo migliore per limitare l'accesso diretto a qualsiasi nodo di tipo di contenuto specifico.

L'uso è anche abbastanza semplice, devi solo abilitare questo modulo e configurare le autorizzazioni per i nodi che sono direttamente accessibili normalmente.

http://drupal.org/project/restrict_node_page_view

Dalla pagina del progetto:

Hai mai usato un nodetipo di presentazione che devi pubblicare, ma non vuoi che il nodo sia accessibile da solo usando il percorso nodo / XXX? Questo modulo è per te!

Con questo modulo è possibile disabilitare l'accesso diretto alle pagine dei nodi (nodo / XXX) in base a nodetipi e autorizzazioni.

Abilita il modulo e non dimenticare di configurare le tue autorizzazioni.


1

Un altro modulo che fa la stessa cosa ma con più funzionalità.

Tana del coniglio

I manutentori di questo progetto chiedono di "Limitare la visualizzazione della pagina del nodo" al manutentore di unire i progetti in questione.

Vantaggi rispetto a "Limita visualizzazione pagina nodo":

  • Stessa funzionalità principale sul nodo ma estendibile ai termini utenti / file / tassonomia
  • Può essere usato nel tuo modulo
  • Può essere globale per tipo di contenuto o su ogni contenuto
  • Vedi di più sulla pagina del progetto ...

Svantaggio rispetto a "Limita visualizzazione pagina nodo":

  • Più codice quindi probabilmente meno efficace (bisogno di test, non provato)

1

dovresti usare node_access(), ci sono alcune opzioni che puoi facilmente implementare usando hook_node_access(). L'implementazione node_access()consente di prendere una decisione su chi può accedere a un nodo e chi può creare, eliminare, modificare o aggiornare tale nodo. Le viste, tuttavia, possono comunque estrarre dati da questi nodi.

hook_node_access () , node_access ()


0

Ispirato da https://www.drupal.org/project/restrict_node_page_view potresti scrivere tu stesso un piccolo modulo:

/**
 * Implements hook_node_access()
 */
function MYMODULE_node_access($node, $op, $account) {

  // Default checks
  if (!is_object($node)) {
    return NODE_ACCESS_IGNORE;
  }

  $type = is_string($node) ? $node : $node->type;

  if($op == 'view' && arg(0) == 'node' && arg(1) === $node->nid) {

    // Restrict access to full MYTYPE node for anon users
    if ($type == 'MYTYPE' && user_is_anonymous()) {
      return NODE_ACCESS_DENY;
    }
  }
  // Default
  return NODE_ACCESS_IGNORE;
}

Questo modulo è già stato menzionato un paio d'anni fa. Potresti spiegare quali novità porta la tua risposta all'argomento?
Mołot,

@ Mołot - ... per scrivere un modulo tu stesso. Risposta modificata.
leymannx,

0

Utilizzando il modulo Regole è possibile implementare una regola simile a questa:

{ "rules_check_url" : {
    "LABEL" : "Disallow node/* access",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : { "init" : [] },
    "IF" : [
      { "text_matches" : {
          "text" : [ "site:current-page:url" ],
          "match" : "node\/\\d+$",
          "operation" : "regex"
        }
      }
    ],
    "DO" : [
      { "drupal_message" : {
          "message" : "Sorry, direct access to URLs like [site:current-page:url] is not allowed around here ...",
          "type" : "error"
        }
      },
      { "redirect" : { "url" : "no_access" } }
    ]
  }
}

La regola di cui sopra non tiene (ancora) in considerazione per applicare l '"azione" solo ai ruoli selezionati (ad esempio, in modo che gli amministratori possano comunque utilizzare questi percorsi per visualizzare un nodo). Ma per chiunque abbia un po 'di familiarità con il modulo Regole, questa è una "Condizione" diretta da aggiungere ...

Per sperimentare questa regola nel tuo sito, copia semplicemente l'intero codice Regole sopra e incollalo in una nuova Regola nel tuo sito, creata tramite la funzione "Importa". Quindi modifica / perfeziona ulteriormente per adattarlo al tuo ambiente (ad esempio il messaggio "Siamo spiacenti, ..." da mostrare).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.