Basics Of RBAC for Yii Framework -
i set rbac hierarchie (using cphpauthmanager)
$auth = yii::app()->authmanager; $auth->createoperation('create', 'add new data'); $auth->createoperation('read', 'read data'); $auth->createoperation('update', 'update data'); $auth->createoperation('delete', 'delete data'); $teammember = $auth->createrole('teammember'); $teammember->addchild('create'); $teammember->addchild('read'); $teammember->addchild('update'); $teammember->addchild('delete'); $auth->save();
and update loginform model class :
public function login() { if($this->_identity===null) { $this->_identity=new useridentity($this->username,$this->password); $this->_identity->authenticate(); } if($this->_identity->errorcode===useridentity::error_none) { $duration=$this->rememberme ? 3600*24*30 : 0; // 30 days yii::app()->user->login($this->_identity,$duration); ***yii::app()->authmanager->assign('teammember', yii::app()->user->id); homecoming true; } else homecoming false; }
(look @ line 3 stars ***) (yii::app()->user->id
returns user's id integer)
it should work well. i'm logging user scheme (with yii::app()->user->login()
) , (yii::app()->authmanager->assign()
)
now i'm checking :
public function actiontest() { if(yii::app()->user->checkaccess('create')) { echo "you can this"; } else { echo "you can't this"; } }
but output you can't this . missing something? problem?
additional
result of
var_dump(yii::app()->authmanager->getroles());
:
prettier version here
array(1) { ["teammember"]=> object(cauthitem)#25 (8) { ["_auth":"cauthitem":private]=> object(cphpauthmanager)#20 (10) { ["authfile"]=> string(50) "/var/www/wingsplitdatabase/protected/data/auth.php" ["_items":"cphpauthmanager":private]=> array(5) { ["create"]=> object(cauthitem)#21 (8) { ["_auth":"cauthitem":private]=> *recursion* ["_type":"cauthitem":private]=> int(0) ["_name":"cauthitem":private]=> string(6) "create" ["_description":"cauthitem":private]=> string(12) "add new data" ["_bizrule":"cauthitem":private]=> null ["_data":"cauthitem":private]=> null ["_e":"ccomponent":private]=> null ["_m":"ccomponent":private]=> null } ["read"]=> object(cauthitem)#22 (8) { ["_auth":"cauthitem":private]=> *recursion* ["_type":"cauthitem":private]=> int(0) ["_name":"cauthitem":private]=> string(4) "read" ["_description":"cauthitem":private]=> string(9) "read data" ["_bizrule":"cauthitem":private]=> null ["_data":"cauthitem":private]=> null ["_e":"ccomponent":private]=> null ["_m":"ccomponent":private]=> null } ["update"]=> object(cauthitem)#23 (8) { ["_auth":"cauthitem":private]=> *recursion* ["_type":"cauthitem":private]=> int(0) ["_name":"cauthitem":private]=> string(6) "update" ["_description":"cauthitem":private]=> string(11) "update data" ["_bizrule":"cauthitem":private]=> null ["_data":"cauthitem":private]=> null ["_e":"ccomponent":private]=> null ["_m":"ccomponent":private]=> null } ["delete"]=> object(cauthitem)#24 (8) { ["_auth":"cauthitem":private]=> *recursion* ["_type":"cauthitem":private]=> int(0) ["_name":"cauthitem":private]=> string(6) "delete" ["_description":"cauthitem":private]=> string(11) "delete data" ["_bizrule":"cauthitem":private]=> null ["_data":"cauthitem":private]=> null ["_e":"ccomponent":private]=> null ["_m":"ccomponent":private]=> null } ["teammember"]=> *recursion* } ["_children":"cphpauthmanager":private]=> array(1) { ["teammember"]=> array(4) { ["create"]=> object(cauthitem)#21 (8) { ["_auth":"cauthitem":private]=> *recursion* ["_type":"cauthitem":private]=> int(0) ["_name":"cauthitem":private]=> string(6) "create" ["_description":"cauthitem":private]=> string(12) "add new data" ["_bizrule":"cauthitem":private]=> null ["_data":"cauthitem":private]=> null ["_e":"ccomponent":private]=> null ["_m":"ccomponent":private]=> null } ["read"]=> object(cauthitem)#22 (8) { ["_auth":"cauthitem":private]=> *recursion* ["_type":"cauthitem":private]=> int(0) ["_name":"cauthitem":private]=> string(4) "read" ["_description":"cauthitem":private]=> string(9) "read data" ["_bizrule":"cauthitem":private]=> null ["_data":"cauthitem":private]=> null ["_e":"ccomponent":private]=> null ["_m":"ccomponent":private]=> null } ["update"]=> object(cauthitem)#23 (8) { ["_auth":"cauthitem":private]=> *recursion* ["_type":"cauthitem":private]=> int(0) ["_name":"cauthitem":private]=> string(6) "update" ["_description":"cauthitem":private]=> string(11) "update data" ["_bizrule":"cauthitem":private]=> null ["_data":"cauthitem":private]=> null ["_e":"ccomponent":private]=> null ["_m":"ccomponent":private]=> null } ["delete"]=> object(cauthitem)#24 (8) { ["_auth":"cauthitem":private]=> *recursion* ["_type":"cauthitem":private]=> int(0) ["_name":"cauthitem":private]=> string(6) "delete" ["_description":"cauthitem":private]=> string(11) "delete data" ["_bizrule":"cauthitem":private]=> null ["_data":"cauthitem":private]=> null ["_e":"ccomponent":private]=> null ["_m":"ccomponent":private]=> null } } } ["_assignments":"cphpauthmanager":private]=> array(0) { } ["showerrors"]=> bool(false) ["defaultroles"]=> array(1) { [0]=> string(9) "ziyaretci" } ["behaviors"]=> array(0) { } ["_initialized":"capplicationcomponent":private]=> bool(true) ["_e":"ccomponent":private]=> null ["_m":"ccomponent":private]=> null } ["_type":"cauthitem":private]=> int(2) ["_name":"cauthitem":private]=> string(10) "teammember" ["_description":"cauthitem":private]=> string(0) "" ["_bizrule":"cauthitem":private]=> null ["_data":"cauthitem":private]=> null ["_e":"ccomponent":private]=> null ["_m":"ccomponent":private]=> null } }
any changes auth setup needs saved, add together next line after assignment:
yii::app()->authmanager->save();
yii rbac
No comments:
Post a Comment