Cruge - Control de Usuarios y ROLES (RBAC) para Yii Framework
En esta oportunidad quiero presentarles a Cruge, es un trabajo -serio- con el propósito de aislar todo el proceso de creación de cuentas de usuario, registro, login, edición de usuarios, asignación y edición de roles, tareas y operaciones para Yii Framework.
Documentación de Cruge
- Tutorial de Cruge (ir a la wiki)
- Documentación Detallada de Cruge (ir a wiki) (descarga PDF)
- Repositorio Bitbucket Oficial de Cruge (ir al repo)
- Extensiones para Cruge: (CrugeConnector , CrugeMailer)
Hola Christian, como verás, soy yo de nuevo! jejejeje lo siento por ser tan pesado, pero indagando he encontrado esto, que buena pinta no? me voy a poner con ello, espero puedas ayudarme en mis futuras dudas, que seguro tendré! Gracias!
ResponderEliminarhola, ! no te preocupes a la orden. Es mejor que lo canalices por el foro de Yii Framework en Español, ahi la comunidad te da mas soporte, igualmente yo (respondiendo temas ahi a diario).
ResponderEliminarde acuerdo, voy a echarle un ojo a cruge, como e has aconsejado por el privado, y te cuento, a ver si encuentro algún manual en castellano!! Gracias de nuevo!!
ResponderEliminarHola he seguido todas las instrucciones de instalación del modulo CRUGE, pero cuando corro la aplicación me da el siguiente error:
ResponderEliminar**Property "CWebApplication.user" is read only. **
y me indica el lugar específico:
/yii/framework/base/CModule.php(483)
la verdad no he mirado mucho la estructura de yii y no tengo idea de a que se deba el error, cualquier ayuda es bienvenida.
hola, pon el tema en http://www.yiiframeworkenespanol.org.
Eliminarprimero prueba con un proyecto base, ahi en el repo hay un demo listo para probar incluso para arrancar el proyecto desde ahi. Si en ese demo aun te da problemas es porque tu framework de yii tiene problemas, instala uno nuevo.
segundo, si el proyecto demo esta bien y tu apliacion no, es porque seguramente instalaste mal Cruge en tu propia aplicacion existente, seria para mi dificil saber que tienes ahi.
lo que si puedo decirte es que leas bien el readme, ahi hay mucha info de lo mas delicado. Normalmente estos problemas que salen como el que muestras son por fallas de la propia aplicacion que quiere integrar a cruge, ojo no estoy diciendo que tu app este mala, sino digo que quiza hayas cambiado algo en ella de forma sustancial.
Christian, como podría hacer un renderpartial, de la vista registration de gruge? supongo que será posible, pero las combinaciones que he probado no funcionaban! Gracias de antemano, lo voy consiguiendo! jejejejejeje
ResponderEliminarme respondo a mi mismo!! para renderizar vistas parciales del cruge, 'application.modules.cruge.views.ui.registration' y así puedes incluir el formulario de registro o de login en cualquier vista, siempre que ases la variable model correcta... (he tardado un poco en darme cuenta de esto último)
ResponderEliminarYii Framework dispone del mecanismo de Layouts, y Cruge usa ese mecanismo, por eso y solo por eso en el README hay un tema acerca del layout y como configurarlo para adaptar cualquier vista de cruge a tu aplicacion.
EliminarEsto que estas haciendo esta errado a menos que tengas una razón sustancialmente fuerte como para hacerlo, te estas saltando toda la programacion integrada de Cruge que le da vida al formulario de registro y aparte estas saltandote todo el modelo MVC al hacer eso.
No me queda otra que pedirte disculpas si soy fuerte al decirtelo de esta manera pero es una costumbre muy arraigada del programador PHP a saltarse el MVC para irse por otra via que la que el componente ofrece.
Me estoy saltando el MVC? donde he puesto yo eso? estoy usando un formulario hecho con CactiveForm, que maneja un CContrller, y este a su vez los modelos que has desarrollado en Cruge, ni más ni menos, es cierto que no dentro del modulo, pero el modulo está instalado, y funciona perfectamente. Funciona la validación, con los rules del modelo, que he modificado, funciona la seguridad, funciona el mailer, y funciona ajax... No se en que momento me he saltado el MVC.
EliminarVuelvo a decirte lo mismo de antes, muchas gracias por tu trabajo, cruge funciona perfectamente, y yo lo estoy usando como usted dice en el readme, solo bajo una pequeña modificación estética.
Saludos, y espero que este mal entendido no me impida realizarte futuras cuestiones.
hola, no te preocupes no he considerado nada en forma de mal entendido.
Eliminarno importa si usas un framework MVC o unas clases MVC o Cruge y su metodo MVC...lo que importa es no saltarse lo que el framework provee...eso implica saltarle el mvc, me explico mejor: cuando en vez de usar los layout decides en cambio desarmar el mecanismo para armarte uno a tu gusto..estas saltandote toda el API que trae..y ademas te saltas el mecanismo de layouts que ofrece yii.
lo que quieres hacer perfectamente se pudo hacer perfecta y claramente usando layouts (leyendo tus otros posts que has puesto en varias partes), se que tienes tiempos cortos de desarrollo, espero que cuando tengas mas tiempo explores mas a cruge y a yii como tal para que me entiendas mejor a que me refiero.
saludos y gracias por tus palabras, a veces lo que uno escribe en un teclado suena feo pero no es lo que uno quiere transmitir.
@Alberto a mi a veces me pasa cuando inicio un nuevo proyecto con Yii, que tengo que cambiar los permisos de lectura de algunas carpetas, échale un vistazo a la carpeta base... aunque esa no me suena de que me haya dado alguna vez ese error... a unas malas, comienza de cero, porque no es muy normal... Suerte!
ResponderEliminarExcelente!!!!! Me ha sido muy útil. Lo estoy usando en un sistema q estoy armando, que ya de por si es complicado, y me has ahorrado un montón de laburo. Hasta ahora no tengo dudas, he podido integrarlo sin problemas.
ResponderEliminarMuchas gracias!!
hola Flavia, me alegro que te haya servido. Internamente tiene bastantes prestaciones, no asi tanta documentacion del API como quisiera pero de a poco va.
EliminarIgualmente, hay un tema pendiente con las traducciones, en el repo oficial de bitbucket hay un issue abierto sobre esto. Cualquier bug o enhancment que detectes puedes subir al sistema de issues que te menciono.
igualmente a Cruge les recomiendo EYui (ver tema aqui mismo en el blog).
ResponderEliminarBuenas tardes Christian, bueno primero estoy incursionado en los frameworks, yii es el primero, me pareció interesante lo de roles y usuarios y lo estoy implementado pero me han salido unos errores y pues quizás sea por mi inexperiencia con yii pero quiero comentarlos uno de ellos es cuando va visualizar el widget "CActiveForm" dice que la propiedad enableClientValidation no existe bueno la omití del código y perfecto deja visualizar pero ahora se me presento un problema mas grande jejeje puros problemas jejeje, cuando ingreso a la opción administrar usuarios me muestra el siguiente error "Missing argument 1 for CDbConnection::createCommand(), called in C:\AppServ\www\proyectosEclipse\contactos\protected\modules\cruge\components\CrugeAuthManager.php on line 590 and defined"
ResponderEliminarEstoy usando Apache/2.2.8 (Win32) PHP/5.2.6 Yii Framework/1.1.5 y postgres 9.1
aclaro por si acaso funciona el uso del login y que un usuario se registre pero al terminar de registrarse sale el error, pero si se guardan los datos en base de datos
agradecería su ayuda de antemano GRACIAS !!!
hola te respondi por correo, pero escribo de nuevo por aca agregando:
Eliminartrata de subirle un poco las versiones a las que estan reportadas en el README.md, Yii 1.1.11 al menos, php 5.3 al menos...quiza estas sean las causas.
si aun subiendo las versiones base sigue el error entonces reporta el issue en el sitio de bitbucket,
y gracias por informar !
gracias Christian solo fue cambiar la versión de yii y wuala... gracias ;) ahora a probarlo ...
Eliminarha por cierto no recibí ningún e-mail ....
ok actualizate al ultimo commit que acaba de salir usando git:
ResponderEliminarcd tuapp/modules/cruge
git fetch
git pull
eso actualizara a cruge contra la ultima version. te recomiendo que no modifiques el core para que puedas sincronizarte con el repo de cruge y asi recibir los updates de una forma muy sencilla.
Hola, soy nuevo tanto con yii como con cruge. He conseguido instalar cruge y estoy intentando crear la pagina de registro de usuarios. Mi duda es ¿Hay manera de definir campos personalizados de perfil ocultos?Gracias de antemano.
ResponderEliminarhola, en este momento no. cual sería el propósito de tener campos ocultos de perfil ? si tu objetivo es tener datos de tu propio negocio asociados al usuario de cruge lo que debes hacer es crear una relacion: una nueva tabla que asocie el usuario de cruge con otra cosa. Mira en los "casos de ejemplo" de la wiki.
EliminarBuenas Tarde Chistian, mi pregunta es como hago para hacer una regla de negocio, porque creo el rol lo asigno al usuario y luego voy al controlado y agrego las linea de codigo quye este en el tutorial gruge pero no hace nada.
ResponderEliminarpublic function filters(){
return array('accessControl',array('CrugeAccessControlFilter'));
}
$params ='x_x';
if(Yii::app()->user->checkAccess('action_grupos_index', $params)){ Yii::app()->user->setFlash(‘success’,”El proceso fue realizado correctamente.”);
}
hola Christian estoy teniendo problemas a la hora de editar mi usuario y me tira este error Method CJavaScriptExpression::__toString() must return a string value sabesq puede ser?
ResponderEliminarCJavaScriptExpression es una clase que viene con las ultimas versiones de yii frramework, revisa que tu framework sea superior a 1.12. sino copia y pega el error aqui con su stack trace completo.
Eliminarsi es superior a 1.12
Eliminarahi te mando el stack trace
Eliminar#0
– C:\xampp\htdocs\soporte\yii\framework\web\helpers\CJavaScript.php(94): CJavaScript::encode(CJavaScriptExpression)
89 {
90 $es=array();
91 if(($n=count($value))>0 && array_keys($value)!==range(0,$n-1))
92 {
93 foreach($value as $k=>$v)
94 $es[]="'".self::quote($k)."':".self::encode($v);
95 return '{'.implode(',',$es).'}';
96 }
97 else
98 {
99 foreach($value as $v)
#1
Eliminar– C:\xampp\htdocs\soporte\yii\framework\web\helpers\CHtml.php(1065): CJavaScript::encode(array("success" => CJavaScriptExpression, "error" => CJavaScriptExpression, "url" => "/soporte/cruge/ui/ajaxgeneratenewpassword.html", "cache" => false))
1060 {
1061 if(!isset($options['success']))
1062 $options['success']=new CJavaScriptExpression('function(html){jQuery("'.$options['replace'].'").replaceWith(html)}');
1063 unset($options['replace']);
1064 }
1065 return 'jQuery.ajax('.CJavaScript::encode($options).');';
1066 }
1067
1068 /**
1069 * Generates the URL for the published assets.
1070 * @param string $path the path of the asset to be published
#2
Eliminar– C:\xampp\htdocs\soporte\yii\framework\web\helpers\CHtml.php(2059): CHtml::ajax(array("success" => CJavaScriptExpression, "error" => CJavaScriptExpression, "url" => "/soporte/cruge/ui/ajaxgeneratenewpassword.html"))
2054 $url='';
2055 $handler.="jQuery.yii.submitForm(this,'$url',$params);{$return};";
2056 }
2057
2058 if(isset($htmlOptions['ajax']))
2059 $handler.=self::ajax($htmlOptions['ajax'])."{$return};";
2060
2061 if(isset($htmlOptions['confirm']))
2062 {
2063 $confirm='confirm(\''.CJavaScript::quote($htmlOptions['confirm']).'\')';
2064 if($handler!=='')
#3
Eliminar– C:\xampp\htdocs\soporte\yii\framework\web\helpers\CHtml.php(435): CHtml::clientChange("click", array("ajax" => array("success" => CJavaScriptExpression, "error" => CJavaScriptExpression, "url" => "/soporte/cruge/ui/ajaxgeneratenewpassword.html"), "name" => "yt0", "type" => "button", "value" => "Generar una nueva clave", ...))
430 }
431 if(!isset($htmlOptions['type']))
432 $htmlOptions['type']='button';
433 if(!isset($htmlOptions['value']))
434 $htmlOptions['value']=$label;
435 self::clientChange('click',$htmlOptions);
436 return self::tag('input',$htmlOptions);
437 }
438
439 /**
440 * Generates a button using HTML button tag.
#4
– C:\xampp\htdocs\soporte\yii\framework\web\helpers\CHtml.php(1004): CHtml::button("Generar una nueva clave", array("ajax" => array("success" => CJavaScriptExpression, "error" => CJavaScriptExpression, "url" => "/soporte/cruge/ui/ajaxgeneratenewpassword.html")))
0999 */
1000 public static function ajaxButton($label,$url,$ajaxOptions=array(),$htmlOptions=array())
1001 {
1002 $ajaxOptions['url']=$url;
1003 $htmlOptions['ajax']=$ajaxOptions;
1004 return self::button($label,$htmlOptions);
1005 }
1006
1007 /**
1008 * Generates a push button that can submit the current form in POST method.
1009 * @param string $label the button label
#5
– C:\xampp\htdocs\soporte\protected\modules\cruge\views\ui\usermanagementupdate.php(51): CHtml::ajaxButton("Generar una nueva clave", "/soporte/cruge/ui/ajaxgeneratenewpassword.html", array("success" => CJavaScriptExpression, "error" => CJavaScriptExpression))
46 user->ui->ajaxGenerateNewPasswordUrl
49 ,array('success'=>new CJavaScriptExpression('fnSuccess'),
50 'error'=>new CJavaScriptExpression('fnError'))
51 ); ?>
52
56
#6
Eliminar– C:\xampp\htdocs\soporte\yii\framework\web\CBaseController.php(127): require("C:\xampp\htdocs\soporte\protected\modules\cruge\views\ui\userman...")
122 $data=$_data_;
123 if($_return_)
124 {
125 ob_start();
126 ob_implicit_flush(false);
127 require($_viewFile_);
128 return ob_get_clean();
129 }
130 else
131 require($_viewFile_);
132 }
#7
– C:\xampp\htdocs\soporte\yii\framework\web\CBaseController.php(96): CBaseController->renderInternal("C:\xampp\htdocs\soporte\protected\modules\cruge\views\ui\userman...", array("model" => CrugeStoredUser, "boolIsUserManagement" => true), true)
091 {
092 $widgetCount=count($this->_widgetStack);
093 if(($renderer=Yii::app()->getViewRenderer())!==null && $renderer->fileExtension==='.'.CFileHelper::getExtension($viewFile))
094 $content=$renderer->renderFile($this,$viewFile,$data,$return);
095 else
096 $content=$this->renderInternal($viewFile,$data,$return);
097 if(count($this->_widgetStack)===$widgetCount)
098 return $content;
099 else
100 {
101 $widget=end($this->_widgetStack);
#8
– C:\xampp\htdocs\soporte\yii\framework\web\CController.php(870): CBaseController->renderFile("C:\xampp\htdocs\soporte\protected\modules\cruge\views\ui\userman...", array("model" => CrugeStoredUser, "boolIsUserManagement" => true), true)
865 */
866 public function renderPartial($view,$data=null,$return=false,$processOutput=false)
867 {
868 if(($viewFile=$this->getViewFile($view))!==false)
869 {
870 $output=$this->renderFile($viewFile,$data,true);
871 if($processOutput)
872 $output=$this->processOutput($output);
873 if($return)
874 return $output;
875 else
#10
Eliminar– C:\xampp\htdocs\soporte\protected\modules\cruge\controllers\UiController.php(272): CController->render("usermanagementupdate", array("model" => CrugeStoredUser, "boolIsUserManagement" => true))
267 array(
268 'model' => $model
269 ,
270 'boolIsUserManagement' => $boolIsUserManagement
271 )
272 );
273 }
274
275 /*
276 solo se crea el ICrugeStoredUser, no todo el perfil.
277 */
#11
– C:\xampp\htdocs\soporte\protected\modules\cruge\controllers\UiController.php(230): UiController->_editUserProfile(CrugeStoredUser, true)
225 }
226 }
227
228 public function actionUserManagementUpdate($id)
229 {
230 $this->_editUserProfile(Yii::app()->user->um->loadUserById($id), true);
231 }
232
233 public function _editUserProfile(ICrugeStoredUser $model, $boolIsUserManagement)
234 {
235 // carga los campos definidos por el administrador
#12
unknown(0): UiController->actionUserManagementUpdate("14")
#13
Eliminar– C:\xampp\htdocs\soporte\yii\framework\web\actions\CAction.php(107): ReflectionMethod->invokeArgs(UiController, array("14"))
102 else if($param->isDefaultValueAvailable())
103 $ps[]=$param->getDefaultValue();
104 else
105 return false;
106 }
107 $method->invokeArgs($object,$ps);
108 return true;
109 }
110 }
#14
– C:\xampp\htdocs\soporte\yii\framework\web\actions\CInlineAction.php(48): CAction->runWithParamsInternal(UiController, ReflectionMethod, array("id" => "14"))
43 {
44 $methodName='action'.$this->getId();
45 $controller=$this->getController();
46 $method=new ReflectionMethod($controller, $methodName);
47 if($method->getNumberOfParameters()>0)
48 return $this->runWithParamsInternal($controller, $method, $params);
49 else
50 return $controller->$methodName();
51 }
52
53 }
#15
– C:\xampp\htdocs\soporte\yii\framework\web\CController.php(309): CInlineAction->runWithParams(array("id" => "14"))
304 {
305 $priorAction=$this->_action;
306 $this->_action=$action;
307 if($this->beforeAction($action))
308 {
309 if($action->runWithParams($this->getActionParams())===false)
310 $this->invalidActionParams($action);
311 else
312 $this->afterAction($action);
313 }
314 $this->_action=$priorAction;
#16
Eliminar– C:\xampp\htdocs\soporte\yii\framework\web\filters\CFilterChain.php(134): CController->runAction(CInlineAction)
129 $filter=$this->itemAt($this->filterIndex++);
130 Yii::trace('Running filter '.($filter instanceof CInlineFilter ? get_class($this->controller).'.filter'.$filter->name.'()':get_class($filter).'.filter()'),'system.web.filters.CFilterChain');
131 $filter->filter($this);
132 }
133 else
134 $this->controller->runAction($this->action);
135 }
136 }
#17
– C:\xampp\htdocs\soporte\protected\modules\cruge\components\CrugeAccessControlFilter.php(90): CFilterChain->run()
85 //
86 $this->reportError($controllerItemName);
87 }
88 */
89
90 $filterChain->run();
91 }
92
93 private function reportError($itemName)
94 {
95 if (CrugeUtil::config()->allowUserAlways == false) {
#18
– C:\xampp\htdocs\soporte\protected\modules\cruge\components\CrugeUiAccessControlFilter.php(37): CrugeAccessControlFilter->preFilter(CFilterChain)
32 // los demas filtros
33 $currentActionName = Yii::app()->getController()->action->id;
34 if (in_array($currentActionName, $this->publicActions)) {
35 return true;
36 } else {
37 parent::preFilter($filterChain);
38 }
39 }
40
41 protected function postFilter($filterChain)
42 {
#19
– C:\xampp\htdocs\soporte\yii\framework\web\filters\CFilter.php(39): CrugeUiAccessControlFilter->preFilter(CFilterChain)
34 * if the action should be executed.
35 * @param CFilterChain $filterChain the filter chain that the filter is on.
36 */
37 public function filter($filterChain)
38 {
39 if($this->preFilter($filterChain))
40 {
41 $filterChain->run();
42 $this->postFilter($filterChain);
43 }
44 }
#20
Eliminar– C:\xampp\htdocs\soporte\yii\framework\web\filters\CFilterChain.php(131): CFilter->filter(CFilterChain)
126 {
127 if($this->offsetExists($this->filterIndex))
128 {
129 $filter=$this->itemAt($this->filterIndex++);
130 Yii::trace('Running filter '.($filter instanceof CInlineFilter ? get_class($this->controller).'.filter'.$filter->name.'()':get_class($filter).'.filter()'),'system.web.filters.CFilterChain');
131 $filter->filter($this);
132 }
133 else
134 $this->controller->runAction($this->action);
135 }
136 }
#21
– C:\xampp\htdocs\soporte\yii\framework\web\filters\CFilter.php(41): CFilterChain->run()
36 */
37 public function filter($filterChain)
38 {
39 if($this->preFilter($filterChain))
40 {
41 $filterChain->run();
42 $this->postFilter($filterChain);
43 }
44 }
45
46 /**
#22
– C:\xampp\htdocs\soporte\yii\framework\web\CController.php(1146): CFilter->filter(CFilterChain)
1141 */
1142 public function filterAccessControl($filterChain)
1143 {
1144 $filter=new CAccessControlFilter;
1145 $filter->setRules($this->accessRules());
1146 $filter->filter($filterChain);
1147 }
1148
1149 /**
1150 * Returns a persistent page state value.
1151 * A page state is a variable that is persistent across POST requests of the same page.
#23
– C:\xampp\htdocs\soporte\yii\framework\web\filters\CInlineFilter.php(59): CController->filterAccessControl(CFilterChain)
54 * @param CFilterChain $filterChain the filter chain that the filter is on.
55 */
56 public function filter($filterChain)
57 {
58 $method='filter'.$this->name;
59 $filterChain->controller->$method($filterChain);
60 }
61 }
#24
– C:\xampp\htdocs\soporte\yii\framework\web\filters\CFilterChain.php(131): CInlineFilter->filter(CFilterChain)
126 {
127 if($this->offsetExists($this->filterIndex))
128 {
129 $filter=$this->itemAt($this->filterIndex++);
130 Yii::trace('Running filter '.($filter instanceof CInlineFilter ? get_class($this->controller).'.filter'.$filter->name.'()':get_class($filter).'.filter()'),'system.web.filters.CFilterChain');
131 $filter->filter($this);
132 }
133 else
134 $this->controller->runAction($this->action);
135 }
136 }
#25
Eliminar– C:\xampp\htdocs\soporte\yii\framework\web\CController.php(292): CFilterChain->run()
287 $this->runAction($action);
288 else
289 {
290 $priorAction=$this->_action;
291 $this->_action=$action;
292 CFilterChain::create($this,$action,$filters)->run();
293 $this->_action=$priorAction;
294 }
295 }
296
297 /**
#26
– C:\xampp\htdocs\soporte\yii\framework\web\CController.php(266): CController->runActionWithFilters(CInlineAction, array("accessControl", array(0 => "CrugeUiAccessControlFilter", "publicActions" => array("captcha", "registration", "login", "logout", ...))))
261 {
262 if(($parent=$this->getModule())===null)
263 $parent=Yii::app();
264 if($parent->beforeControllerAction($this,$action))
265 {
266 $this->runActionWithFilters($action,$this->filters());
267 $parent->afterControllerAction($this,$action);
268 }
269 }
270 else
271 $this->missingAction($actionID);
#27
– C:\xampp\htdocs\soporte\yii\framework\web\CWebApplication.php(283): CController->run("usermanagementupdate")
278 {
279 list($controller,$actionID)=$ca;
280 $oldController=$this->_controller;
281 $this->_controller=$controller;
282 $controller->init();
283 $controller->run($actionID);
284 $this->_controller=$oldController;
285 }
286 else
287 throw new CHttpException(404,Yii::t('yii','Unable to resolve the request "{route}".',
288 array('{route}'=>$route===''?$this->defaultController:$route)));
#28
– C:\xampp\htdocs\soporte\yii\framework\web\CWebApplication.php(142): CWebApplication->runController("cruge/ui/usermanagementupdate/id/14")
137 foreach(array_splice($this->catchAllRequest,1) as $name=>$value)
138 $_GET[$name]=$value;
139 }
140 else
141 $route=$this->getUrlManager()->parseUrl($this->getRequest());
142 $this->runController($route);
143 }
144
145 /**
146 * Registers the core application components.
147 * This method overrides the parent implementation by registering additional core components.
#29
Eliminar– C:\xampp\htdocs\soporte\yii\framework\base\CApplication.php(162): CWebApplication->processRequest()
157 */
158 public function run()
159 {
160 if($this->hasEventHandler('onBeginRequest'))
161 $this->onBeginRequest(new CEvent($this));
162 $this->processRequest();
163 if($this->hasEventHandler('onEndRequest'))
164 $this->onEndRequest(new CEvent($this));
165 }
166
167 /**
#30
– C:\xampp\htdocs\soporte\index.php(13): CApplication->run()
08 defined('YII_DEBUG') or define('YII_DEBUG',true);
09 // specify how many levels of call stack should be shown in each log message
10 defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
11
12 require_once($yii);
13 Yii::createWebApplication($config)->run();
ahi ya subi todo el tack
Eliminary queria saber como hago para cambiar el usuario y la contraseña que tiene de admin por defecto porque no me toma cambiando el superuserName desde el config/main
ResponderEliminarhola, usuarios y passwords se establecen en la tabla cruge_user en la base de datos, no en config man.
Eliminary tambien si hay alguna manera de no hacer visible los elementos del menu segun el rol que tenga cada usuario??
ResponderEliminardos temas ahi: 1. si usas el constructor de menues de cruge, ya eso lo hace automatico.
ResponderEliminar2. si no lo usas, entonces simplemente se hace con Yii::app()->user->checkAccess, la vista por defecto de yii lo hace, en el layouts/main.php.
Este comentario ha sido eliminado por el autor.
Eliminarel codigo q te copie abajo es parte de mi menu:
Eliminararray('label'=>'Clientes', 'visible'=>
'items'=>array(
array('label'=>'Todos los Clientes','url'=>array('/clientes/index')),
array('label'=>'Administrador de Clientes','url'=>array('/clientes/admin')),
array('label'=>'Nuevo Cliente','url'=>array('/clientes/create')),
),
)
que le tnego que agregar a visible si quiero q todos los roles q tengan asigando clientes puedan ver ese elemento en el menu y los roles q no tengan clientes no lo vean
hola Christian gracias por tu aporte, quisiera saber donde puedo encontrar la documentación de cruge ya que parece que los en laces en ya no están y necesito implementarlo, de antemano gracias.
ResponderEliminarhola, los enlacen estan ahi, no se han eliminado ni se eliminarán. solo hubo una caida por mudanza, y eso duro solo menos de un dia.
EliminarChristian pudiste mirar lo que te mande del error que te habia comentado?
ResponderEliminarhola christian disculpa la insistencia pero sabes cual podria ser el error q te mande mas arrib??
ResponderEliminarHola cristian soy nueva en lo de yii ya realice la instacion de yii y la del cruge queria preguntarte como puedo hacer para crear un usuario con multiples roles y que cuando el usuario inicie pregunte por que rol desea ingresar y que solo se muestre lo indicado para el rol que eligio he estado intentando muchas cosas y no he podido dar en el punto muchas gracias
ResponderEliminarHola Cristian. Te cuento que instalé CRUGE, lo tengo funcionando y me parece simplemente genial, es justo lo que necesitaba y no tuve que reinventar la rueda!
ResponderEliminarTe escribo porque ayer estuve ingresando al link: http://yiiframeworkenespanol.org/wiki/index.php?title=CrugeTutorial pero hoy quise entrar de nuevo para consultarlo y sólo muestra una página de wiki vacía. Me podrías indicar si cambió el link o si hubo algún problema?
Desde ya, me ofrezco a colaborar con el proyecto si necesitás ayuda, estoy desarrollando un sistema en Yii y este módulo en particular me resulta muy útil. Gracias!
Patricia
Hola Cristian, igualmente estoy tratando de acceder a la documentacion al link: http://yiiframeworkenespanol.org/wiki/index.php?title=CrugeTutorial pero no he podido consultarlo y sólo muestra una página de wiki vacía. Me podrías indicar donde puedo cionsultar todo ese tutorial. Gracias
ResponderEliminarHola, esta caida la Wiki, pronto se resolvera. Mientras tanto pueden recurrir a este PDF:
ResponderEliminarhttps://bitbucket.org/christiansalazarh/cruge/downloads/cruge--christiansalazarh%40gmail.com--.pdf
Hola Christian, espero te encuentres bien y gracias por cruge que RBAC no ha ahorrado mucho tiempo en desarrollo, pero tenemos un probelma con cruge y el tiempo de duración de las sesiones usando centos default install con apache y apache user. Hemos probado aumentando el tiempo a nivel del php.ini y cambiamos el campo dentro de las variables configurables de sistema del cruge por web, no obstante, siguen las sesiones expirando muy rápido fácilmente en menos de 3-5 mins, también revisamos dónde se guardan las sesiones en archivos e hicimos que el apache tenga permisos sin problema, pero no logramos entender la lógica de la expiración, por cierto lo que sí vemos es que cuando un user hace login en la tabla BD de sesiones se crean pero no se eliminan ahora fácilmente tenemos sobre 5000 registros dentro de la tabla, espero nos puedas guiar para solventar el problema.
ResponderEliminarQuedo atento a comentarios
Hola Jean Paul en la APi de ayuda tienes lo que estas buscando , http://yiiframeworkenespanol.com/wiki/index.php?title=Cruge#VARIABLES_DEL_SISTEMA
ResponderEliminarHola paolo. que bueno que les ha servido. es el propósito. respecto al bug o a lo que consideres como bug hay un repositorio para ello, sería bueno que te registres en bitbucket y crees un nuevo issue indicando con detalles el caso.
ResponderEliminarhola donde se guardan los menus creados osea me refiero a las tareas y roles, se que estan en administrador de usuarios pero es que me muestro un error al crear un nuevo rol ahora ya no pedo acceder, ni crear nuevos roles para
ResponderEliminarporfa nesesito ayuda
ResponderEliminarHola buenas noches, estoy intentando agregar un rol a un usuario pero el rol es en base a un modulo que he creado esto es posible? gracias de antemano
ResponderEliminarBuenas tardes, estoy usando CRUGER para un mini sistema web pero, voy varios dias tratando que mis modulos desarrollado se muestren en la seccion de Operaciones, tareas, alguno que me ayude indicando que debo configurar para que se muestre en el GRUGER
ResponderEliminarBuenos dias, quisiera saber como limitar la sesion de un usuario a solo 1, es decir, que no pueda acceder a la aplicacion desde la misma ip o desde otro equipo, a lo mejor la pregunta es tonta, pero ignoro como hacerlo, agradezco la atencion y ayuda que me puedan brindar
ResponderEliminarHola como estas Christian, Disculpa tengo una curiosidad acerca de los campos personalizado eh creado dos campos Nombre y Apellido pero gustaría saber como puedo mostrar esos campos en usermanagementadmin y que me permita realizar búsquedas por esos dos campos personalizados. De antemano te agradezco la atencion.!
ResponderEliminar