Documenti privati con anteprima
Ciao a tutti,
ho un problema, probabilmente semplice, che non riesco a risolvere. Ho dei file privati con accesso controllato tramite "control access", fin qui tutto bene. Ora ho necessità di far vedere l'icona dei file a tutti gli utenti ma l'accesso è riservato solo a determinati ruoli. Come posso fare? Non sono riuscito a trovare una discussione ben costruita su questo problema... con "controll access" i file non autorizzati non vengono visualizzati in anteprima.
Grazie a tutti, Paola
Risposte
Ciao, se utilizzi "content
Ciao, se utilizzi "content access" i file privati sono accessibili e visibili solo agli utenti che possono visualizzare il nodo a cui sono allegati.
Potresti provare con Views ad estrarre la lista dei files privati del nodo e disabilitare la riscrittura sql (avanzate > altro > Impostazioni della query > Disabilita riscrittura SQL) in modo che anche gli utenti non autorizzati ad accedere al nodo possano visualizzare tale lista.
Quoto la soluzione di
Quoto la soluzione di Maurizio ma ha implicazioni di sicurezza anche sulle entità collegate quindi di solito io lo faccio da codice sfruttando la funzionalità di VIEWS PHP
https://www.drupal.org/project/views_php
Ciao rednode, se l'utente ha
Ciao rednode, se l'utente ha la possibilità di utilizzare il linguaggio php, sarebbe molto meglio scrivere su file (la cosa più semplice forse facendo l'override di un template della vista). Non sono un grande fan di views php, php filter e in generale dell'utilizzo di codice da interfaccia.
Sono d'accordo che disabilitare la riscrittura sql è un'operazione da fare con attenzione in quanto fa saltare il sistema di permessi di accesso ma in questo caso è proprio questo che si richiede (cioè tutti devono vedere i link del file anche se non hanno accesso al nodo). I link ai file privati sono tuttavia ancora protetti dell'accesso diretto perchè comunque l'utente non ha accesso effettivo al nodo a cui sono allegati.
In questo scenario, quali implicazioni di sicurezza potrebbe avere disabilitare la riscrittura? Per entità collegate cosa intendi esattamente? Mi sto immaginando uno scenario abbastanza semplice per la vista in questione, senza relazioni e utilizzando campi e non entità renderizzate: in effetti sono stato un pò stringato nel post ma era giusto per dare l'idea.
Sottoscrivo il fatto che la
Sottoscrivo il fatto che la cosa migliore non sia inserire il php all'interno del db e sarebbe sempre meglio fare da codice infatti preferisco anche io tale metodo e dove ho le possibilità preferisco usare hook_query_alter()
Ma disattivando la riscrittura della vista oltre ad node_access anche tutti i moduli che implementano hook_query_alter() vengono ignorati. Più che una problemata legata alla sicurezza (ovviamente non so come è fatta la struttura del node ma immagino che a questo punto il file sia una nodo referenziato altrimenti con content access non puoi filtrare il permesso per singolo campo ma dovresti usare field permission) disattivi anche i controlli legati ad eventuali altre entità collegate al nodo con un entity reference.
Inoltre disattivando la riscrittura ho avuto alcuni problemi con altri moduli che appunto sfruttavano hook_query_alter per caricare dati aggiuntivi per la visualizzazione. Ad ogni modo come scritto anche nel post precedente quoto la tua soluzione anche se preferisco altro.
Sì assolutamente, la
Sì assolutamente, la possibilità di information disclosure si va a creare con una certa facilità (basta anche solo pensare allo stato del nodo pubblicato/non pubblicato che non viene più preso in conderazione, per cui è buona norma inserire filtri che rafforzano almeno i vincoli minimi da rispettare), quindi va fatta particolare attenzione nel costruire la vista.