it-swarm.it

Modulo Views: come limitare l'accesso da parte dell'utente

Sto usando il modulo Viste per creare una vista alla quale solo utenti specifici dovrebbero poter accedere. So che Views include il controllo degli accessi in base al ruolo o alle autorizzazioni, ma ho bisogno di qualcosa di più preciso: in sostanza, voglio essere in grado di dire che solo l'utente "x" e l'utente "y" possono accedere a una vista particolare (o qualcun altro con un ruolo di amministratore del sito). Quindi questo funzionerebbe in modo molto simile a come il modulo ACL agisce per i singoli nodi.

L'approccio migliore per creare un plug-in di accesso alle visualizzazioni personalizzate? Non ho molta esperienza con questo.

Inoltre, mi chiedo di utilizzare un argomento con qualche convalida per raggiungere questo obiettivo (in modo che non debba creare dozzine di visualizzazioni separate). Ad esempio, poiché questa vista sarà una scheda su un percorso nodo specifico, mi chiedo di impostare un campo di riferimento utente su quel nodo che specifica chi potrebbe vedere la vista. Avrei solo bisogno di un modo per convalidare la vista solo se l'utente corrente è uguale a un utente specificato nel campo di riferimento dell'utente.

Qualche idea? O sto rendendo questo più complicato di quanto debba essere?

Grazie Ben

8
BenK

Invece di limitare le autorizzazioni per la vista, è possibile limitare le autorizzazioni per la voce di menu che conduce a quella vista (che si tratti di una scheda su un nodo o di una richiamata del menu). Puoi creare la tua vista solo con una visualizzazione "Predefiniti" e nessuna visualizzazione Pagina (quindi gli utenti non possono semplicemente capire il percorso). Quindi nel tuo page callback per la voce di menu basta chiamare views_embed_view per visualizzare la vista. Sembra che gestire le autorizzazioni su una voce di menu potrebbe essere più semplice che scrivere un nuovo plug-in per Views (anche se un plug-in potrebbe essere utile per gli altri).

5
Chaulky

Prova il modulo Views Access Callback .

Fornisce il controllo di accesso basato sulla richiamata per Views.

Le funzioni di callback disponibili sono definite dai moduli utilizzando la funzione hook_views_access_callbacks() (allo stesso modo di hook_perm()), quindi possono essere impostate nella configurazione "Restrizioni di accesso" della vista.

6
user5318

Mi manca qualcosa, ma sembra che tu crei un nuovo ruolo e aggiunga questi utenti. Quindi utilizzare l'accesso alle visualizzazioni: funzione ruolo.

Se hai bisogno di associare i diritti di accesso a qualcosa nei contenuti, utilizzerei un accesso a Views personalizzato, che ho riscontrato un malfunzionamento durante la configurazione iniziale, ma apprezzerei la flessibilità una volta funzionante. Se la vista genera la voce di menu, non verrà visualizzata se la vista non passa la funzione di accesso.

Se stai nascondendo solo una voce di menu, mi sembrerebbe che la vista sarebbe ancora in esecuzione e un Utente potrebbe modificare un URI per visualizzare i dati.

Jerry

2
Jerry

Che ne dici di usare il modulo Autorizzazioni personalizzate per creare alcune nuove autorizzazioni specificamente per il tuo scopo, e quindi usare il modulo Autorizzazioni utente per assegnare quelle nuove autorizzazioni ai singoli utenti?

Il modulo delle autorizzazioni personalizzate è molto leggero. Non sono così sicuro del modulo Autorizzazioni utente, poiché essenzialmente crea un nuovo ruolo per ogni utente dietro le quinte (questi ruoli non sono visibili nella pagina delle autorizzazioni principali). Se hai molti utenti, questo potrebbe aumentare leggermente le dimensioni dei tuoi ruoli e le tabelle user_roles.

1
Tom Kirkpatrick

Se desideri combinare diversi plug-in di accesso in Views, ti consigliamo di dare un'occhiata al modulo Views access many .

0
Steven Jones

Bene, ha più senso. Penso che potresti (possibilmente, non sicuro al 100%) usare una vista e un argomento. Impostare l'argomento come id utente preso dall'utente attualmente connesso e fare in modo che l'argomento predefinito non visualizzi nulla. Dovrebbe essere in grado di farlo, anche se non so quanto sia sicuro che sia giusto. Se lo provi, rispondi e fammi sapere i tuoi progressi.

0
Jamie Hollern