Вы здесь

Как показывать поле материала только для определённых IP адресов?

0

Добрый день, прощу помощи по этой теме уже 2-й раз. Раньше вопрос был чуть по другому: Ограничение доступа к определенным нодам по IP адресу. Теперь нужно ограничить доступ к определенному полю материала по разрешенным IP адресам. IP адреса со временем будет меняться (дополнятся).
На сайте есть тип материала publication и своя поле field_material. Тип поля File (pdf, doc). Сайт будет посещать только анонимные пользователи. По этому хотелось показать поле по разрешенным IP адресам.
У Tlito есть хорошая статья, но там указывается определенные пользователей, а мне нужно указать IP адреса.

Версия Drupal: 
7.x
Категория: 
Access control
Вопрос задан 06.03.2017 - 08:18

Ответы

0

Привет.

Ну то что у него указано для определенных пользователей ничего не значит. У вас делается точно также лишь меняется условие.

Делаете страницу в админке и свою форму с настройками, где будут указаны IP которым данное поле будет показываться. И где у него стоит if ($build['#node']->field_access['und'][$i]['target_id'] == $user->uid) вам нужно будет заменить на if (in_array(ip_address(), variable_get('MY_VARIABLE_WITH_IP's', array()))).

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

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

Ответ дан 06.03.2017 - 09:36
Аватар пользователя Niklan
Niklan
445

Спасибо Вам за ответ Niklan. Но у меня еще остались вопросы). Не могли бы чуть подробнее объяснит.
Смогу сделать админку где можно указать IP адреса, а вот как сделать проверку пока что не получается.

Комментарий оставлен 06.03.2017 - 13:29

Так также как в статье Tlito на которую вы скинули ссылку. Вам лишь нужно заменить условие где отрезает по UID на in_array по IP, я вам прямо пример, почти готовый код написал на что заменить. Вам лишь своё название переменной потребуется из настроек вставить.

Комментарий оставлен 06.03.2017 - 16:43