Разраничение доступа и добавление материала.

Озадачился построением сайта для локалки.

Логин-пароль авторизация. В зависимости от прав скрываются или показываются пункты меню (3-4 уровня вложенности).

Меню организует структуру текстовых документов.

Добавление материалов так же разграничивается правами пользователя.

Т.е. каждому "редактору" доступна для добавления только некоторая часть пунктов меню.

Вопрос: достаточно ли функционала yii для решения такой задачи? Или нужно будет прибегнуть к "внешней" помощи.

Спрашиваю, потому что больше не у кого :rolleyes:

Достаточно. Почитайте это для начала.

Прочитал, поигрался… Напрягает раскидывание по файлам )

Если б не нетбинс…

А такая штука в конфиге прокатит?


'class' => 'ext.fileRBAC.WebUser'

Теперь ломаю мозг как сделать пользователя модератором на конкретный раздел.

Модератора на конкретный раздел можно сделать используя бизнес-правила.

Допустим простейшую, потому что это пример, структуру, когда пользователь может быть модератором только одного раздела, т.е. в таблице пользователей есть поле "moderated_in" которое ссылается на id раздела где он является модератором.

Создаем действие "canModerate" с бизнес правилом "return Yii::app()->user->getAR()->moderated_in == $params["model"]->id;"

Теперь проверка права пользователя будет выглядеть:




if (Yii::app()->user->checkAccess("canModerate", array("model"=>$model) )) ...



где $model это ActiveRecord модель раздела, которая передается в бизнес-правило что бы сравнить id раздела с полем user.>moderated_in

PS: функцию getAR() я определял в WebUser, но можно и без неё обойтись.




public function getAR(){

    return tUser::model()->findByPk($this->id);

}



PSS: если не нравится с множеством файлов возится, то можно хранить RBAC в базе данных, как это предусмотрено по умолчанию.

И вообще есть такое расширение как Rights, чтобы вообще ни с чем не возиться :)

Jampire, Charger, andy_s

Спасибо за советы )

не без скрипа скрестил yii-user с rights…

по пути пробовал разные cms на базе yii.

процесс продолжается :)

думаю теперь прикрутить smartmenu, ибо оно, по заверениям автора, изначально совместимо с rights.