Mi sto avvicinando ad Yii solo ora, per necessità aziendali. Non ho alcun problema a capire MVC, la gestione delle action, delle view , etc…
Mi sfugge cosa intende ‘Yii’ per ‘component’. Mi spiego, forse, meglio:
Esempio: ho una lista di nomi, per ciascun nome ogni mese l’operatore segna il totale ore di lavoro.
La tabella dei lavoratori è in un model
La tabella delle ore è in un model, con una chiave che punta al lavoratore.
Problema: ho tre user
uno può solo vedere, tutto
gli altri due possono inserire e modificare i dati, compreso creare nuovi user )
… devo crearmi qualche tipo di componente per gestire questo tipo di permessi ?
Lo chiedo perchè ho tantissima confusione in testa, e nel tutorial su Yii (che ti fa creare il model e le view per User) è detto che bisogna customizzare il componente UserIdentity (cos’è ) per gestire le permission …
Forse nel tuo caso Rights e’ una estensione un po’ troppo vasta, puoi cavartela con un flag nella tabella utente e delle funzioni per sapere il suo ruolo.
Leggi la documentazione circa CWebUser, puoi estendere la classe e aggiungere i metodi che ti servono, in modo da poter chiamare
Grazie, tenendo conto che questa è l’applicazione ‘demo’ con cui il team sta studiando Yii, l’installazione di estensioni NON è concessa.
Per tramite il webuser è possibile realizzare anche cose tipo: posso leggere ma non cancellare un record ? oppure visto che c’è il link ‘cancella’ … è possibile far si che in base al ruolo dell’utente quel link NON venga fuori … ?
Domanda iper-stupida: CWebUser è un componente ?
Ma la mia tabella user è mappata in un model … che viene usata da un controller … perchè devo passare da un component ? perchè è condiviso dall’intera app ?
PS: FELICISSIMO di essere entrato in questa community
Nel frattempo sto studiano “Agile Web Development with Yii And PHP 5”, giusto per limitare le domande che vi farò… e per avere una idea della filosofia d’uso del framework, cosa che dal tutorial ufficiale decisamente NON traspare
/**
* 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', 'update', 'create', 'delete'),
'expression'=>'$user->isAdmin',
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
visto che sei in sessione di prova… puoi provare ad utilizzare gii per creare le crud,
quindi ti creerà per il model scelto, il controller con le crud e le relative view.
nel controller puoi osservare questa parte qui:
public function filters()
{
return array(
'accessControl', // perform access control for CRUD operations
);
}
/**
* 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('*'),
),
);
}
in accessRules puoi filtrare l’accesso sulle action come ti crea gii.
A questo punto all’utente che può solo vedere gli assegni index e view
Agli ‘admin’ dai accesso su admin,create e update. come ti suggeriva zaccaria nel precedente post.