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
udevadm info -a -n sda1
Опция -n задаёт имя устройства, -p — путь в sysfs. Например, то же самое получим, если выполнить:
udevadm info -a -p /sys/block/sda/sda1
Как переименовать устройство в Linux
Теперь на основе полученной из udevadm информации можем составить udev rules для добавления альтернативного имени диска:
SUBSYSTEM==»block», ATTR
Или смены названия:
SUBSYSTEM==»block», ATTR
Получим устройство /dev/root, которое будет указывать на корневой раздел (sda1), то же самое можно сделать для привода оптических дисков:
udevadm info -a -p /sys/block/sr0
Затем добавляем правило на основе модели:
SUBSYSTEM==»block», ATTRS
После перезагрузки появится файл устройства /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 взятой вот отсюда.
Источник