Yii Framework Forum: [Risolto] Yii Rights Module Tutorial - Yii Framework Forum

Jump to content

  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

[Risolto] Yii Rights Module Tutorial Guida all'installazione del modulo rights di yii Rate Topic: ***** 3 Votes

#1 User is offline   Giancarlo 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 242
  • Joined: 20-December 11
  • Location:Turin, Italy

Posted 22 December 2011 - 11:17 AM

Questa guida è per favorire i principianti nell'installazione del modulo rights per la gestione dell'autenticazione di yii.
Finora tra tutti i moduli che ho visto, mi sembra uno di quelli fatti meglio.
Prima avevo provato srbac ma direi che non c'è proprio confronto
e quindi ne consiglio sicuramente la sua installazione.

La guida in inglese che meglio mi ha aiutato è stata questa qui:
http://yii-rights.go...s-doc-1.2.0.pdf

1) Per prima cosa bisogna creare la tabella per la gestione delle utenze
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(128) COLLATE utf8_bin NOT NULL,
  `password` varchar(128) COLLATE utf8_bin NOT NULL,
  `remember` tinyint(1) DEFAULT NULL,
  `email` varchar(128) COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=4 ;

INSERT INTO `user` VALUES(1, 'khurram', 'password', NULL, 'khurram_619@msn.com');
INSERT INTO `user` VALUES(2, 'demo', 'demo', NULL, 'demo@demo.it');



2) poi tramite gii, creare la classe User associata alla tabella del db

3) scaricare il modulo rigths da qui:
http://code.google.c.../downloads/list

4) scompattare il tutto nella cartella modules (che potrebbe essere da creare)
in modo che venga fuori così protected\modules\rights

5) modificare la configurazione dell'applicazione /protected/config/main.php così:

'import'=>array(
 ...... 
'application.modules.rights.*', 
'application.modules.rights.components.*', // Correct paths if necessary. 
),
 ......
 'components'=>array(
 ......
 'user'=>array(
 'class'=>'RWebUser', // Allows super users access implicitly.
 ......
 ),
 'authManager'=>array(
 'class'=>'RDbAuthManager', // Provides support authorization item sorting.
 ......
 ),
 ......
 ),
 'modules'=>array(
 'rights'=>array(
 'install'=>true, // Enables the installer.
 ),),



Per eventuali confronti riporto la mia unit main.php completa:


<?php
error_reporting(E_ALL ^ E_NOTICE);
// uncomment the following to define a path alias
// Yii::setPathOfAlias('local','path/to/local-folder');

