Не могу настроить rules

Drupal Русскоязычное сообщество

Уважаемые коллеги,
подскажите кто может пожалуйста.

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

На сайте используется Drupal 8 Commerce 2. Дополнительно установлены модули Permissions by Term Rules.

Для покупки доступа созданы 2 продукта.

  • Продукт 1: после покупки продукта пользователю должна присваиваться роль Premium.
  • Продукт 2: после покупки продукта пользователю должен предоставляться доступ к термину (см. на изображении PERMISSIONS — Allowed users ).

Подскажите пожалуйста, как настроить правила описанные для продуктов 1 и 2.

Или может у кого то есть опыт как реализовать требуемую функциональность другим путем.

Вложение Размер
permissions_by_term.png 29.5 КБ
  • Drupal8
  • permissions by term
  • rules
  • commerce
  • Есть вопрос
  • Решение проблем
  • Блог
  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Комментарии

«а некоторые куски нод только тем у кого есть доступ» — поподробнее пожалуйста
Т.е. не только цена купить а еще что-то? Или цена другая для премиум пользователя?

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Речь идет об обучающих курсах. Есть два типа контента. Один это описание курса, а второй это уроки прикрепленные к описанию курса. Каждый урок состоит из описания, embed video и pdf файла.

Описание курса и описание всех уроков курса доступны всем, а вот видео и файл доступны только тем купит доступ к этому курсу (купит доступ к термину) или купит премиум доступ и получит доступ ко всем курсам.

Я не могу понять как с помощью правил, добавить действие, чтобы после покупки товара «X», для термина «X» в поле «Allowed users» добавить покупателя (в примере там уже добавлен пользователь Tinnka) и нужно добавлять всех кто купит доступ к термину.

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Rules’ы предоставляют возможность установки роли юзеру.

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

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Это решение для покупки продукта 1, где пользователю после покупки достаточно присвоить роль Premium и он получит доступ к термину, а вот как после покупки товара «X», для термина «X» в поле «Allowed users» добавить покупателя?

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

А правила не предоставляют доступ к этому полю?

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Может и предоставляют, да я никак не могу их найти.. Поэтому и спрашиваю тут..

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Печалька, Comerce 2 не работает с правилами..
https://www.chapterthree.com/blog/how-to-register-event-subscriber-drupal8
Готова заплатить за помощь в настройке требуемого функционала.

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Коммерц не не работает с правилами, а просто в 8ке все сущности «равны», а правила работают с сущностями, и не требуется доп. интеграция..

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Но я не могу найти как настроить действие чтобы для термина добавить Allowed users. Вы можете помочь, пожалуйста?

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

А Вы думали там будет действие из разряда «Добавить Allowed users термину»?

Нет, конечно. Нужно по логике рулзов — загружать сущности, проверять наличие полей у сущности (тем самым давая доступ к этим полям), и только потом уже работать с данными.

И это при условии, что нужное поле будет должным образом правилами поддерживаться.

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

Источник

Настройка udev rules в Linux

Начнём с небольшого введения для новичков. Философия Unix гласит, что всё есть файл. Таким образом, файлы в Unix — это не только информация, хранимая на жёстком диске, но и устройства. Да, в Linux жёсткий диск, мышь, клавиатура, флешка, сетевой адаптер и другие устройства имеют свои файлы, с помощью которых с ними и взаимодействуют различные системные программы.

Все файлы устройств хранятся в каталоге /dev. Этот каталог генерируется во время загрузки специальным сервисом — udev. Происходит это на основе подключённых к компьютеру устройств и определённых правил. По умолчанию в udev уже заложены все необходимые для нормальной работы устройств правила. Но некоторые пользователи хотят самим настраивать устройства и выбирать им имена и права доступа. Кроме того, понимание процесса генерации файлов устройств даёт возможность глубже понять работу операционной системы.

Правила udev помогут вам, если вы хотите:

  • переименовать устройство, например жёсткий диск или сетевую карту;
  • создать дополнительное имя для устройства;
  • поменять права доступа к устройству;
  • установить владельца и группу;
  • выполнить скрипт при подключении или отключении устройства.

