Voce Di Menu

Ciao a tutti,

ho iniziato da poco ad usare questo framework, mi ha molto sorpreso.

E devo dire che mi ha molto sorpreso anche la "densità" di informazioni di questo forum, per questo ringrazio tutti.

Vi chiedo una aiuto. Ho configurato users e rights.

Uso zii.widgets.CMenu per generare il menu.

Vorrei che le voci di menù siano visualizzate se l’utente che naviga ha i diritti per usare quella funzione.

Per fare questo ho usato:


array('label'=>'Utenti', 'url'=>array('/user'), 'visible'=>Yii::app()->user->checkAccess('Gestore')===true),

Gestore è un ruolo che ho configurato con rights; in questo modo la voce di menù viene visualizzata solo se l’utente ha il ruolo Gestore.

Questa soluzione funziona ma non mi piace perchè Gestore posso cambiarla a front-end e non funzionerebbe più.

Vorrei capire se esiste la possibilità non so se con checkAccess o con altro di scrivere qualcosa del genere:


array('label'=>'Utenti', 'url'=>array('/user'), 'visible'=>(l'utente ha il permesso di visualizzare /user)===true),

scusate la mia domanda banale.

grazie

La domanda non è banale, forse è banale la mia di domanda.

Hai detto "Questa soluzione funziona ma non mi piace perchè Gestore posso cambiarla a front-end e non funzionerebbe più.". Bene: perché renderla modificabile a front-end se modificarla non la farebbe più funzionare?

rights pubblica una interfaccia di gestione di ruoli e permessi a cui l’amministratore può accedere e con cui può modificare il nome del ruolo.

Questo potrebbe essere anche utile ad un amministratore oppure potrebbe essere creato un nuovo ruolo a cui dare il permesso che nel codice sorgente non c’è…

Questo è chiaro e la mia domanda rimane: se tu sai che nel codice c’è un ruolo, e che quel ruolo non lo devi modificare, perché farlo?

cioè tu mi stai dicendo di rendere quel ruolo non modificabile ed eventualmente creare altri ruoli "dipendenti" da quello fissato?

Ripeto: una volta che hai scritto un codice che verifica se tu hai un ruolo, perché devi cambiare il significato o il nome di quel ruolo dal front-end? Voglio dire: io con Rights mi creo un permesso, e poi uso il nome/riferimento di quel permesso dentro al codice. Non mi azzardo a modificare il nome di quel permesso. Non ne vedo il motivo.

ok. ti ringrazio tanto.

forse ho compreso la necessità di fdilecce ed il problema non è da poco…

Mettiamo il caso non di cambiare il ruolo ma semplicemente aggiungere un secondo ruolo, differente, ma che possa vedere comunque la label.

A questo punto dovrei creare il ruolo con rights e specificare nel codice che la label è visibile per entrambi i ruoli.

Mentre la cosa ottimale sarebbe poter definire un "permesso", dire in back-end che la label è visibile per tutti quelli con un determinato permesso ed associare in front-end quel permesso ai ruoli

Almeno questo è quanto sono riuscito a comprendere io :unsure: :unsure: :unsure:

si confermo che più o meno l’esigenza è in questa direzione. Immagino che a questo punto la soluzione è creare un ruolo che sia “figlio” del primo creato.

a parità di codice, ovvero utilizzando


checkAccess('Gestore');

non penso che funzioni perché fatta salva l’ereditarietà dei permessi, in questo caso tu controlli che il ruolo sia Gestore, quindi un eventuale figlio non combacerebbe. Sarebbe comunque da provare ;)

In effetti non metterei mai un ruolo nel codice:


Yii::app()->user->checkAccess('Gestore')

Ma la singola azione:


Yii::app()->user->checkAccess('VisualizzaPaginaUtenti')

Tante azioni, possono essere legate ad un singolo ruolo, e ci basterà assegnare quello all’utente.

concordo… a questo punto meglio non fare un controllo sui ruoli ma sul permesso, grazie per la risposta sensorario, prezioso come sempre

Salve ragazzi,

io sono molto nozivio di yii e mi interesserebbe capire questa funzione. Ho installato rights e users seguendo le guide in inglese. Ora vorrei che alcune voci del menu non fossero visibili a un’ utente che non ha un certo privilegio. Non ho ben capito come creare le regole e come assegnare i privilegi. Mi spiego meglio. Supponiamo che io abbia l’ utente Pippo che è un untente “normale” Non essendo admin deve vedere solo alcune voci del menu. Come posso fare? Potete darmi una mano perfavore? Grazie in anicipo!!