// This is the main Web application configuration. Any writable
// CWebApplication properties can be configured here.
return array(
	'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
	'name'=>'Esperimenti del Janka',

	'language'=>'it',//W l'Italia 
    'sourceLanguage'=>'it_IT',//W l'italiano	
	// preloading 'log' component
	'preload'=>array('log'),

	// autoloading model and component classes
	'import'=>array(
		'application.models.*',
		'application.components.*',

		//Per usare il modulo RIGHTS 
		'application.modules.rights.*',  // Le paths contenenti rights
		'application.modules.rights.components.*', //I:\prova\demo\protected\modules\rights
		//Vedi anche la guida 
		//http://yii-rights.googlecode.com/files/yii-rights-doc-1.2.0.pdf
	),

	'modules'=>array(
		// togliere il commento sulla seguente riga per abilitare i Gii tool
		//Una volta abilitato, puoi accedere ai gii tool da questo url:
		//http://localhost/prova/demo/index.php/gii/
		//Se non lo abiliti in questo modo:
		//http://localhost/prova/demo/index.php?r=gii
		//Se non sai come si usa questo tool, guarda questi video:
		//http://www.yiiframework.com/screencasts/		
		'gii'=>array(
			'class'=>'system.gii.GiiModule',
			'password'=>'pino',
 			// If removed, Gii defaults to localhost only. Edit carefully to taste.
			// 'ipFilters'=>array('127.0.0.1','::1'),
			//Imposto che possano accedere solo le macchine della rete 10.1.0.*
			'ipFilters'=>array('10.1.0.*','::1'),
		),

/*
* Inizio gestione del modulo rights per la gestione dell'autenticazione
* per i dettagli leggere la guida in inglese:
* http://yii-rights.googlecode.com/files/yii-rights-doc-1.2.0.pdf
* per usare questo modulo
* ho hanche ritoccato le sezioni "import" e aggiunto
* authManager e user in components
*/

		//Voglio usare il modulo rigths
		'rights'=>array(
			'install'=>true, // Abilita l'installer.
//Quelli che seguono sono i parametri di default, potrei anche saltarli
/*
			'userIdColumn'=>'id', // Il nome della colonna user id nel database. 
			'userNameColumn'=>'username', // Il nome della colonna name nel database. 
			'superuserName'=>'Admin', // Name of the role with super user privileges. 
			'authenticatedName'=>'Authenticated', // Name of the authenticated user role. 
			'enableBizRule'=>true, // Whether to enable authorization item business rules. 
			'enableBizRuleData'=>false, // Per abilitare data for business rules. 
			'displayDescription'=>true, // Per usare la descrizione dell'oggetto al posto del nome. 
			'flashSuccessKey'=>'RightsSuccess', // Key to use for setting success flash messages. 
			'flashErrorKey'=>'RightsError', // Key to use for setting error flash messages. 
			'baseUrl'=>'/rights', // Base URL for Rights. Change if module is nested. 
			'layout'=>'rights.views.layouts.main', // Layout to use for displaying Rights. 
			'appLayout'=>'application.views.layouts.main', // Application layout. 
			'cssFile'=>'rights.css', // Style sheet file to use for Rights. 
			'debug'=>false, // Per abilitare la modalità di debug.
*/
		),		
/*
* Fine gestione modulo rights
*/

	),

	// application components
	'components'=>array(
		'user'=>array(
			'class' => 'RWebUser',  // Consento l'accesso implicitamente ai super users.			
			'allowAutoLogin'=>true, // abilito l' autenticazione basata su cookie 
		),
		
		//dico a Yii che voglio gestire l'autenticazione utenti tramite db
		'authManager'=>array(
            'class'=>'RDbAuthManager',
		),

		
		
		
		
		// Abilito la gestione degli URLs in path-format		
		'urlManager'=>array(
			'urlFormat'=>'path',
			'rules'=>array(
				'<controller:\w+>/<id:\d+>'=>'<controller>/view',
				'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
				'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
			),
		),
		
		// per usare il MySQL database		
		'db'=>array(
			'connectionString' => 'mysql:host=localhost;dbname=yii_tour',
			'emulatePrepare' => true,
			'username' => 'la tua user',
			'password' => 'la tua psw',
			'charset' => 'utf8',
		),
		
		'errorHandler'=>array(
			// use 'site/error' action to display errors
            'errorAction'=>'site/error',
        ),
        
		'log'=>array(
			'class'=>'CLogRouter',
			'routes'=>array(
				array(
					'class'=>'CFileLogRoute',
					'levels'=>'error, warning',
				),
				// uncomment the following to show log messages on web pages
				/*
				array(
					'class'=>'CWebLogRoute',
				),
				*/
			),
		),
	),

	
	// application-level parameters that can be accessed
	// using Yii::app()->params['paramName']
	'params'=>array(
		// this is used in contact page
		'adminEmail'=>'pino@gmail.com',
	),
);



6) Avendo abilitato l'installazione automatica delle tabelle necessarie con

'rights'=>array(
'install'=>true,
)


posso a questo punto testare da web il modulo
..../index.php/rights/

e se tutto ha funzionato dovrebbe aver creato e popolato le nuove tabelle AuthAssignment, AuthItem, AuthItemChild

