Скачивание файла только зарегистрированным пользователям
Задача:
Сделать скачивание файла только для зарегистрированных пользователей, а для незарегистрированных (Гостей) пользователей делать редирект на соответствующую страницу. По умолчанию, выставление прав доступа к этой странице только зарегистрированным пользователям, не решит нашу задачу, потому что Гость будет попадать на страницу и видеть: "Имя файла: Размер файла: Kb Если закачивание файла не начнется через 10 сек, кликните по этой ссылке" , т.е ощущение как будто страница сломана.
Решение:
Мы будем рассматривать реализацию этой задачи на примере демо-сайта на xslt-шаблонизаторе DemoDizzy. В файл shared_file.xsl, в котором шаблоны обработчики страницы, находящийся по пути ~/xsltTpls/modules/filemanager/
В шаблон:
result[@module = 'filemanager'][@method = 'shared_file']
вместо вызова:
<xsl:apply-templates select="document(concat('udata://filemanager/shared_file//', $document-page-id))/udata" />
Ставим на Гостя вызов:
<xsl:choose>
<xsl:when test="$user-type = 'guest'">
Файл доступен только для зарегистрированных пользователей.
<xsl:apply-templates select="document('udata://users/auth/')/udata" />
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="document(concat('udata://filemanager/shared_file//', $document-page-id))/udata" />
</xsl:otherwise>
</xsl:choose>
т.е. если Гость, ты вызываем форму авторизации:
<xsl:apply-templates select="document('udata://users/auth/')/udata" />
шаблоны в файле ~/xsltTpls/modules/users/authorization.xsl
если не Гость, то ставим стандартный вызов, который отобразит данные о файле. В основном шаблоне:
xsltTpls/default.xsl, должна быть определена переменная:
<xsl:variable name="user-type" select="/result/user/@type" />