Сделать определенные страницы доступными только зарегистрированным пользователям

9

Мне нужна помощь, и вот проблема:

Я создаю сайт, используя Drupal 7.

Мне нужно, чтобы некоторые страницы были видны только зарегистрированным пользователям (каждая из которых имеет свое имя пользователя / пароль), другие пользователи должны быть просто перенаправлены или показаны сообщения об ошибках. Эта функциональность может быть включена в сам Drupal 7 или есть модуль, который делает это (что-то более простое, чем Organic Groups)?

dchello4
источник

Ответы:

7

Вам необходимо использовать модуль Content Access для детализированных разрешений на просмотр узлов.

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

Анил Сагар
источник
Этот модуль не обновлялся с 2013 года и описан как «еще не считающийся стабильным». Хотите порекомендовать тот, который в настоящее время поддерживается?
Blazemonger
1

Если вы хотите сделать это программно в модуле или узле (с входным фильтром PHP), вы можете использовать user_is_logged_in () для чего-то вроде этого:

<?php
if (!user_is_logged_in()) drupal_not_found();
?>
Sean3z
источник
0

Хотя модуль Content Access хорошо решает эту проблему, это дополнительный модуль, и он еще не стабилен на D7.

Альтернатива, использующая только обычно используемые модули:

  1. Создайте узлы, но установите их как неопубликованные

  2. Создайте представление узла, например, «контент с ограниченной ролью». Показать полное содержимое узла для репликации стандартного узла /% отображения.

  3. Ограничьте просмотр желаемыми ролями (например, «Роль | Прошедший проверку»)

  4. Установите путь к виду что-то вроде:

    restricted-content/%
  5. Установить контекстный фильтр по Nid.

  6. Удалите фильтр «содержимое опубликовано» по умолчанию.

Теперь у вас будет представление, которое работает так же, как узел /%, за исключением того, что оно также обрабатывает неопубликованный контент и ограничивает роль.

Тим Раасвелд
источник
1
Представление будет отображать список узлов, даже если они не опубликованы, но пользователи без прав доступа по-прежнему не могут получить доступ к узлам.
kiamlaluno
-1

Существует довольно простое программное решение, вы можете прочитать роль пользователя (а также, если она анонимна или зарегистрирована) следующим образом:

$roles=$GLOBALS['user']->roles;

вы получите массив с ролями текущего пользователя в $ role.

Вы можете перенаправить этого пользователя в зависимости от роли с помощью некоторой логики, используя

drupal_goto ('url-of-the/page');
NenadP
источник