Duda sobre RBAC

Hola a todos,

en el proyecto que estoy actualmente programando quiero usar RBAC pero me surgieron algunas dudas, les comento primero un poco sobre los roles:

  • Responsables: es el rol mas bajo y solo se le debe permitir ver y hacer updates sobre los registros de una tabla (solo los registros que le pertenecen a él, otro perfil asigna esto)

  • subdirector: hereda los privilegios de responsables pero ademas puede ver toda la informacion de su subdireccion (tiene un conjunto de datos al que puede acceder mucho mas grande que la del responsable).

  • otros mas.

Si uso RBAC sé que puedo limitar el rol de resposables para que pueda ver y actualizar nada mas (hacer uso de ciertos actions, que yo defina), pero ¿cómo hago para que solo cierta informacion sea la manipulable por el perfil? ejemplo el usuario_1 que tiene rol de responsable debe ver el registro 1,2 y 3 pero no el 4,5 ni 6 al ejecutarse el actionView se le concederia permisos para ver la pg porque tiene el perfil adecuado pero ¿cómo se le limitan los registros que puede ver?, igual para el perfil de subdirector, van a existir varios usuarios subdirectores, pero la informacion de cada subdireccion es diferente y el subdirector solo debe de ver la informacion que le corresponda; sé que podria hacerlo directamente con un if preguntando esto, pero se puede hacer con RBAC? hay algo que me permita hacerlo de forma mas efectiva?

Gracias

Compañero aparte de esa duda, ya te planteaste con que interfaz grafica vas a controlar RBAC…

[font=Calibri]- [/font]RIGHTS http://www.yiiframework.com/forum/index.php?/topic/10556-extension-rights/ (la que estoy implementando)

[font=Calibri]- [/font]USERGROUPS http://www.yiiframework.com/extension/usergroups/

[font=Calibri]- [/font]RBAM http://www.yiiframework.com/extension/rbam/

Si alguien recomienda cual es la mas estable, se agradece.

Si no tiene que manejar demasiados usuarios, recomiendo SRBAC, pero si son más de 100 recomiendo el uso de Rights o RBAM (UserGroups no lo he usado)

Saludos y éxitos,

Ricardo

Por supuesto, hay una función para verificar si un usuario tiene un rol y sería del estilo:

Si está dentro de un controller;


$this->checkAccess('Subdirector');

Si está en un model, widget o demás:


Yii::app()->user->checkAccess('Subdirector','nombredeusuario');

Saludos y éxitos,

Ricardo