rbac visual

hola amigos, me ha costado un poco de trabajo pero me parece que ya entendí como funciona rbac en yii2, ahora me surge una duda, despues de leer bastante documentación y ejemplos no he visto como asignar los roles dinámicamente desde la interfaz, cuando digo dinámicamente me refiero que en el proceso de creación o edición de usuarios se puedan asignar los roles(mediante un combo o con un botón), si he visto como hacerlo mediante código, pero eso no me es funcional para el resultado final, ya que mis usuarios varian mucho tanto en existencia como en sus funciones y necesito darle esa funcionalidad al admin de la aplicación. alguna sugerencia?

pues yo te aconsejaría:

Opción 1 : Crear un roll standar para los usuarios que se registren (el roll se asigna automáticamente al crearse el usuario sin ningún tipo de botón) de tal forma que el admin pueda luego entrar a modificar el roll del usuario y ajustarlo a sus funciones. En esta opcion tendrias que ir a tu action create en tu controlado, luego de recibir los datos por POS de tu modelo usuarios tendrias q hacer un insert en el modelo de los rolles de tal manera q al id del usuario q se acaba de registrar le asignes por defecto un roll.

Opción 2: Antes de guardar validar la función del que se esta registrando de tal manera que se le asigne un roll especifico a determinada función por ejemplo: si el usuario elige como función "cajero" se le asignara un roll de "operador". En esta opcion debes hacer una validacion de un campo "funcion" para luego poder hacer el insert en el modelo de roll acorde a la funcion q desempeña el usuario registrado

Espero haberme hecho entender ayudaría un poco mas si posteas un poco del código (tu controlador de los usuarios, el modelo donde se asigna los roles y por ultimo el formulario de los usuarios).

muchas gracias por la respuesta, pero buscando en la web vi esto yii2-improved-basic-template, solamente me lei la documentacion aqui doc y lo modifique segun mis necesidades, ya tengo mis roles, lo malo es que los debo crear al mismo tiempo, en yii1 yo creé una funcion que me permitia crear y asignar el rol dinamicamente, osea, cuando considerara necesario desde la interfaz de esta manera




<div class="row-fluid">

    <div class="span6">

      <h1>Crear rol</h1>

            <?php $form=$this->beginWidget("CActiveForm") ?>


            <?php echo $form->labelEx($role,"name");?>

            <?php echo $form->textField($role,"name");?>

            <?php echo $form->error($role,"name");?>


            <?php echo $form->labelEx($role,"description");?>

            <?php echo $form->textArea($role,"description");?>

            <?php echo $form->error($role,"description");?>

              

            <br>

            <?php echo CHtml::submitButton("Crear",array("class"=>"btn btn-primary")); ?>

            <?php $this->endWidget();?>  

    </div>

    <div class="span6">

      <ul class="nav nav-tabs nav-stacked">

            <?php foreach(Yii::app()->authManager->getAuthItems() as $data):?>

            <?php echo $enabled=Yii::app()->authManager->checkAccess($data->name,$model->id)?> 

              <li>      

                    <h4><?php echo $data->name ?>

                          <small>

                              <?php if($data->type==0) echo "Role"; ?>


                          </small>

                          <?php echo CHtml::link($enabled?"Retirar":"Asignar",array("user/assign","id"=>$model->id,"item"=>$data->name),

                                array("class"=>$enabled?"btn btn-primary":"btn")); ?>

                      </h4>

                      <p><?php echo $data->description?></p>

                      <hr>

              </li>

            <?php endforeach; ?>

      </ul>

    </div>

</div>



pero en yii2 la funcion getAuthItems no existe y no encontre alternativa a ella, pero bueno ya resolvi, gracias nuevamente, si conoces una forma de emular la funcion getAuthItems en yii2 hazmelo saber.




$auth = Yii::$app->authManager;

$rol = $auth->getRole('administracion'); --> obtienes el objeto rol

$permisos = $auth->getPermissionsByRole('administracion'); --> obtienes un array de los permisos, en este caso del rol administracion.



en Yii 1.1.x los items son la suma de los elementos rol + permisos que hay en Yii 2.0.x




$rol = $auth->getRoles(); --> obtienes un array con los roles en el sistema

$permisos = $auth->getPermissions(); --> obtienes un array con todos los permisos del sistema



Tienes más métodos en la documentación. rbac

Amigo te recomiendo la extension yii2-admin hay mucha documentacion y funciona perfectamente, ademas de poder extender sus controladores, modelos y vistas para que tu mismo lo personalices a tu gusto,

Saludos,

Wilmer.

yii2-admin

amigo trate con eso pero no entiendo como es que le debo agregar las reglas a la hora de crear los roles, en fin me fue enrredado pq sinceramente cambió un poco el rbac de yii al de yii2 y todavia no lo cojo del todo.

Hola a todos, me podrian documentar como lo lograron con yii2-improved-basic-template, ya que la documentacion que recomiendan, parece no estar disponible, yo tambien necesito implementar rbac y no lo entiendo bien, en yii 1.1 era muy facil con el cruge, saludos