In questa discussione puoi trovare ulteriori utili suggerimenti per risolvere eventuali problemi con l'installazione di rights

7) una volta fatta l'installazione, ricordarsi di disabilitarla andando a modificare nel main.php

		'rights'=>array(
			'install'=>false, // Disabilita l'installer.
		),		



8) Ricordarsi di abilitare yii per la gestione delle autenticazioni via db

9) Comprendere come gestire le autorizzazioni

Potrebbe esserti d'aiuto anche questa piccola applicazione didattica per approfondire la costruzione di un form che implementa login e registrazione
Posted Image Non preoccuparti, è dentro il monitor!

Sapevi che cercando su google yii + "la funzione su cui stai impazzendo", trovi quasi sempre dei buoni indizi in italiano, per risolvere i tuoi problemi, senza perdere tempo a postare?
4

#2 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 22 December 2011 - 11:20 AM

Sono contento che sei arrivato tra noi!!!! Facciamola cresciamola questa communityii!!!!
0

#3 User is offline   Giancarlo 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 242
  • Joined: 20-December 11
  • Location:Turin, Italy

Posted 22 December 2011 - 11:39 AM

Ed io sono contento di aver conosciuto una persona preparata come te,
[ (anche se potrebbe sbottonarsi molto di più :-)
mi riferisco a quell'indizio che mi hai dato e che non ho colto, a cui dovrò dedicare la giornata di domani :-) ]
Posted Image Non preoccuparti, è dentro il monitor!

Sapevi che cercando su google yii + "la funzione su cui stai impazzendo", trovi quasi sempre dei buoni indizi in italiano, per risolvere i tuoi problemi, senza perdere tempo a postare?
1

#4 User is offline   paskuale 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 356
  • Joined: 30-December 11
  • Location:Italy, Bari

Posted 07 January 2012 - 09:04 AM

Mamma mia quante perle, forza ragazzi vi seguo attentamente, anch'io grazie a sensorario stò finalmente assaporando le qualità di Yii, gran lavoro Giancarlo, continua così.

Io sono ancora qualche km dietro, ma prometto crescita :P

P.S.
Da dove reperite i moduli/estensioni, dal web o solo yiiframework.com ? Giusto x capire come focalizzare le mie ricerche.
0

#5 User is offline   Giancarlo 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 242
  • Joined: 20-December 11
  • Location:Turin, Italy

Posted 07 January 2012 - 11:55 AM

Grazie per l'incoraggiamento, ma guarda che io ho iniziato solo 2 settimane prima di te. Aveva ragione sensorario quando diceva che la curva di apprendimento di yii è molto semplice da scalare e si fa in fretta a prendere velocità.

Io ho notato che i nostri post vengono indicizzati su google in meno di un'ora. Da qui il mio trucchetto personale:
1) vado su google
2) digito yii + domanda qualunque in italiano
3) se trovo risposta ok
altrimenti posto un nuovo topic in italiano avente come titolo la domanda che meglio riassume il mio dubbio (like yahoo answer) così che i postumi abbiano vita facile

4) sempre per aiutare tutti, quando scrivo, cerco di linkare il più possibile ad altri post che ho trovato interessanti, così da semplificare ulteriormente la ricerca per gli altri
Posted Image Non preoccuparti, è dentro il monitor!

Sapevi che cercando su google yii + "la funzione su cui stai impazzendo", trovi quasi sempre dei buoni indizi in italiano, per risolvere i tuoi problemi, senza perdere tempo a postare?
0

#6 User is offline   blacksheep 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 180
  • Joined: 31-December 11

Posted 07 January 2012 - 12:03 PM

io sto cercando di installare rights
ma ricevo questo errore

Application web user must extend the RWebUser class.

Ho seguito alla lettera sia le tue indicazione che il pdf

sapete aiutarmi?
So di non Sapere
0

#7 User is offline   markux 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 106
  • Joined: 26-November 10
  • Location:Grosseto

Posted 09 January 2012 - 03:21 AM

