Хабр Курсы для всех
РЕКЛАМА
Большая витрина: от крупнейших школ до частных авторов. Сравнивайте по цене, длительности, формату и выбирайте самый подходящий курс!
public function executeBizRule($bizRule, $params, $data)
{
if ($bizRule instanceof Closure) {
return $bizRule($params, $data, $this);
}
return parent::executeBizRule($bizRule, $params, $data);
}
'actions'=>array(update), array(allow,
'actions'=>array('create'),
'roles'=>array('createNews'),
),
array('allow',
'actions' => array('update'),
'roles' => array(
'updateNews' => array(
'news' => $this->news
)),
),После создания элементов авторизации, компонент authManager (или его наследники, например, CPhpAuthManager, CDbAuthManager) загружает их автоматически. То есть, приведённый код запускается один раз, а НЕ для каждого запроса.
________________
Once we have established this hierarchy, the authManager component (e.g. CPhpAuthManager, CDbAuthManager) will load the authorization items automatically. Therefore, we only need to run the above code one time, and NOT for every request.
// в контроллере:
public function accessRules() {
return array(
array('allow',
'actions' => array('create', 'delete', 'update'),
'roles' => array(Access::EDIT_ARTICLE => array('article' => $this->article)),
),
)
class Access
{
/** Доступные роли
================================ */
const ROLE_USER = 'user';
/** Доступные действия для ролей
================================ */
const EDIT_ARTICLE = 'editArticle';
/** Правила
================================ */
static public $bizRules = array(
self::EDIT_ARTICLE => 'return Access::editArticle($params["article"]);',
)
/** Само сложное правило
================================ */
static public function editArticle($article) {
return random(1); // наша логика
}
}
RBAC Авторизация в YII и LDAP