Общая информация про udev

Правила udev хранятся в папке /etc/udev/rules.d. Файл правил обязательно должен иметь расширение .rules. Обычно в этой папке уже есть несколько файлов udev rules, но их трогать не рекомендуется, для своих правил лучше создать отдельный файл, например:

Правило udev состоит из нескольких пар ключ — значение, разделённых запятой. Одни ключи используются для проверки соответствия устройства определённому правилу. В таких ключах используется знак == для разделения пары, например: SUBSYSTEM == «block». Это значит, что правило будет применено, только если значение ключа SUBSYSTEM для этого устройства равно block. Другие ключи используются для указания действия, если все условия соответствия выполняются. Для разделения пар в таких ключах используется знак равно «=», Например, NAME=»mydisk». Ну и полностью правило:

SUBSYSTEM==»block», ATTR(size)==»1343153213″, NAME=»mydisk»

Это правило выполниться только для устройства подсистемы block и с размером 1343153213 байт. Откуда брать эти значения, мы рассмотрим ниже, а пока разберёмся, что же значат те или иные ключи. Сначала ключи соответствия:

  • SUBSYSTEM — подсистема устройства;
  • KERNEL — имя, выдаваемое устройству ядром;
  • DRIVER — драйвер, обслуживающий устройство;
  • ATTR — sysfs-атрибут устройства;
  • SUBSYSTEMS — подсистема родительского устройства.

Устройство может иметь родительские устройства, например, жёсткий диск имеет родительское устройство SSCI, которое в свою очередь имеет родительское устройство — шину BUS. Иногда необходимо получить информацию от родительского устройства. Для этого используются ключи SUBSYSTEMS, KERNELS, DRIVERS, ATTRS соответственно.

Для действий используются ключи:

  • NAME — установить имя файла устройства;
  • SYMLINK — альтернативное имя устройства;
  • RUN — выполнить скрипт при подключении устройства;
  • GROUP — группа, у которой есть доступ к файлу;
  • OWNER — владелец файла устройства;
  • MODE — маска прав доступа.

Рассмотрим подробнее ключ ATTR. Он позволяет получить информацию об устройстве, доступную в sysfs. Например, ATTR=13413423124, если размер устройства равен 13413423124. Посмотреть все возможные sysfs-параметры для устройства можно непосредственно в файловой системе /sys. Например, для диска /dev/sda есть каталог /sys/block/sda/, в котором можно найти файлы size, stat, ro, range и т д. Также посмотреть все возможные udev- параметры для устройства можно с помощью утилиты udevadm. Например, для диска /dev/sda:

udevadm info -a -n sda1

Опция -n задаёт имя устройства, -p — путь в sysfs. Например, то же самое получим, если выполнить:

udevadm info -a -p /sys/block/sda/sda1

Как переименовать устройство в Linux

Теперь на основе полученной из udevadm информации можем составить udev rules для добавления альтернативного имени диска:

SUBSYSTEM==»block», ATTR==»976773168″, SYMLINK+=»root»

Или смены названия:

SUBSYSTEM==»block», ATTR==»976773168″, name=»root»

Получим устройство /dev/root, которое будет указывать на корневой раздел (sda1), то же самое можно сделать для привода оптических дисков:

udevadm info -a -p /sys/block/sr0

Затем добавляем правило на основе модели:

SUBSYSTEM==»block», ATTRS==»DVDRAM GH22NS70 «, SYMLINK+=»cdrom»

После перезагрузки появится файл устройства /dev/cdrom. Хотя, конечно, это можно сделать без udev, прописав в автозагрузку команду создания символической ссылки:

ln -s /dev/sr0 /dev/cdrom

Как переименовать сетевую карту

Настройка udev Linux на этом не заканчивается. Сетевая карта — тоже устройство и тоже управляется udev. Файлы сетевых устройств хранятся в /sys/class/net. Поэтому получаем информацию о ней с помощью udevadm:

udevadm info -a -p /sys/class/net/enp24s0

И создаём правило, например на основе mac-адреса:

SUBSYSTEM==»net», ATTR

==»00:d8:61:16:a5:a5″, NAME=»eth0″