devi avere un model User che eredita da RWebUser, se non si chiama User lo devi specificare in configurazione.

nel pdf di rights è ben specificato
0

#8 User is offline   blacksheep 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 180
  • Joined: 31-December 11

Posted 09 January 2012 - 04:02 AM

View Postmarkux, on 09 January 2012 - 03:21 AM, said:

devi avere un model User che eredita da RWebUser, se non si chiama User lo devi specificare in configurazione.

nel pdf di rights è ben specificato


ciao, io la classe User nei modelli che estende RWebUser, ma continua a darmi lo stesso errore
Application web user must extend the RWebUser class.
Grazie per la risposta
So di non Sapere
0

#9 User is offline   paskuale 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 356
  • Joined: 30-December 11
  • Location:Italy, Bari

Posted 09 January 2012 - 05:53 PM

Quando arriva la 2^ parte :D della guida ? Io ho installato rights, ma sinceramente non è ben chiaro cosa e come faccia a gestire i singoli users...

grazie
0

#10 User is offline   giuseppelng 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 70
  • Joined: 09-January 12

Posted 10 January 2012 - 03:05 PM

Sorge una domanda, perchè crei un campo "remember" nella tabella?
0

#11 User is offline   Giancarlo 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 242
  • Joined: 20-December 11
  • Location:Turin, Italy

Posted 11 January 2012 - 03:17 AM

Bravo Giuseppe, ti faccio i complimenti per il tuo spirito di osservazione. Significa che la guida te la stai studiando per bene per capire a fondo i meccanismi di questo fantastico framework 2.0

La guida l'ho costruita raccogliendo informazioni sparse un pò qua ed un pò la.
In realtà in questa specifica guida, quel campo non sembra servire e puoi anche eliminarlo.
Posted Image Non preoccuparti, è dentro il monitor!

Sapevi che cercando su google yii + "la funzione su cui stai impazzendo", trovi quasi sempre dei buoni indizi in italiano, per risolvere i tuoi problemi, senza perdere tempo a postare?
0

#12 User is offline   claudio.ferrari 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 23
  • Joined: 23-November 11
  • Location:Brescia - Italy

Posted 12 January 2012 - 03:05 AM

Ciao Ragazzi,

complimenti a tutti voi che aiutate noi novellini a crescere in fretta !
claudio.ferrari@imagis.it
0

#13 User is offline   Fabio Tai 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 27
  • Joined: 29-November 11
  • Location:Rimini

Posted 20 January 2012 - 12:09 PM

ho seguito la guida ma quando provo ad accedere a rights mi viene questo:

index.php/rights/

Alias "rights.RightsModule" is invalid. Make sure it points to an existing PHP file.

