[英]How to assign role and checkaccess method in yii?
I am new in yii for Role Management, 我是yii的角色管理新手,
I have 2 Role like Admin1,Admin2 我有2个角色,例如Admin1,Admin2
I have 2 controllers and it's action like 我有2个控制器,动作类似
(1)UserController - create,update,delete (1)UserController-创建,更新,删除
(2)CategoryController - view,create,update (2)CategoryController-查看,创建,更新
I want to give checkaccess method for Admin1 like 我想给Admin1提供checkcheck方法
(1)UserController - update,delete (1)UserController-更新,删除
(2)CategoryController - update (2)CategoryController-更新
I want to give checkaccess method for Admin2 like 我想为Admin2提供checkaccess方法,例如
(1)UserController - create,update,delete (1)UserController-创建,更新,删除
(2)CategoryController - create,view (2)CategoryController-创建,查看
How can i give checkpermission for this 2 controller for particular admin ? 如何为特定管理员提供此2控制器的checkpermission? Any help will be really appreciated.
任何帮助将不胜感激。
Here is my checkaccess method but it gives me error 这是我的checkaccess方法,但给我错误
class UserIdentity extends CUserIdentity
{
private $_id;
public $role;
public $roleName;
/**
* Authenticates a user.
* @return boolean whether authentication succeeds.
*/
public function authenticate()
{
$username = $this->username;
$password = md5($this->password);
$user=Login_User::model()->findByAttributes(array('Email'=>$username,'Password'=>$password,'Status'=>'1'));
if(empty($user))
{
$this->errorCode=self::ERROR_USERNAME_INVALID;
}
elseif($password != $user->Password)
{
$this->errorCode=self::ERROR_PASSWORD_INVALID;
}
else
{
$this->_id=$user->UserID;
$this->username=$user->Email;
$this->role=$user->RoleID;
$roleQuery = "SELECT * FROM role WHERE RoleID = ".$user->RoleID." ";
$roleData = Yii::app()->db->createCommand($roleQuery)->queryAll();
if(isset($roleData[0]['Title']) && $roleData[0]['Title'] != '') {
$this->roleName = $roleData[0]['Title'];
}
if($user->RoleID != '') {
$query = "SELECT * FROM rolepermission WHERE RoleID = ".$user->RoleID." AND Status = 1 ";
$permissionData = Yii::app()->db->createCommand($query)->queryAll();
}
$auth=Yii::app()->authManager;
$rolePemirssion=$auth->createRole($this->roleName);
foreach($permissionData as $key => $value) {
$rolePemirssion->addChild($value['Controller'].$value['Action']);
}
$this->errorCode=self::ERROR_NONE;
}
return $this->errorCode==self::ERROR_NONE;
}
}
You should use yii access control filters 您应该使用yii访问控制过滤器
class UserController extends CController
{
…
public function accessRules()
{
return array(
...
array('allow',
'actions'=>array('update', 'delete'),
'roles'=>array('admin1'),
),
array('allow',
'actions'=>array('update'),
'roles'=>array('admin2'),
),
...
);
}
}
class CategoryController extends CController
{
…
public function accessRules()
{
return array(
...
array('allow',
'actions'=>array('create', 'update', 'delete' ),
'roles'=>array('admin1'),
),
array('allow',
'actions'=>array('create', 'view'),
'roles'=>array('admin2'),
),
...
);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.