Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // esto va en cruge/components/CrugeAuthManager.php
- // y se usa asi: Yii::app()->user->rbac->autoDetect();
- // la nueva version de cruge lo traerá incorporado.
- /**
- * enumControllers
- * lista los nombres de los controllers declarados.
- * @access public
- * @return array con nombre del controller
- */
- public function enumControllers(){
- $a = array();
- $p = Yii::app()->getControllerPath();
- foreach(scandir($p) as $f){
- if($f == '.' || $f == '..')
- continue;
- if(strlen($f))
- if($f[0]=='.')
- continue;
- if($pos = strpos(strtolower($f),"controller.php")){
- $a[] = substr($f,0, $pos);
- }
- }
- return $a;
- }
- /**
- * enumActions
- * devuelve un array con los nombres de los actions del controller
- * @param mixed $controllerName nombre del controller
- * @access public
- * @return array lista de actions.
- */
- public function enumActions($controllerName){
- $a = array();
- $className = $controllerName.'Controller';
- Yii::import('application.controllers.'.$className,true);
- $refx = new ReflectionClass($className);
- foreach($refx->getMethods() as $method){
- if($method->name != 'actions')
- if(substr($method->name,0,6)=="action")
- $a[] = substr($method->name,6);
- }
- return $a;
- }
- /**
- * autoDetect
- * lee todos los controllers y actions y los almacena si previamente
- * no estaban registrados.
- * @access public
- * @return void
- */
- public function autoDetect(){
- foreach($this->enumControllers() as $c){
- // cada controller
- $itemName = "controller_".strtolower($c);
- if(!$this->getAuthItem($itemName))
- $this->createAuthItem($itemName,
- CAuthItem::TYPE_OPERATION,"");
- // cada action
- foreach($this->enumActions($c) as $action){
- $itemName = "action_".strtolower($c)."_".strtolower($action);
- if(!$this->getAuthItem($itemName))
- $this->createAuthItem($itemName,
- CAuthItem::TYPE_OPERATION,"");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement