Bonjour,
J’aimerais tout d’abord préciser que c’est un plaisir de pouvoir écrire en français ^^
Parce que ce n’est pas évident pour moi, de me faire comprendre en anglais.
Parenthèse fermée
Je précise avant toute chose, que j’utilise le module SRBAC.
Via l’interface graphique proposée par SRBAC, j’ai créé 3 rôles “Admin”, “UserPrivilegie” et “User”.
A l’aide de mes controllers, SRBAC me permet de créer automatiquement des Tasks et des Operations, et fait le lien entre les tasks et les opérations qui ont le même nom de controller.
J’ai ensuite assigné toutes les tâches à l’utilisateur “Admin” (toujours via l’interface SRBAC).
Dans mon bandeau de menu, définie dans /views/layout/main.php, j’ai restreint la visibilité de certaines “rubriques” à l’administrateur via :
$this->widget('application.extensions.menu.SMenu',
array("menu"=>array(
array("url"=>array(), "label"=>"Administration", "visible"=>Yii::app()->user->isAdmin(),
array("url"=>array("route"=>"/user/index"), "label"=>"Gérer les utilisateurs"),
array("url"=>array("route"=>"/projet/index"), "label"=>"Gérer les projets"),
),
Mon problème [size=“1”](enfin ^^)[/size] c’est que lorsque je me logge en tant qu’Administrateur, je suis toujours un Guest “aux yeux de l’application”.
Je ne sais pas comment je peux préciser le rôle de l’utilisateur qui tente de se logger.
Et surtout où je dois le faire :
-
dans la méthode actionLogin() de SiteController.php ?
-
dans la méthode authenticate de UserIdentity.php ?
-
dans le fichier WebUser.php ?
-
ailleurs ?
En vous remerciant.
PS : voici ma méthode actionLogin
public function actionLogin(){
$model=new LoginForm();
$authitem = new SDbAuthManager();
// collect user input data
if(isset($_POST['LoginForm']))
{
$model->attributes=$_POST['LoginForm'];
// validate user input and redirect to the previous page if valid
if($model->validate())
{
// Mise à jour de la date de connexion de l'utilisateur
Yii::app()->db->createCommand()->update('user',
array('dateConnexion'=>date("Y-m-d"),) , 'rpi=:rpi', array(':rpi'=>$model->username));
$userid = Yii::app()->db->createCommand()->select('id')->from('user')
->where('rpi=:rpi', array(':rpi'=>$model->username))->queryScalar();
if ($authitem->checkAccess('RM', $userid))
{
Yii::app()->user->setState('RM', 1);
Yii::app()->user->setReturnUrl(#Adresse#);
$this->redirect(Yii::app()->user->returnUrl);
}
$this->redirect(Yii::app()->user->returnUrl);
}
}
// display the login form
$this->render('login',array('model'=>$model));
}
PS2 : Je voulais préciser également, que je ne comprend pas trop comment utiliser l’Access Control Filter et RBAC, malgré ce tuto
La classe PostController est elle obligatoire pour tout projet ou est elle juste un exemple d’utilisation des filtres dans un controller ?