Управление пользователями: возможность использования / доступа к <iframe> — как это сделать?

Привет, ребята.

Возможно ли контролировать, разрешать или запрещать конкретному пользователю использование iframe (в первую очередь для встроенных видео).

Добавляю это, так как перечитал свой текст. Минимум, что можно сделать, — если технически это слишком сложно, то реализовать разделение между сотрудниками и остальными, либо, возможно, по уровню доверия

И поскольку я полный новичок, тот же или похожий вопрос касается и других аспектов «возможностей» пользователей в Discourse. Есть ли руководство (руководства), описывающее эти функции?

Я создал компонент темы, который находит однострочные ссылки Strava и Garmin и заменяет их на iframe-вставки. Если у вас есть фиксированный набор видеосайтов, которые вы хотите поддерживать, подобное решение может сработать:

@pfaffman Вы уверены, что ваш ответ имеет хоть какое-то отношение к моему вопросу?

Я просто спрашиваю, возможно ли при «обычных» средствах управления в Discourse запретить/разрешить использование (или обработку, или рендеринг, или как правильно сказать технически) iframe (или onebox, или как называется этот термин/техника).

Если вы имели в виду в своём ответе, что существует код, который можно переиспользовать таким образом, — то это не для меня и не для таких, как я, не веб-разработчиков.

Но если @devel читает это — вы только начали использовать Discourse, но имеете многолетний опыт администрирования самых разных систем, я задаюсь вопросом:

  • как вы принимали решение об этом «философском» аспекте «свободы» пользователя добавлять любой контент (например, ограничиваясь только видео в данном случае)?

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

Поэтому я хотел бы внести предложение в качестве будущей доработки — если в Discourse это ещё не предусмотрено, если на сегодняшний день в Discourse нет возможности такого контроля — внедрить подобный механизм/метод «усиления защиты» в ближайшем будущем. Я уверен, что многие будут благодарны за отличное программное решение — которое Discourse, очевидно, уже является, — сделанное ещё лучше.

По умолчанию Discourse не разрешает пользователям вставлять большинство элементов iframe в сообщения. Это контролируется настройкой сайта «allowed iframes». Эта настройка принимает список доменов в атрибуте src для iframe, которые разрешено добавлять в сообщения.

Однако нет способа контролировать, какие iframe можно добавлять, на основе прав доступа пользователя — настройки «staff allowed iframes» не существует.

В большинстве случаев Discourse обрабатывает встраивание внешнего контента с помощью «oneboxes». Это позволяет пользователям вставлять ссылки в сообщения. В некоторых случаях Discourse преобразует эти ссылки в iframe. Например, если ссылка на видео с YouTube добавлена на отдельную строку в редакторе сообщений, она преобразуется в элемент видео, который отображается в iframe. Существует ограниченное количество доменов, которые Discourse обрабатывает таким образом, например, Vimeo и YouTube.

Вы можете ограничить, для каких доменов создаются iframe-однокоробки, с помощью настройки сайта «allowed onebox iframes». Значение по умолчанию этой настройки — *. Если вы хотите ограничить это, нажмите на выпадающий список, отображаемый под этой настройкой. Он позволяет выбрать конкретные домены из списка доменов, которые Discourse настроен преобразовывать в iframe-однокоробки.

Чтобы дополнить ответ от @simon и затронуть этот конкретный момент, вы можете установить max oneboxes per post в 0, чтобы полностью отключить функцию oneboxing. Это также отключит отображение контента, такого как видео с YouTube и Vimeo.

Если бы этот параметр/значение можно было дополнить и переопределить «значением для конкретного пользователя» — опять же, возможно, в будущих версиях/релизах — многие, уверен, были бы очень благодарны. Спасибо.

Похоже, это не работает у меня. Я установил значение 0, но посты пользователей с iframes всё ещё отображаются как ожидалось: с фреймом/плеером, и всё воспроизводится нормально.
Может быть, есть другой параметр или опция, которая переопределяет это?
Также, как понять * allowed iframes* в данном контексте?

Настройка «max oneboxes per post» (максимальное количество onebox-элементов на пост) контролирует количество onebox-элементов, которые можно добавить в пост. Терминология здесь может быть запутанной, но «onebox» — это способ, которым Discourse обрабатывает ссылки из различных источников. Например, если ссылка из адресной строки браузера на видео с YouTube или Vimeo добавлена в пост отдельной строкой, Discourse сгенерирует для этой ссылки видеоплеер в формате onebox.

Если вы установите значение max oneboxes per post в 0, пользователи не смогут создавать такие onebox-элементы.

Я думаю, что вы столкнулись с тем, что эта настройка не предотвращает добавление пользователями элементов iframe в посты. Чтобы запретить пользователям добавлять iframes в посты, удалите любые источники iframe, перечисленные в настройке сайта вашего сайта allowed iframes. Вот значения по умолчанию для этой настройки:

@simon - окей, спасибо. Похоже, так оно и есть. Теперь я лучше понимаю, что там происходит: если для URI существует iframe, то настройка max oneboxes per post = 0 не имеет никакого отношения к iframe-ам.

Да, терминологию и описание там можно было бы улучшить, чтобы помочь новичкам.

Повторю ещё раз: нельзя разрешить onebox и iframe только администраторам и модераторам, верно?

Думаю, Саймон уже ответил на это.

@Lilly, не могли бы вы/devel оформить это как запрос на новую функцию для будущих релизов — спасибо. Уверен, многие пользователи Discourse, для которых это улучшит и усилит функционал, будут благодарны.

Сколько у вас пользователей, которые действительно запросили это? Вы можете сами оформить эту #запрос на функцию, если хотите.

Дело не в пользователях, а во мне как в администраторе — я изложил свои доводы наилучшим образом в нескольких постах назад.