<?php
return array(
	'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
	'name'=>'Client Manager',
    
    'language'=>'it',//W l'Italia 
    'sourceLanguage'=>'it_IT',//W l'italiano
    
	// preloading 'log' component
	'preload'=>array('log'),

	// autoloading model and component classes
	'import'=>array(
		'application.models.*',
		'application.components.*',
    //Per usare il modulo RIGHTS 
        'application.modules.rights.*',  // Le paths contenenti rights
        'application.modules.rights.components.*', //I:\prova\demo\protected\modules\rights
        //Vedi anche la guida 
        //http://yii-rights.googlecode.com/files/yii-rights-doc-1.2.0.pdf

	),

	'modules'=>array(
		
		'gii'=>array(
			'class'=>'system.gii.GiiModule',
			'password'=>'0504',
		 	// If removed, Gii defaults to localhost only. Edit carefully to taste.
			'ipFilters'=>array('127.0.0.1','::1'),
		),
	),

	// application components
	'components'=>array(
		'user'=>array(
			'class'=>'RWebUser',
			'allowAutoLogin'=>true,
		),
        'authManager' => array(
            'class'=>'RDbAuthManager',
        ), 
        
		// uncomment the following to enable URLs in path-format
		
		'urlManager'=>array(
			'urlFormat'=>'path',
			'rules'=>array(
				'<controller:\w+>/<id:\d+>'=>'<controller>/view',
				'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
				'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
			),
		),
		
		'db'=>array(
			'connectionString' => 'mysql:host=localhost;dbname=customer_services_db',
			'emulatePrepare' => true,
			'username' => 'root',
			'password' => '',
			'charset' => 'utf8',
		),
		'errorHandler'=>array(
			// use 'site/error' action to display errors
            'errorAction'=>'site/error',
        ),
		'log'=>array(
			'class'=>'CLogRouter',
			'routes'=>array(
				array(
					'class'=>'CFileLogRoute',
					'levels'=>'error, warning',
				),
				// uncomment the following to show log messages on web pages
				/*
				array(
					'class'=>'CWebLogRoute',
				),
				*/
			),
		),
	),
    'modules'=>array(
        'rights'=>array(
            'superuserName'=>'Admin', // Name of the role with super user privileges. 
            'authenticatedName'=>'Slave', // Name of the authenticated user role. 
            'userIdColumn'=>'uteID', // Name of the user id column in the database. 
            'userNameColumn'=>'UteNick', // Name of the user name column in the database. 
            'enableBizRule'=>true, // Whether to enable authorization item business rules. 
            'enableBizRuleData'=>false, // Whether to enable data for business rules. 
            'displayDescription'=>true, // Whether to use item description instead of name. 
            'flashSuccessKey'=>'RightsSuccess', // Key to use for setting success flash messages. 
            'flashErrorKey'=>'RightsError', // Key to use for setting error flash messages. 
            'install'=>true, // Whether to install rights. 
            'baseUrl'=>'/rights', // Base URL for Rights. Change if module is nested. 
            'layout'=>'rights.views.layouts.main', // Layout to use for displaying Rights. 
            'appLayout'=>'application.views.layouts.main', // Application layout.
            'cssFile'=>'rights.css', // Style sheet file to use for Rights. 
            'install'=>false, // Whether to enable installer. 
            'debug'=>false, // Whether to enable debug mode.
            'install'=> true,
            ),
    ),
	// application-level parameters that can be accessed
	// using Yii::app()->params['paramName']
	'params'=>array(
		// this is used in contact page
		'adminEmail'=>'fabiomannelli88@gmail.com',
	),
);
?>

0

#14 User is offline   paskuale 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 356
  • Joined: 30-December 11
  • Location:Italy, Bari

Posted 20 January 2012 - 06:35 PM

