Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 13 май 2024, 09:33

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: И снова роуты
СообщениеДобавлено: 31 окт 2012, 16:55 
Не в сети
Бывалый

Зарегистрирован: 10 авг 2012, 15:51
Сообщения: 33
Никак не могу понять - есть роут
Код:
Route::set('admin', 'admin(/<controller>(/<action>(/<id>)))')
   ->defaults(array(
      'directory' => 'admin',
      'controller' => 'page',
      'action' => 'index',
   ));


Задача - надо чтобы адреса вида admin/ - по умолчанию исполняли экшены из контроллера page, но если вдруг появится адрес с указанием контроллера, то из соответствующего контроллера


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: И снова роуты
СообщениеДобавлено: 31 окт 2012, 17:01 
Не в сети
Бывалый

Зарегистрирован: 10 авг 2012, 15:51
Сообщения: 33
вообще собственно зачем так надо?
Хочу чтобы при входе в админку адрес был admin
но(!) если допустим заходит юзер и у него роли админ и логин то ему подсовываем один экшн, а если заходит юзер с ролями админ, логин, рут, то ему подсовываем другой экшн с другим интерфейсом. Зачем так? Чтобы админка была единой по адресу /admin и спокойно можно было переадресовывать на этот адрес после авторизации, а не каждый раз редиректить на нужный роут.
Можно просто выделить по контроллеру на каждую группу пользователей, но опять же каждый раз дописывать редирект, если какая группа добавится, а так роут один, контроллер админки один, а экшены для пользователей разные
Разграничение на роли уже есть, а вот с роутами для этого дела беда


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: И снова роуты
СообщениеДобавлено: 31 окт 2012, 23:40 
Не в сети
Бывалый

Зарегистрирован: 29 сен 2012, 00:30
Сообщения: 65
Откуда: Рига, Латвия
Как-то очень сумбурно у вас проблема описана.
Сходу могу предложить такой вариант: в методе before определять права пользователя и отправлять(редиректить) на нужный экшн.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: И снова роуты
СообщениеДобавлено: 01 ноя 2012, 12:43 
Не в сети
Бывалый

Зарегистрирован: 10 авг 2012, 15:51
Сообщения: 33
неее, слишком много редиректов плодиться будет если экшенов много становится, проблему решил таким путем -
1) описываю роли пользователей,
2) беру последнюю роль пользователя(тут будет так на 1х местах роли с меньшими правами, чем больше индекс тем больше прав у роли)
3) Загружаю экшен с названием роли.
4) в секьюрити экшен поочередно добавляю экшены и права для них

В итоге всего 2 действия - создать экшен, создать запись в массиве секур_экшен
Думаю код всё скажет сам
Код:
class Controller_Admin_Main extends Controller_Admin_Common {
    public $secure_actions = array(
        'index' => array('login', 'admin'),
        'root' => array('login', 'admin', 'root'),
        'noaccess' => array('login')
        );
    public function action_index()
    {
        $user = Auth::instance()->get_user();

        $users = ORM::factory('user', $user->id);
        $roles = $users->roles->find_all();
        $role = $roles[count($roles)-1]->name;

        $this->view->content = Request::initial()->action($role)->execute();
        $this->response->body($this->view);
    }
    public function action_root() {}
    public function action_noaccess() {}
}

ну и дальше например
1) создаем экшен для менеджера
Код:
public function action_manager() {}

2) в секур экшн делаем
Код:
'manager' => array('login', 'admin', 'manager'),
'root' => array('login', 'admin', 'manager', 'root'),


Знаю знаю, с добавлениемролей надо будет контроллировать массив секур экшен, думаю если уж совсем упрощать то в метод before создать массив секур акшен и обединять массивы, добавляя к последнему элементу, но ролей вроде не очень много будет и прыгать часто не будут, так что как сейчас устраивает

P.S. Буду рад критике кода


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group