Скачивание файла только зарегистрированным пользователям — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «'''Задача:''' Сделать скачивание файла только для зарегистрированных пользователей, а для …»)
 
 
Строка 1: Строка 1:
 +
[[Категория: Верстка в XSLT]][[Категория: Вопросы и уроки разработки сайтов на UMI.CMS]]
 +
'''Актуально для версии 2.9.6'''<br/><br/>
 
'''Задача:'''
 
'''Задача:'''
 
   
 
   
Сделать скачивание файла только для зарегистрированных пользователей, а для незарегистрированных (Гостей) пользователей делать редирект на соответствующую страницу. По умолчанию, выставление прав доступа к этой странице только зарегистрированным пользователям, не решит нашу задачу, потому что Гость будет попадать на страницу и видеть:  
+
Сделать скачивание файлов доступным только для зарегистрированных пользователей, а для незарегистрированных (Гостей) пользователей делать пенаправление на соответствующую страницу. По умолчанию, выставление прав доступа к этой странице только зарегистрированным пользователям, не решит нашу задачу, потому что гость будет попадать на страницу и видеть:  
 
"Имя файла:
 
"Имя файла:
 
Размер файла: Kb
 
Размер файла: Kb
Если закачивание файла не начнется через 10 сек, кликните по этой ссылке" , т.е ощущение как будто страница сломана.  
+
Если закачивание файла не начнется через 10 сек, кликните по этой ссылке".  
  
 
'''Решение:'''
 
'''Решение:'''
  
Мы будем рассматривать реализацию этой задачи на примере демо-сайта на xslt-шаблонизаторе DemoDizzy.
+
Мы будем рассматривать реализацию этой задачи на примере демонстрационного дизайна "Современный интернет-магазин" ("demodizzy"), в котором используется XSLT-шаблонизатор.<br/>
В файл shared_file.xsl, в котором шаблоны обработчики страницы, находящийся по пути ~/xsltTpls/modules/filemanager/
+
В файл '''\templates\demodizzy\xslt\modules\filemanager\shared_file.xsl''' в шаблон:
 
+
<source lang="xml">result[@module = 'filemanager'][@method = 'shared_file']</source>
В шаблон:
 
<source lang="java">result[@module = 'filemanager'][@method = 'shared_file']</source>
 
  
 
вместо вызова:
 
вместо вызова:
<source lang="java"><xsl:apply-templates select="document(concat('udata://filemanager/shared_file//', $document-page-id))/udata" /></source>
+
<source lang="xml"><xsl:apply-templates select="document(concat('udata://filemanager/shared_file//', $document-page-id))/udata" /></source>
  
Ставим на Гостя вызов:
+
добавим условие на текущего пользователя:
<source lang="java"><xsl:choose>
+
<source lang="xml"><xsl:choose>
 
           <xsl:when test="$user-type = 'guest'">
 
           <xsl:when test="$user-type = 'guest'">
 
             Файл доступен только для зарегистрированных пользователей.
 
             Файл доступен только для зарегистрированных пользователей.
Строка 29: Строка 29:
  
 
т.е. если Гость, ты вызываем форму авторизации:
 
т.е. если Гость, ты вызываем форму авторизации:
<source lang="java"><xsl:apply-templates select="document('udata://users/auth/')/udata" /></source>
+
<source lang="xml"><xsl:apply-templates select="document('udata://users/auth/')/udata" /></source>
  
шаблоны в файле ~/xsltTpls/modules/users/authorization.xsl
 
  
если не Гость, то ставим стандартный вызов, который отобразит данные о файле.
+
если не Гость, то выполняем стандартный вызов, который отобразит данные о файле.<br />
В основном шаблоне:
+
В основном шаблоне '''\templates\demodizzy\xslt\default.xsl''' должны быть определены следующие переменные:
<source lang="java">
+
<source lang="xml">
xsltTpls/default.xsl, должна быть определена переменная:
+
<xsl:variable name="user-type" select="/result/user/@type" />
<xsl:variable name="user-type" select="/result/user/@type" /></source>
+
<xsl:variable name="document-page-id" select="/result/@pageId" />
 +
</source>

Текущая версия на 05:59, 1 июня 2014

Актуально для версии 2.9.6

Задача:

Сделать скачивание файлов доступным только для зарегистрированных пользователей, а для незарегистрированных (Гостей) пользователей делать пенаправление на соответствующую страницу. По умолчанию, выставление прав доступа к этой странице только зарегистрированным пользователям, не решит нашу задачу, потому что гость будет попадать на страницу и видеть: "Имя файла: Размер файла: Kb Если закачивание файла не начнется через 10 сек, кликните по этой ссылке".

Решение:

Мы будем рассматривать реализацию этой задачи на примере демонстрационного дизайна "Современный интернет-магазин" ("demodizzy"), в котором используется XSLT-шаблонизатор.
В файл \templates\demodizzy\xslt\modules\filemanager\shared_file.xsl в шаблон:

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" />


если не Гость, то выполняем стандартный вызов, который отобразит данные о файле.
В основном шаблоне \templates\demodizzy\xslt\default.xsl должны быть определены следующие переменные:

<xsl:variable name="user-type" select="/result/user/@type" />
<xsl:variable name="document-page-id" select="/result/@pageId" />