Авторизация yii + админка rules

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
shrekki
Сообщения: 40
Зарегистрирован: 2011.12.24, 13:21
Откуда: питер

Авторизация yii + админка rules

Сообщение shrekki »

Есть готовая админка.

Все написано. Осталось дело за малым. Авторизация написана и работает.

Вопрос:

Как сделать так чтобы при обращении к любому контроллеру и действию выполнялась проверка на

Код: Выделить всё

 if (!Yii::app()->user->isGuest) 
         $this->redirect('/'); 
        else 
           $this->redirect('/index/login');
Но сама проверка была написана в одном месте!



есть еще один вопрос, не могу найти ответ или просто немного не догоняю

Есть

Код: Выделить всё

public function accessRules()
    {
        return array(
            array('allow', 
                'actions'=>array('*'),
                'users'=>array('adm'),// тут задать как-то группу нужно этих пользователей
            ),
        array('allow',
                'actions'=>array('create','update'),
                'users'=>array('mod'),
            ),
            array('allow',
                'actions'=>array('admin','delete'),
                'users'=>array('admin'),
            ),
            array('deny',  // deny all users
                'users'=>array('usr'),
            ),
        );
    }
Там прописываются права для доступа к actions по логину. У меня есть 3 группы пользователей (adm,mod,usr) это 3 группы в таблице в БД.

можно сделать наверное так

Поместить всю функцию в

/components/Controller.php

Код: Выделить всё

class Controller extends CController
он наследуется и собственно будет для всех един т.к. все контроллеры наследуются от него
class HallsController extends CController

Но тут это решение будет общим т.е. для каждого контроллера одни и те же действия для группы.

Поясню.
Есть 5-10 контролов.
Index
Pages
Halls
Some
Somepeople
ets.
Нужно чтобы группа adm имела полный доступ ко всему.
Группа mod доступ на добавление,просмотр.
Группа usr только просмотр.

НО! Группа mod не могла добавлять, просматривать и остальные действия в контроллере Some,Somepeople т.е. для этой группы он как бы закрыт.

Тут вариант наверное в контроллерах где только админ нужен именно в этом контроле прописать

Код: Выделить всё

return array(
            array('allow', 
                'actions'=>array('*'),
                'users'=>array('adm'),// т.е. только админы что-то могут делать и все, остальные нет.
            ),
Это в принципе решение хорошее, когда контролов и экшенов не много, но если контролов десятки? и действий у них тоже не мало.
http://yadi.sk/d/UaTF-15v1JZI3 картинка для rules если можно выцепить у любого контрола любой экшн.

Кто что подскажет по данному поводу?
shrekki
Сообщения: 40
Зарегистрирован: 2011.12.24, 13:21
Откуда: питер

Re: Авторизация yii + админка rules

Сообщение shrekki »

Это было прочитано. Это все статичные вещи.

А нужны динамические. Сейчас 5-10 контролов, а что будет если каждую неделю будут прибавляться новые сервисы? На работу приходить новые люди, которым нужно дать доступ только к 1 или 2 сервисам.
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Авторизация yii + админка rules

Сообщение Nafania »

Есть модуль yii-rights
Ответить