menu con permessi
Buonasera,
finalmente ho realizzato il modulo custom dopo tanti ostacoli.
Questo modulo deve essere utilizzato da operatori diversi di drupal appartanenti a ruoli diversi.
Ora il dubbio è come faccio a far visualizzare delle voci in un menu a seconda del ruolo utente?
Grazie mille
Risposte
La visualizzazione di una
La visualizzazione di una voce su un menù è basata sui permessi dell'utente attuale sulla destinazione del link (se interna al sito). Se l'utente attuale ha un ruolo con un permesso di vedere questo elemento, vedrà la voce sul menù, sarà nascosta altrimenti.
Potresti anche definire dei permessi specifici sul tuo modulo custom (https://www.drupal.org/node/2311427 attraverso il file nomemodulo.permissions.yml) e poi usarli nelle routes / views e assegnarli ai ruoli.
Non ho capito bene come
Non ho capito bene come fare...
Nel mio caso ho due ruoli utenti con assengnati loro degli utenti.
Ora chi è in un ruolo deve potere vedere dei link in un menu mentre chi è in un altro
vede altre link configurati per quel luogo....
In questo caso non mi è proprio chiaro da dove partire e come far visualizzare il menu nellel
pagine che ho fatto..che poi non sono proprio pagine ma controller e classi form
Il mio file di routing è il seguente:
gestioneutenti.utenti_form:
path: '/admin/config/gestioneutenti/creaUtente'
defaults:
_form: '\Drupal\gestioneutenti\Form\GestioneUtenteForm'
_title: 'Aggiungi utente'
requirements:
_permission: 'access administration pages'
options:
_admin_route: TRUE
gestioneutenti.mostra_utenti:
path: '/admin/config/gestioneutenti/visualizzautenti'
defaults:
_controller: '\Drupal\gestioneutenti\Controller\GestioneutentiController::content'
_title: 'Gestione utenti ckan'
requirements:
_permission: 'access content'
gestioneutenti.modifica_utente_form:
path: '/admin/config/gestioneutenti/modificautente/{idutente}'
defaults:
_form: '\Drupal\gestioneutenti\Form\ModificaUtenteForm'
_title: 'Modifica dati utenti'
requirements:
_permission: 'access administration pages'
gestioneutenti.modifica_operatore_form:
path: '/admin/config/gestioneutenti/modificaOperatore/{idutente}'
defaults:
_form: '\Drupal\gestioneutenti\Form\ModificaOperatoreForm'
_title: 'Modifica dati utenti'
requirements:
_permission: 'access administration pages'
L'idea (di massima) potrebbe
L'idea (di massima) potrebbe essere questa:
1. definisci un nuovo permesso (es 'access custom page'), attraverso il file .permissions.yml (come detta sopra)
2. modifichi la route (ad es. 'gestioneutenti.utenti_form') utilizzando come _permission il nuovo permesso definito (_permission: 'access custom page')
3. assegni al ruolo voluto (es: gestore) il nuovo permesso dall'interfaccia standard di gestione dei permessi utente
Ora qualsiasi utente con il ruolo (gestore) può accedere alla route.
Puoi definire più permessi e assegnarli alle route da differenziare e poi ai ruoli desiderati.
Mi potresti postare un file
Mi potresti postare un file dei permessi completo e funzionante per vedere come funziona??
Non ne ho trovato nessuno....
Ed un'altra cosa per visualizzare le route che ho fatto in un menu laterale a sinistra, facendo comparire le voci sempre a secondo del ruolo dell'utente loggato come devo fare ??
Molti moduli del core
Molti moduli del core definiscono permessi. Ad esempio guarda nella cartella core/modules/node e troverai node.permissions.yml.
Lo trovi anche qui per riferimento https://api.drupal.org/api/drupal/core!modules!node!node.permissions.yml
"per visualizzare le route che ho fatto in un menu laterale a sinistra"
Puoi crearti un menu (admin/structure/menu) e inserire ad esso le voci (ad esempio /admin/config/gestioneutenti/creaUtente). Ogni menù genera un blocco che potrai posizionare in admin/structure/block. Ovviamente se vuoi posizionarlo a sinistra del contenuto devi prendere un tema che ha una regione a destra del contenuto (ad esempio Bartik). Le voci organizzando i permessi come sopra verranno visualizzate di conseguenza.
Ma dal pannello di drupal non
Ma dal pannello di drupal non posso assegnare determinati link a determinati ruoli ?
cosa più semplice io vorrei
cosa più semplice io vorrei fare che nel main menu navigation mi creo i miei link da visualizzare.
Ad esempio link1operatore, link2operatore e poi linkadmin1 linkadmin2 per utente admin,
questi metterli tutti nel main menu.
Solo che a seconda del ruolo collegato vengono visualizzati quei link si può fare??
Se si come ?
Con questi link, menu e permessi sto trovando molte diccoltà
Praticamente vorrei far
Praticamente vorrei far comparire le mie voci di menu vicino alle voce modifica,
e selezionate in base al ruolo del utente collegato.. come devo fare ?
Questo è il contenuto del
Questo è il contenuto del file routing.yml, i ruoli ruolo1 e ruolo2 li ho definiti in drupal con due ruoli diversi già cosi non dovrebbe andare, la separazione dei path?
gestioneutenti.utenti_form:
path: '/admin/config/gestioneutenti/creaUtente'
defaults:
_form: '\Drupal\gestioneutenti\Form\GestioneUtenteForm'
_title: 'Aggiungi utente'
requirements:
_role: 'ruolo2'
gestioneutenti.mostra_utenti:
path: '/admin/config/gestioneutenti/visualizzautenti'
defaults:
_controller: '\Drupal\gestioneutenti\Controller\GestioneutentiController::content'
_title: 'Gestione utenti ckan'
requirements:
_role: 'ruolo1'
gestioneutenti.modifica_utente_form:
path: '/admin/config/gestioneutenti/modificautente/{idutente}'
defaults:
_form: '\Drupal\gestioneutenti\Form\ModificaUtenteForm'
_title: 'Modifica dati utenti'
requirements:
_role: 'ruolo1'
gestioneutenti.modifica_operatore_form:
path: '/admin/config/gestioneutenti/modificaOperatore'
defaults:
_form: '\Drupal\gestioneutenti\Form\ModificaOperatoreForm'
_title: 'Modifica dati utenti'
requirements:
_role: 'ruolo2'
non ho capito come definire
non ho capito come definire il nuovo permesso per quel link e restringerlo a quel ruolo
Va bene anche così. Per i
Va bene anche così.
Per i tabs: prova a implementare
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Menu!menu.api.php/function/hook_menu_local_tasks_alter/8.2.x
Ho fatto un file permessi
Ho fatto un file permessi cosi fatto come esempio
access imported twitter content:
title: 'Accesso 1'
description: 'Descrizione 1'
restrict access: FALSE
alter imported twitter styles:
title: 'Accesso 2'
description: 'Descrizione 2'
restrict access: TRUE
warning: 'CSS classes and styles can contain Javascript making this a potential attack vector.'
e facendo il refresh mi sono comparsi i permessi nella pagina dei permessi...
Ma non ho capito come assegnare questi permessi ad i ruoli e come assegnarli poi alle route che possono vedere...
Ciao allora ho fatto cosi, ho
Ciao allora ho fatto cosi, ho creato il file nomemodulo.permession.yml cosi:
access imported twitter content:
title: 'Accesso 1'
description: 'Descrizione 1'
restrict access: FALSE
access custom page2:
title: 'Accesso 2 prova'
description: 'Descrizione 2 prova'
restrict access: TRUE
warning: 'CSS classes and styles can contain Javascript making this a potential attack vector.'
Il file di routing del modulo così l'ho modificato
gestioneutenti.utenti_form:
path: '/admin/config/gestioneutenti/creaUtente'
defaults:
_form: '\Drupal\gestioneutenti\Form\GestioneUtenteForm'
_title: 'Aggiungi utente'
requirements:
_role: 'operatore'
gestioneutenti.mostra_utenti:
path: '/admin/config/gestioneutenti/visualizzautenti'
defaults:
_controller: '\Drupal\gestioneutenti\Controller\GestioneutentiController::content'
_title: 'Gestione utenti ckan'
requirements:
_role: 'ruolo1'
gestioneutenti.modifica_utente_form:
path: '/admin/config/gestioneutenti/modificautente/{idutente}'
defaults:
_form: '\Drupal\gestioneutenti\Form\ModificaUtenteForm'
_title: 'Modifica dati utenti'
requirements:
_role: 'ruolo1'
gestioneutenti.modifica_operatore_form:
path: '/admin/config/gestioneutenti/modificaOperatore'
defaults:
_form: '\Drupal\gestioneutenti\Form\ModificaOperatoreForm'
_title: 'Modifica dati utenti'
requirements:
_permission: 'access custom page2'
ed infine con drupal ho creato il ruolo operatore a cui ho associato il permesso 'access custom page2' ed ovviamente a tale ruolo è associato un utente, ma quando lancio il path
/admin/config/gestioneutenti/modificaOperatore
mi da accesso negato perchè ?
I permessi sui metodi sono
I permessi sui metodi sono andati, costruendo il file dei permessi, associandolo alla route nei file di routing e poi creando il resto lato drupal.
Ora per quanto riguarda invece i link dei menu personalizzati come posso fare ???
Ottimo, per i tab vedi link
Ottimo, per i tab vedi link commento sopra http://www.drupal.it/supporto/menu-con-permessi#comment-12888 funzione hook_menu_local_tasks_alter().