Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Вывести цену для группы "элитных" пользователей

Автор SeweryssРаздел Настройка системы и модулей

Ответов: 3
Просмотров: 3110
Последний ответ 12 Ноября 2013, 23:27:00
от Seweryss
UMI.Selector: выборка заказов только зарегистрированных пользователей

Автор atachРаздел Custom макросы

Ответов: 1
Просмотров: 1987
Последний ответ 25 Мая 2017, 16:10:05
от admin
Регистрация новых пользователей AJAX

Автор CubesРаздел JS и AJAX

Ответов: 3
Просмотров: 7688
Последний ответ 30 Октября 2014, 15:33:18
от Cubes
Настройка прав пользователей

Автор arbuzzzРаздел Настройка системы и модулей

Ответов: 3
Просмотров: 2267
Последний ответ 05 Марта 2017, 16:09:27
от aghigay
Работа с регистрацией пользователей

Автор rob1nРаздел Шаблоны XSLT

Ответов: 5
Просмотров: 1702
Последний ответ 06 Апреля 2017, 15:34:14
от rob1n

0 Пользователей и 1 Гость просматривают эту тему.

*

MIke

  • *
  • 12
  • +0/-0
    • Просмотр профиля
Приветствую всех.
Недавно передали на обслуживание сайт на UMI, а в ней я новичок.

Задача такая:
на сайте размещена ссылка на файл Excel (прайс-лист).
Необходимо разрешить его скачивать только зарегистрированным пользователям определенной группы.
Гостям скачивать запрещено.

На данный момент пробую на локальной машине.
Размещаю файл в файловом менеджере.
У пользователя "Гость" убираю галочки "Просмотр файлов для скачивания" и "Скачивание файлов".
На странице размещаю ссылку на файл (типа http://localhost/files/Price1.xls).
Захожу без регистрации, гостем.
При нажатии на ссылку качается без проблем.

Кто-нибудь может подсказать в каком месте у меня кривизна рук?
:)

*

Byte

  • *
  • 32
  • +0/-0
    • Просмотр профиля
если шаблонизатор xslt, то попробуй в месте вывода ссылки сделать так:
<xsl:if test="result/user/@status='auth'" >
  код вывода ссылки
</xsl:if>

не получится, пиши, попробую помочь

*

MIke

  • *
  • 12
  • +0/-0
    • Просмотр профиля
если шаблонизатор xslt, то попробуй в месте вывода ссылки сделать так:
<xsl:if test="result/user/@status='auth'" >
  код вывода ссылки
</xsl:if>
При таком подходе гостям ссылка не видна будет.
А сайт в принципе не использует авторизацию, за ненадобностью, только на одной странице и нужна.
Идеально было бы так: все видят ссылку (или кнопку), при нажатии идет проверка на группу, если гость, то появляется окно авторизации.

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
не пробовал с контролем при скачивании файла (скорее всего нужен будет кастомный макрос), но можно сделать таким образом.

Вы создаете страницу типа "Скачиваемый файл" в которой есть поле которое указывает какой файл будет вкачиваться при заходе на эту страницу. Вместо ссылки на файл, вы вставляете ссылку на эту страницу.

А права на скачивание назначаете через права на просмотр страницы (при редактировании страницы "Скачиваемый файл" в самом нигу... убираете галочку около иконки глазик у "Все" и добавляете новую группу полей у которых проставляете галочку у глазика)

*

MIke

  • *
  • 12
  • +0/-0
    • Просмотр профиля
Вы создаете страницу типа "Скачиваемый файл" в которой есть поле которое указывает какой файл будет вкачиваться при заходе на эту страницу. Вместо ссылки на файл, вы вставляете ссылку на эту страницу.

А права на скачивание назначаете через права на просмотр страницы (при редактировании страницы "Скачиваемый файл" в самом нигу... убираете галочку около иконки глазик у "Все" и добавляете новую группу полей у которых проставляете галочку у глазика)
Да, так-то отрабатывает. Но!
Гость при таком подходе видит пустую страницу. Т.е. ничего не видит.
:)
А надо бы сообщение выдать типа "авторизуйтесь для скачивания файла" или сразу окно с авторизацией.

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
вообще, должна выдаваться стрница с запросом авторизации, у вас ничего не выводиться в том месте где вызывается макрос %content% или вообще белая страница?

*

MIke

  • *
  • 12
  • +0/-0
    • Просмотр профиля
вообще, должна выдаваться стрница с запросом авторизации, у вас ничего не выводиться в том месте где вызывается макрос %content% или вообще белая страница?
На странице с результатом (самим файлом) в контенте стоит ссылка:
<p><a href="/files/Price1.xls">Скачай прайс!</a></p>

Вывод контента в шаблоне реализован стандартно:
<xsl:value-of select="document(concat('upage://',page/@id))/udata/page/properties/group[@name='common']/property[@name='content']/value" disable-output-escaping="yes"/>

Если гость открывает, то никаких запросов, просто белая страница.


*

MIke

  • *
  • 12
  • +0/-0
    • Просмотр профиля
Реализовал в шаблоне, по типу пользователей.
Незарегистрированным показывается форма авторизации.
После авторизации появляется ссылка на файл.
Но в таком варианте любой другой может, зная прямую ссылку, скачать не заходя на страницу и не регистрируясь.
Поэтому скачивание решено организовать кастомным макросом.

Функция вызывается так:
<xsl:value-of select="document('udata://custom/price_download/price/price2.xls')/udata" />

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

*

MIke

  • *
  • 12
  • +0/-0
    • Просмотр профиля
Как обычно сам с собой говорю.
:)

Затупил совсем. Ясно что вызов по ссылке такой:
<a href="/udata/custom/price_download/price/price2.xls">Скачать прайс-лист</a>

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
если вам нужно защитить файлы, и вы пошли по пути написание кастома, то скорее всего имеет смысл положить файлы в отдельную папку. Запретить к ней доступ (например через htaccess) и высылать   ссылка на временную копию файла сгенерированного на ограниченное время или ограниченное количество скачивания.

*

MIke

  • *
  • 12
  • +0/-0
    • Просмотр профиля
Re:Права пользователей на скачиваемый файл.
« Ответ #10 : 03 Июня 2013, 11:45:48 »
если вам нужно защитить файлы, и вы пошли по пути написание кастома, то скорее всего имеет смысл положить файлы в отдельную папку. Запретить к ней доступ (например через htaccess) и высылать   ссылка на временную копию файла сгенерированного на ограниченное время или ограниченное количество скачивания.
Ну с помощью PHP это понятно, можно наделать всяких изощрений.
Но вопрос, почему все же не отрабатывается простая установка прав на файл в UMI? Ведь есть пункт меню "Скачивание файлов. Или он для другого?

*

Vladimir

  • ****
  • 279
  • +48/-0
    • Просмотр профиля
Re:Права пользователей на скачиваемый файл.
« Ответ #11 : 03 Июня 2013, 14:47:44 »
Если вы обращаетесь к файлу напрямую, то обработка запроса идет в обход в php, вы работаете с файловой системой сервера. Естественно, файловая система о правах ЮМИ ничего не знает и знать не может.
Вам нужно запретить доступ по http к директории с файлами, например, средствами htaccess,  чтобы отдавал его не сервер, а php (хотя если файлы большие, а клиентов много, администраторы вам спасибо не скажут), либо делать наподобии http://blog.kovyrin.net/2006/11/01/nginx-x-accel-redirect-php-rails/lang/ru/