Як користувач може отримати доступ лише до одного конкретного вузла, а не до всіх вузлів цього типу?


10

У мене є користувач, який має права перегляду та редагування певного типу вмісту. Це надає пільгу всім користувачам переглядати та редагувати всі вузли цього типу. Але насправді я хочу створити для кожного користувача унікальний вузол, щоб лише той користувач міг його переглядати та редагувати. Як я можу це зробити в Drupal 7?


1
Ви маєте на увазі, як ви можете це зробити за допомогою модуля або як це зробити, написавши необхідний код?
kiamlaluno

Інший спосіб - це відмова вузла з використанням та розширення профілю користувача на поля.
ya.teck

Здається, цей вузол на користувача може відповідати певним вимогам профілю користувача. Чи повинен це бути окремий вузол, чи не було б краще розширити саму сутність користувача додатковими полями?
Альфред Армстронг

Drupal 7 видалив дозволи доступу до вузла на користувача. Ви можете повернути їх назад з цим модулем drupal.org/project/node_view_permissions
giorgio79

використовуйте модуль "nodeaccess", посилання - drupal.org/project/nodeaccess, я хочу, щоб це допомогло вам
Mahipal Purohit

Відповіді:


11

Використовуючи наявний модуль, ви можете це зробити за допомогою Access Access , який (коли використовується разом ACL ) дозволяє встановити дозволи для доступу до вузла для кожного користувача.
Це означає, що вам потрібно встановити дозволи доступу для кожного вузла вручну.

Якщо ви вручну створюєте вузли, а потім хочете бути впевнені, що лише користувач, який встановлений як власник вузла, може переглядати (і редагувати) його, ви можете створити власний модуль (що означає модуль, який є використовується для вашого веб-сайту) та hook_node_access()виконайте наступне (код написаний для полегшення читання):

function mymodule_node_access($node, $op, $account) {
  // We are interested to existing objects. When the node is being created, Drupal passed the node type instead of the node object. 
  if (is_object($node)) {
    $bool = (
      ($node->type == 'the node type you need to check') && 
      (($op == 'view') || ($op == 'update'))
    );
    if ($bool) {
      if ($account->uid == $node->uid) {
        return NODE_ACCESS_ALLOW;
      }
      else {
        return NODE_ACCESS_DENY;
      }
    }
  }

  return NODE_ACCESS_IGNORE;
}

Використовуючи цю реалізацію гака, вам не потрібно вручну редагувати дозволи доступу, надані для кожного вузла того типу вмісту, який ви створюєте. Зміна власника вузла також буде простішою, оскільки вам не потрібно змінювати дозволи доступу до цього вузла; код автоматично надає дозволи на оновлення та перегляд прав користувачеві, встановленому як власник (або автор) вузла.


5

Для цього вам не потрібен спеціальний модуль або спеціальний код. Просто створіть вручну ці вузли, встановіть відповідних користувачів як власника (автора) вузлів та встановіть дозволи для цього типу контенту лише для редагування власного вмісту (не редагування будь-якого вмісту цього типу), і ви закінчите.


1

Те, про що ви говорите, - це контроль доступу до вузла Drupal, який є величезною темою.

Вбудована підтримка ядра управління доступом до вузла - це, звичайно, курс, і щоб керувати доступом для перегляду вузла за роллю, потрібно використовувати якийсь модуль управління доступом до вузла. На Drupal.org є сторінка з переліком усіх модулів доступу до вузлів , з оглядом капсул кожного. Я пропоную вам переглянути цю сторінку, щоб побачити, чи зможете ви знайти відповідний модуль для управління доступом.

Можливо, модуль Flexi Access є модулем, який найбільше відповідає вашим вимогам, оскільки його основна функція - дозволити контролювати доступ для окремих користувачів, а не за роллю чи терміном таксономії.

Це невеликий модуль, який дозволяє налаштувати ACL (списки контролю доступу) для окремих користувачів. Це в основному інтерфейс користувача для модуля ACL , тому вам також потрібно встановити його.

У ньому відсутні деякі особливості більш вдосконалених модулів контролю доступу, таких як Content Access , але він активно підтримується і наразі немає жодних відкритих помилок у черзі випусків.

Розкриття: Я підтримую Flexi Access.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.