права доступа

Limb2 CMS с точки зрения использования(Внимание, разработка Limb2 прекращена)

права доступа

Сообщение maloc » Вс окт 21, 2007 1:19 am

1.
нужно при определенных условиях, для определенных обектов задавать права доступа для каждой из груп

тоесть
событие 1, экшн change_access_policy:
article1 article2 article3
visitors ok ok
admins ok ok

событие 2, экшн change_access_policy:
article1 article2 article3
visitors none ok
admins ok none

2. есть кое-какой поиск по обектах. поиск реализован таким образом:
- датасорс, в нем выборка всех доступных, потом обходжу цыклом все обекты и делаю unset для тех, которые не "подходят". вот. медленно, но работает

и тут же проблема: с тем датасорсом который я возвращаю в шаблон, не работает стандартный pager. можно конешно и повозится с реализацыей собственного подобия, но все же хотелось бы знать, можно ли заставить стандартный navigator работать с моим датасорсом : )

ну, в общем что то такое
maloc
LIMB Hesitant
 
Сообщения: 5
Зарегистрирован: Вс окт 21, 2007 1:13 am

Сообщение wIliaM » Пн окт 22, 2007 10:37 am

1. почитай про шаблоны прав доступа

2. можно осуществлять выборку с поиском и учетом прав доступа одновременно. соответсвенно pager тоже должен работать (вообще pagerу от датасорса нужна только информация об общем количестве доступных элементов). посмотри в сторону search_fetcher

ну, в общем, какой-то такой ответ :wink:
Аватара пользователя
wIliaM
LIMB Developer
 
Сообщения: 718
Зарегистрирован: Пт июн 04, 2004 11:23 pm
Откуда: Russia, Penza

Сообщение maloc » Пн окт 22, 2007 3:35 pm

ты меня немного не понял
но хорошо хоть ответ не выглядил http://google.com/

когда я говорил "делаю unset для тех, которые не "подходят"", имелось ввиду, что SQL запросом выборку сделать не реально. а меня бы устроил ответ типа:

$result = new datasource($prepared_array);
return $result;

думал что то такое есть.

вот

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

$object = wrap_with_site_object(fetch_requested_object($request));
$groups = array('registered_users'=>1, 'visitors'=>0);
$action = 'display';
$access_policy->save_object_access_for_action($object, $action, $groups);

вот такой бред мне бы очень подошел : )
maloc
LIMB Hesitant
 
Сообщения: 5
Зарегистрирован: Вс окт 21, 2007 1:13 am

Сообщение maloc » Вт окт 23, 2007 1:53 am

Код: Выделить всё
   function setObjectAccess($object_id, $accessor_id, $access){
    $db =& db_factory :: instance();

      switch($access){
      case 1:
            $sql = "INSERT INTO `sys_object_access` SET `object_id`='$object_id', `accessor_id`='$accessor_id', `access`=1";
         break;
      case 0:
            $sql = "DELETE FROM `sys_object_access` WHERE `object_id`='$object_id' AND `accessor_id`='$accessor_id'";
         break;
      }
    $db->sql_exec($sql);
   }


вот как я решыл первую проблему... банально, но : )

вторая в принцыпе актуальна.
не хочется опять извращатся
maloc
LIMB Hesitant
 
Сообщения: 5
Зарегистрирован: Вс окт 21, 2007 1:13 am

Сообщение korchasa » Вт окт 23, 2007 3:55 pm

Насколько я понимаю речь о гловальное таблице прав доступа? Можно описать логику распределения прав? Может ACL больше подойдет?
Аватара пользователя
korchasa
LIMB Developer
 
Сообщения: 935
Зарегистрирован: Чт май 10, 2007 3:47 am

Сообщение maloc » Вт окт 23, 2007 4:38 pm

korchasa писал(а):Насколько я понимаю речь о гловальное таблице прав доступа? Можно описать логику распределения прав? Может ACL больше подойдет?


можно описать. может и больше подойдет, но у меня попроще задача... строить ACL немного накладно в моем случае. мне было влом делать даже то, что я уже сделал. просто какое-то чувство подсказывало, что логично такой функцыонал должен был быть по дефолту. тоесть он (функционал) есть. но как его юзать я не разобрался
maloc
LIMB Hesitant
 
Сообщения: 5
Зарегистрирован: Вс окт 21, 2007 1:13 am


Вернуться в Limb2 использование

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

Сейчас этот форум просматривают: Yahoo [Bot] и гости: 0

cron