Перезагружаем компьютер, и теперь устройство называется eth0.

Как запустить скрипт при подключении устройства

Например, мы хотим автоматически скопировать все данные с флешки при её подключении к компьютеру. Мы знаем, что флешка будет называться /dev/sdb, тогда можно создать правило udev такого вида:

При подключении флешки выполнится скрипт /usr/bin/my_script и сделает необходимые действия. Нужно заметить, что скрипт не должен выполняться слишком долго, так как udev остановится и будет ожидать завершения его работы.

Отладка правил

Если вы не уверены, правильно ли составлено правило, можно воспользоваться командой udevadm test для проверки. В единственном параметре нужно передать путь sysfs-устройства. Например, проверим наше правило для жёсткого диска:

udevadm test /sys/block/sda

Среди многочисленного вывода видим строчку:

creating link ‘/dev/root’ to ‘/dev/sda’

Значит всё работает, и настройка udev выполнена успешно. Если же в правиле допустить синтаксическую ошибку, например UBSYSTEM вместо SUBSYSTEM, udevadm test выдаст что-то подобное:

read rules file: /etc/udev/rules.d/10-local.rules
unknown key ‘UBSYSTEM’ in /etc/udev/rules.d/10-local.rules:2
invalid rule ‘/etc/udev/rules.d/10-local.rules:2’

Здесь мы видим саму причину ошибки, неверный ключ, а также файл и строку, в которой допущена ошибка.

Выводы

На этом всё. Теперь вы знаете, как создать правило udev и взять под полный контроль все ваши устройства. Если нужна более подробная информация по созданию и использованию правил udev, читайте официальную документацию по udev в man.

Источник

FireBase | Realtime DataBase Rules| как это настроить?

в правилах FB следующее:

пытаюсь добавить данные как в примере с гуглосайта ноль эмоций, ну и тп.п день убил.

в коде добавления у меня такое:

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

З.Ы. кста вот так работает:

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Массивы в Firebase Realtime Database
Всем привет! Допустим есть некий массив в БД Firebase, вот: Для андроид студио сделан код чтобы.

Запись пользователя в Realtime Database при регистрации
Это код из одного курса на Pluralsight Объясните, пожалуйста, почему здесь signOut() и.

Ошибка при работе с Firebase Database
Привет всем, столкнулся с проблемой, если вы понимаете в Firebase Realtime Database, а в частности.

Игровая валюта с AdMob Rewarded Video / Firebase database
Здравствуйте. На основании этой статьи: https://habrahabr.ru/post/335008/ делаю игровую валюту. У.

Получилось сразу добавлять несколько полей. остался один вопрос:

на картинке значение каждого поля под отдельным itemsID:

как в правилах настроить чтобы и title и number были вместе?

Решение

ExFau$t, попробовал так, но теперь не понимаю как к ним стучать.

что не так ?!

Добавлено через 20 часов 51 минуту
решил следующее, пусть эта структура остается как есть:

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

данные в List добавляю так:

долго ломал моск, но таки разобрался, короче поставленая задача решена так:

а стучать вот так:

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

как с этой бедой справиться, помоЖите плиз ?

Добавлено через 15 часов 37 минут
Почему RecyclerView может добавлять новую (измененную позицию), и так же отображать изначальную копию item одновременно.

ведь данные в базе в реальном времени обновляются и при добавлении нового айтема такого нет.

Android Studio изъятие данных из дочерних firebase database в RecyclerView через fragment
Здравствуйте, я только начинаю программировать на андроиде, подскажите пожалуйста где и что я.

Push firebase не могу настроить
Приветствую. Когда был обычный GCM у меня прога работала. Потом они внедрили фаербэйс и все.

Недостаточно памяти — как это настроить?
Убрал файл подкачки ибо нагружается ssd. Начало частенько вылетать сообщение, что недостаточно.

WordPress и популярные записи. Как это настроить?
Никак не могу понять откуда должны браться популярные записи для темы WordPress взятой вот отсюда.

Источник

Читайте также:  Как настроить smtp сервер для отправки сообщений с видеокамеры
Оцените статью