Возможно ли контролировать, разрешать или запрещать конкретному пользователю использование 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, для которых это улучшит и усилит функционал, будут благодарны.