Блог пользователя - evgeny_ufa

Ограничение прав на редактирование в модуле Family

9 января 2011 в 9:20

Добрый день!
Столкнулся с такой проблемой, в модуле Family изначально предоставлена возможность редактировать собственные записи и редактировать все записи, вот запись из файла family.module

<?phpfunction family_perm() {
  return array(
    'access family nodes', 
    'access family private records', 
    'create family nodes', 
    'edit family nodes', 
    'edit own family nodes', 
    'administer family'
  );
}?>

Однако когда я устанавливаю права на редактирование собственных записей пользователям сайта 'edit own family nodes', они этого сделать не могут, если выставить права на редактирование всеми 'edit family nodes', то записи будут доступны на редактирование всеми.
Пробовал использовать модуль nodeaccess но он эту проблему не решает.

Очень прошу Вас посмотреть код разграничения прав доступа, возможно там закралась ошибка его разработчиков???

<?phpfunction family_individual_access($op, $node, $account) {
  if ($op == 'create' ) {
   return user_access('create family nodes');
  }
  if ($op == 'update' || $op == 'delete') {
    if (user_access('edit own family nodes') && ($user->uid == $node->uid)) {
      return TRUE;
    }
  else {
      return user_access('edit family nodes');
    }
  }
  if ($op == 'view') {
    return family_check_privacy($node->nid);
  }
}?>

Спасибо!

Прошу помочь разделить доступ в модуле Family

12 декабря 2010 в 18:20

Уважаемые друзья, очень прошу Вас помочь!
Сижу, разбираюсь с модулем Family, так-то все понятно как-что в нем заводится, но после того как я создал в нем несколько записей, оказалось что их могут видеть все пользователи на сайте. Причем при заведении нового члена семьи можно выбрать родителей, созданных другими пользователями на сайте, что соответственно не правильно.

Попытался ограничить доступ к чужим нодам через модуль content_access, в принципе получилось, но не все типы доступов с помощью него можно ограничить, а именно нельзя ограничить выбор родителей при создании нового человека в родословной, данное ограничение можно сделать на уровне запроса к базе (т.е. выбирать только тех родителей, которые были созданы именно текущим пользователем).

Я попытался реализовать сам, но в виду отсутствия опыта, у меня выводит все подряд, без ограничений. Прошу помочь исправить код чтобы выбирались записи, созданные текущим пользователем.

Вот пример моего кода:

 $ancestorgroups=array();
  $groups=db_query('SELECT family_group.nid, family_group.uid, family_group.title_format FROM family_group, users where users.uid=family_group.uid');
  IF ($groups) {
  while ($data = db_fetch_array($groups)) {
  $ancestorgroups[$data['nid']]=$data['title_format'];
  }
  }
  $form['GRUP'] = array(
    '#type' => 'select',
    '#title' => t('Ancestry Group'),
    '#default_value' => $node->GRUP,
    '#options' => array('' => 'Нет', 'Семьи' => $ancestorgroups),
  );

А вот пример оригинального кода:

$ancestorgroups=array();