C'è un modo per evitare che un utente anonimo possa vedere un nodo di un tipo di contenuto specifico?


9

C'è un modo per evitare che utenti anonimi possano vedere nodi di un tipo di contenuto, come un blocco o una vista?

Posso controllare l'accesso con una vista, ma se conosco il collegamento per un nodo, posso vederlo senza prima accedere.

Risposte:


10

Puoi controllare l'accesso ai nodi nel hook hook_node_access ():

mymodule.module:

use Drupal\node\NodeInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\Access\AccessResult;

function mymodule_node_access(NodeInterface $node, $op, AccountInterface $account) {
  if ($account->isAnonymous() && $node->gettype() == 'article') {
    return AccessResult::forbidden()->cachePerPermissions();
  }
  return AccessResult::neutral()->cachePerPermissions();
}

Questo controlla l'accesso diretto al nodo, non l'accesso nelle viste. Ma questo è probabilmente quello che vuoi.


Credo che anche per controllare l'accesso in vista, useresti hook_node_grants.
Jonathan,

4

La soluzione migliore è utilizzare Rabbit Hole o Content Access quando è disponibile una versione aggiornata.

Tana del coniglio

Rabbit Hole è un modulo che aggiunge la possibilità di controllare cosa dovrebbe accadere quando un'entità viene visualizzata sulla propria pagina. Forse hai un tipo di contenuto che non dovrebbe mai essere visualizzato sulla propria pagina, come un tipo di contenuto di immagine che viene visualizzato in un carosello. Rabbit Hole può impedire a questo nodo di essere accessibile sulla propria pagina, tramite node / xxx.

Accesso al contenuto

Questo modulo consente di gestire le autorizzazioni per i tipi di contenuto per ruolo e autore. Ti consente di specificare la visualizzazione personalizzata, modificare ed eliminare le autorizzazioni per ciascun tipo di contenuto. Facoltativamente, è possibile abilitare le impostazioni di accesso al contenuto, in modo da poter personalizzare l'accesso per ciascun nodo del contenuto.

Si noti che ciò che credo che si desideri è bloccare tutti gli accessi a un nodo di un tipo di contenuto - e solo l'accesso ai contenuti lo soddisferà su Rabbit Hole.

Oltre a ciò, penso che saresti interessato a implementare il tuo controllo di accesso se nessuno di questi casi.


Mi dispiace rispondere alla tua risposta Kevin, ma hai familiarità con il modulo Gruppo ? Guarda il video tutorial per capire cosa intendo ... A proposito: per D7 ho anche raccomandato "Accesso ai contenuti".
Pierre.Vriens,

2
Non da quando era OG. Un po 'pesante da installare a meno che non sia necessario in tal senso?
Kevin,

" ... da quando era OG "? Che cosa vuoi dire con questo? E su "pesante": sei OG (se così sono d'accordo) o gruppo (se così non sono d'accordo)?
Pierre.Vriens,

Ho sempre pensato che Group fosse un fork di OG per D8
Kevin

Scusa (di nuovo) Kevin, non è così ... leggi di più .
Pierre.Vriens,

1

Forse vuoi provare a utilizzare il modulo Gruppo , che consente di creare raccolte arbitrarie di contenuti e utenti sul tuo sito e concedere le autorizzazioni di controllo dell'accesso su tali raccolte. È disponibile a partire da D7 e ha anche una versione D8. Crea gruppi come entità, rendendoli pienamente fieldable, estensibili ed esportabili. A ciascun gruppo possono essere associati utenti, ruoli e autorizzazioni (fare riferimento a " Quali sono i vari ruoli supportati dal modulo Gruppo? " Per ulteriori dettagli a riguardo).

Per questa domanda specifica, abiliterai il gnodesottomodulo e per ogni tipo di gruppo definiresti le autorizzazioni appropriate (visualizza, modifica, elimina, ecc.) Per i vari tipi di contenuto.

Sembra che tu voglia concedere l'accesso a ciò che, in Gruppo, è chiamato "Membri" e "Outsiders" (= utenti registrati che non sono membri di un gruppo). Ma non consentiresti l'accesso a "Anonimo" (visitatori del sito che non lo hanno registrato).

risorse


1

È possibile utilizzare il modulo Autorizzazioni di visualizzazione nodo .

Abilitalo e quindi puoi assegnare quali ruoli possono visualizzare quali tipi di contenuto nel percorso 'admin / persone / autorizzazioni' nella sezione 'Autorizzazioni vista nodo'

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.