ehm attento, vedi la parte relativi al precaricamento moduli:

  'modules'=>array(
                
                'gii'=>array(
.
.
.
.
.


è qui dentro che devi dichiarare il modulo rights, non devi creare una nuova struttura:
'modules'=>array(
        'rights'=>array(
            'superuserName'=>'Admin', // Name of the role with super user privileges. 
            'authenticated.....


metti
'rights'=>array(
            'superuserName'=>'Admin', // Name of the role with super user privileges. 
            'authenticatedName'=>'Slave', // Name of the authenticated user role. 
            'userIdColumn'=>'uteID', // Name of the user id column in the database. 
            'userNameColumn'=>'UteNick', // Name of the user name column in the database. 
            'enableBizRule'=>true, // Whether to enable authorization item business rules. 
            'enableBizRuleData'=>false, // Whether to enable data for business rules. 
            'displayDescription'=>true, // Whether to use item description instead of name. 
            'flashSuccessKey'=>'RightsSuccess', // Key to use for setting success flash messages. 
            'flashErrorKey'=>'RightsError', // Key to use for setting error flash messages. 
            'install'=>true, // Whether to install rights. 
            'baseUrl'=>'/rights', // Base URL for Rights. Change if module is nested. 
            'layout'=>'rights.views.layouts.main', // Layout to use for displaying Rights. 
            'appLayout'=>'application.views.layouts.main', // Application layout.
            'cssFile'=>'rights.css', // Style sheet file to use for Rights. 
            'install'=>false, // Whether to enable installer. 
            'debug'=>false, // Whether to enable debug mode.
            'install'=> true,
            ),


subito dopo il modulo GII ... e dimmi

p.s.
poi non capisco perchè ripeti il parametro 'install'=>true per tre volte nel modulo rights ??? ne basta uno!
0

#15 User is offline   paskuale 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 356
  • Joined: 30-December 11
  • Location:Italy, Bari

Posted 20 January 2012 - 06:37 PM

posizionamento corretto:
'modules'=>array(
		// uncomment the following to enable the Gii tool
		
		'gii'=>array(
			'class'=>'system.gii.GiiModule',
			'password'=>'mia-password',
		 	// If removed, Gii defaults to localhost only. Edit carefully to taste.
			'ipFilters'=>array('127.0.0.1','::1'),
		),
        
               
                
                'rights'=>array(
                'install'=>false, // Enables the installer.
                'debug'=>true,
                ),
		
	),


se ti chiedi come mai uso solo 3 parametri per "rights", è perchè se le altre impostazioni ti stanno bene di default è inutile ridichiararle, le dichiari solo se i valori di default non ti piacciono.
0

#16 User is offline   Giancarlo 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 242
  • Joined: 20-December 11
  • Location:Turin, Italy

  Posted 27 January 2012 - 10:59 AM

View Postpaskuale, on 09 January 2012 - 05:53 PM, said:

Quando arriva la 2^ parte :D della guida ? Io ho installato rights, ma sinceramente non è ben chiaro cosa e come faccia a gestire i singoli users...


Pasquale, grazie per la chiacchierata di ieri in privato. Ho visto che adesso mi hai superato... sai più cose di me.
Comunque grazie al tuo contributo, ora posso scrivere la seconda parte della guida, ovvero:

Ma una volta installato rights, come si utilizza?

In questo esempio, useremo qualcosa di noto a molti, il 3° video degli screen cast, quello che spiega come creare la logica CRUD per la tabella tbl_message e crea il controller Message.

Seguito quel tutorial, ora possiamo modificare il Controller per dirgli che la gestione degli accessi l'affidiamo a Rights.
Pertanto bisogna:
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 dato che ci pensa rights (io l'ho remmata)

Come sempre riporto l'unità completa, per una maggior comprensione di quanto spiegato:

<?php

class MessageController extends RController //Inizialmente estendeva da Controller, ma dato che voglio affidare il controllo degli accessi a Rights... 
{
	/**
 	* @var string the default layout for the views. Defaults to '//layouts/column2', meaning
 	* using two-column layout. See 'protected/views/layouts/column2.php'.
 	*/
	public $layout='//layouts/column2';

	/**
 	* @return array action filters
 	*/
	public function filters()
	{
		return array(
			//'accessControl', // esegue il controllo d'accesso per le operazioni CRUD
   			'rights', //Delego all'estensione rights il compito di controllare gli accessi
		);
	}
	
	/**
 	* Specifies the access control rules.
 	* This method is used by the 'accessControl' filter.
 	* @return array access control rules
 	
	public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('index','view'),
				'users'=>array('*'),
			),
			array('allow', // allow authenticated user to perform 'create' and 'update' actions
				'actions'=>array('create','update'),
				'users'=>array('@'),
			),
			array('allow', // allow admin user to perform 'admin' and 'delete' actions
				'actions'=>array('admin','delete'),
				'users'=>array('admin'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}
*/
	/**
 	* Displays a particular model.
 	* @param integer $id the ID of the model to be displayed
 	*/
	public function actionView($id)
	{
		$this->render('view',array(
			'model'=>$this->loadModel($id),
		));
	}




Bene è tutto. Non rimane che iniziare a giocare con l'estensione:

1) Collegarsi su ......./index.php?r=rights
2) creare dei ROLES (che sono i ruoli a cui collegare i tuoi utenti)
per es. io ho UfficioAcquisti (che poi assegnerò agli utenti)
3) andare su PERMESSI e cliccare su "Generate items form controller actions"
scegliere i controller che voglio assegnare
(per esempio message.*)
4) A questo punto compare una tabella

che mostra sulle righe controllers/actions
e su colonne i RUOLI
come la battaglia navale
basta cliccare su Assegna/Revoca per decidere quali gruppi abilitare e quali disabilitare.

Buon divertimento e grazie ancora a Paskuale senza il quale non avrei mai potuto scrivere il seguito di questo amato sequel

Magari questa volta, date un + a me ed uno a Pasquale...
come diceva il buon vecchio Muttley: medaglia, medaglia, medaglia Posted Image
Posted Image Non preoccuparti, è dentro il monitor!

Sapevi che cercando su google yii + "la funzione su cui stai impazzendo", trovi quasi sempre dei buoni indizi in italiano, per risolvere i tuoi problemi, senza perdere tempo a postare?
3

#17 User is offline   Fabio Giaffaglione 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 18
  • Joined: 29-February 12
  • Location:Catania

Posted 29 February 2012 - 08:41 AM

Salve a Tutti!
mi chiamo Fabio e sono nuovo della comunità e più in generale del mondo Yii.
Per la prima volta mi accingo ad usare un framework MVC e ho scelto di iniziare con Yii perchè lo trovo straordinario.
Sto trovando non poche difficoltà nel capire il sistema di gestione delle RBAC e stavo seguendo la guida di Giancarlo (ti ringrazio per il tempo dedicato nel creare alcuni post d'aiuto per i nuovi arrivati) e mi sono imbattuto in un errore che fortunamente ho risolto da solo ma che voglio condividere con voi nel caso in cui qualcuno si ritrovasse nella mia stessa condizione.
L'errore che mi dava a fine installazione era il seguente:
Alias "rights.RightsModule" is invalid. Make sure it points to an existing PHP file.

questo perché io ho impostato la cartella protected al gruppo www-data con permessi 755.
e allora basta dare terminale i seguenti comandi da terminale e tutto funzionerà:
cd tua_web_application/protected

chown www-data -R modules/
(nel mio caso sono stato io a doverla creare)
chgrp www-data -R modules/
(nel mio caso sono stato io a doverla creare)
chmod 775 -R modules/
(potete provare anche ad impostarli come 666 o 777,fate come meglio credete)
1

#18 User is offline   eddigei 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 43
  • Joined: 14-February 11

Posted 17 April 2012 - 06:13 PM

View PostGiancarlo, on 27 January 2012 - 10:59 AM, said:

Pasquale, grazie per la chiacchierata di ieri in privato. Ho visto che adesso mi hai superato... sai più cose di me.
Comunque grazie al tuo contributo, ora posso scrivere la seconda parte della guida, ovvero:

Ma una volta installato rights, come si utilizza?

In questo esempio, useremo qualcosa di noto a molti, il 3° video degli screen cast, quello che spiega come creare la logica CRUD per la tabella tbl_message e crea il controller Message.

Seguito quel tutorial, ora possiamo modificare il Controller per dirgli che la gestione degli accessi l'affidiamo a Rights.
Pertanto bisogna:
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 dato che ci pensa rights (io l'ho remmata)

Come sempre riporto l'unità completa, per una maggior comprensione di quanto spiegato:

<?php

class MessageController extends RController //Inizialmente estendeva da Controller, ma dato che voglio affidare il controllo degli accessi a Rights... 
{
	/**
 	* @var string the default layout for the views. Defaults to '//layouts/column2', meaning
 	* using two-column layout. See 'protected/views/layouts/column2.php'.
 	*/
	public $layout='//layouts/column2';

	/**
 	* @return array action filters
 	*/
	public function filters()
	{
		return array(
			//'accessControl', // esegue il controllo d'accesso per le operazioni CRUD
   			'rights', //Delego all'estensione rights il compito di controllare gli accessi
		);
	}
	
	/**
 	* Specifies the access control rules.
 	* This method is used by the 'accessControl' filter.
 	* @return array access control rules
 	
	public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('index','view'),
				'users'=>array('*'),
			),
			array('allow', // allow authenticated user to perform 'create' and 'update' actions
				'actions'=>array('create','update'),
				'users'=>array('@'),
			),
			array('allow', // allow admin user to perform 'admin' and 'delete' actions
				'actions'=>array('admin','delete'),
				'users'=>array('admin'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}
*/
	/**
 	* Displays a particular model.
 	* @param integer $id the ID of the model to be displayed
 	*/
	public function actionView($id)
	{
		$this->render('view',array(
			'model'=>$this->loadModel($id),
		));
	}




Bene è tutto. Non rimane che iniziare a giocare con l'estensione:

1) Collegarsi su ......./index.php?r=rights
2) creare dei ROLES (che sono i ruoli a cui collegare i tuoi utenti)
per es. io ho UfficioAcquisti (che poi assegnerò agli utenti)
3) andare su PERMESSI e cliccare su "Generate items form controller actions"
scegliere i controller che voglio assegnare
(per esempio message.*)
4) A questo punto compare una tabella

che mostra sulle righe controllers/actions
e su colonne i RUOLI
come la battaglia navale
basta cliccare su Assegna/Revoca per decidere quali gruppi abilitare e quali disabilitare.

Buon divertimento e grazie ancora a Paskuale senza il quale non avrei mai potuto scrivere il seguito di questo amato sequel

Magari questa volta, date un + a me ed uno a Pasquale...
come diceva il buon vecchio Muttley: medaglia, medaglia, medaglia Posted Image


guida perfetta solo che ti volevo chiedere una cosa!!! come imposto un utente che ha accesso a tutte le operazioni senza dover aggiungere tutti i controller?
mi spiego meglio, è possibile impostare una regola che mi fa dare accesso a tutto su una sola riga senza dover dare accesso a ogni singolo controller?
0

#19 User is offline   Giancarlo 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 242
  • Joined: 20-December 11
  • Location:Turin, Italy

Posted 18 April 2012 - 01:44 AM

Gli admin, hanno accesso a tutti i controller
Se invece intendevi dire che vuoi assegnare tutti i metodi di un controller ad un utente, ti è sufficiente creare controller.*
Posted Image Non preoccuparti, è dentro il monitor!

Sapevi che cercando su google yii + "la funzione su cui stai impazzendo", trovi quasi sempre dei buoni indizi in italiano, per risolvere i tuoi problemi, senza perdere tempo a postare?
0

#20 User is offline   eddigei 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 43
  • Joined: 14-February 11

Posted 18 April 2012 - 02:59 AM

View PostGiancarlo, on 18 April 2012 - 01:44 AM, said:

Gli admin, hanno accesso a tutti i controller
Se invece intendevi dire che vuoi assegnare tutti i metodi di un controller ad un utente, ti è sufficiente creare controller.*


e infatti è come avevo capito però io ho in tabella due utenti admin demo ma se entro con admin senza aver impistato i permessi anche per quello non mi accede a niente

nel config ho questo
          'rights' => array(
              'userClass' => 'Utenti',
              'install' => false, // Abilita l'installer.
              'userIdColumn' => 'id', // Il nome della colonna user id nel database.
              'userNameColumn' => 'username', // Il nome della colonna name nel database.
              'superuserName' => 'admin', // Name of the role with super user privileges.
              'authenticatedName' => 'authenticated', // Name of the authenticated user role.
          ),


nel controller
class DashboardController extends RController
{
	/**
	 * @return array action filters
	 */
	public function filters()
	{
		return array(
			'rights', // perform access control for CRUD operations
		);
	}

0

Share this topic:


  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users