[RISOLTO] Gestione di utenti, permessi, ruoli, ... ho un blocco

Ciao scusate per la non precisione nel quotare, cmq grazie all’amico d4rkstar sono arrivato alla conclusione che (quello che viene definito nella guida a Rights come “additional feature” in realtà non sono tanto addizionali quanto obbligatorie)

e cioè:

1>ereditare i propri Controllers da RController (non da CController)

2>inserire all’interno della function Filters (dei controllers) la parolina ‘rights’ al posto di ‘accessControl’

solo così il tutto funziona !

Mi sfugge una cosa fondamentale: le operazioni definite con $auth->createOperation corrispondono alle azioni dei controller dell’applicativo oppure sono delle label arbitrarie, da usare poi con

?

Io uso right in questo modo:




if(Yii::app()->user->checkAccess('MiaOperazione'))

{

// create post

}



Puoi usarlo gestendo le azioni del controller, ma così decidi quali azioni possono compiere gli utenti. A me piace immaginare che la stessa azione possa essere vista da tutti quanti, ma in modi differenti.

Lo skeleton di applicazione che hai preparato e reso disponibile è molto comodo.

Lo stavo guardando a fondo perché penso meriti di essere aggiunto tra le cose che deve guardare un novello,

che non sa ancora bene come iniziare.

Mi sono accorto di un mini bug:

quando mi collego su

…/index.php/gii

anche se nella configurazione il gii è abilitato.

dice: [color="#555555"][font="Arial, Helvetica, sans-serif"][size="2"]You are not allowed to access this page.[/size][/font][/color]

[color="#555555"][font="Arial, Helvetica, sans-serif"] [/font][/color]

[color="#555555"][font="Arial, Helvetica, sans-serif"][size="2"]Ho dovuto aggiungere nel main.php:[/size][/font][/color]

[color="#555555"][font=“Arial, Helvetica, sans-serif”][size=“4”]‘ipFilters’=>array(’...’,’::1’),[/size][/font][/color]

Grazie paskuale,

queste tue informazioni mi sono state molto utili.

Sono nuovo di yii, ma spero di poter apportare un aiuto a voi e a quelli che verranno dopo di me (si spera tantissimi !!! :D )

Sei il benvenuto!!! Effamola crescere sta community!!!

Salve ragazzi,

ho questa domanda da farvi.

Premetto che ho ben capito come utilizzare checkAccess() per la gestione dei permessi sulle operazioni.

Ma quello che mi chiedo ora è se era possibile avere qualcosa del tipo di


Yii::app()->user->isGuest

per gli altri ruoli presenti nell’applicazione? E quindi una cosa più generale rispetto al fatto di dover creare un operazione per ogni azione da limitare ad un certo tipo di utenza.

Se ricordo bene, esiste il metodo hasRole. Mentre checkAccess controlla il singolo permesso, hasRole verifica il ruolo.

ummm. sul class reference non c’è niente di simile.

Hai provato ad usare checkAccess per i ruoli?

Mi sembra troppo logorroico RBAC, ottimo per applicazioni che devono gestire tanti ruoli in modo dinamico (ruoli che si aggiungono runtime) ma se un’applicazione ha a che fare con un insieme statico di ruoli es admin, user, altroruolo1, altroruolo2 secondo me fai un paio di campi 1/0 nella tabella users(flag_is_admin, flag_is_altroruolo1…) e filtri gli accessi nel controller a livello di rules controllando i flag nell’user loggato così:




	public function accessRules() {

		Yii::app()->authManager->showErrors = true;

		return array(

			array('allow',

				'expression' => '

					Yii::app()->session["flag_is_admin "]==1

				',

			),

			array('deny', // deny all users

				'users' => array('*'),

			),

		);

	}



P.S. : valore di sessione non nei cookie ovviamente!

Sarò stupido ma ho avuto troppe difficoltà con RBAC, più di quante dovrebbe impegnarmi una cosa così semplice da fare.

Ho deciso di usare di YII solo quello che reputo mi faccia risparmiare ore di vita, il resto lo scarto

Fai bene! =) Io spero di farmi presto un gestore di ruoli/permessi tutto mio. Vorrei semplicemente creare dei permessi. Quindi usarli nel codice per abilitare o disabilitare delle parti di view. Quindi avere una gestione semplice: una tabella con utenti e permessi. Tutto selezionabile con checkbox. Magari, ecco, ci faccio pure un modulo. Spero che ai clienti serva perchè altrimenti no ho tempo per farlo in questo momento =(.

Si in effetti funziona, mi hai aperto la mente :)

Mi piace anche il modo in cui il problema è stato affrontato da proid, è un ottima soluzione.

Ciao a tutti, sono nuovo di YII ma vorrei scoprire la sua potenza come voi ;) la cosa che non mi è chiara è sull’utilizzo di rights ovvero: tu continui, a quanto ho capito, ad utilizzare il checkAccess… ma per gestire tutto con rights ho letto in un post di giancarlo che basta

  1. estendere da RController anziché Controller

  2. modificare la function filters() restituendo rights anziché accessControl

  3. A questo punto la funzione accessRules non dovrebbe più servire

la mia domanda è: quale sia la strada più corretta… e nello specifico non mi è chiaro se continuando ad utilizzare accessControl si stia realmente sfruttando rights oppure no.

Spero di essermi spiegato ;)

Grazie per questa community ottima!!!

La strada più giusta non esiste. Se esistesse si dovrebbe/potrebbe fare solo in quel modo. Ogni situazione ha una strada migliore. Per quel che faccio io, per come lo faccio io, checkAccess è la mia soluzione ottima. Questo perché al momento utilizzo un solo layout che si comporta in modo diverso a seconda di chi lo naviga. Faccio questo non avere tanti layout. Ma quando i layout dovessero diventare molto differenti, in quel caso proteggo la rotta e non il singolo pezzo di view. E’ una faccenda di “style”.

Buongiorno a tutti. Sono nuovissimo sia di yii che in questo forum. Volevo chiedervi una cosa. Ho seguito la guida di installazione del modulo rights ma non ne cavo piede. Mi da sempre errori. Chiedo un particolare a Sensorario riguardo al modulo che stava creando per la gestione dei permessi. Devo sviluppare un’ applicazione, dove avrei bisogno della gestione dei permessi in base al fatto se un utente sia o meno il titolare o un dipendente. Come posso fare? Mi potete dare delle dritte? Mastico abbastanza php e mysql, ma leggendo in giro che questo framework è fenomenale perchè semplifica il lavoro vorrei provare a sviluppare il tutto con il suo utilizzo. Ovviamente essendo un “prodotto” a me ancora sconosciuto devo capire come funziona. Ma sicuramente un “guida umana” mi aiuterebbe ;D