- Шаблоны авторизации пользователя
- Шаблон регистрации пользователя
- Шаблон вывода результата регистрации пользователя
- Шаблоны вывода результата активации аккаунта пользователя
- Шаблон формы запроса на восстановления пароля пользователя
- Шаблон вывода результата запроса на восстановления пароля пользователя
- Шаблон вывода результата активации учетной записи пользователя
Обратите внимание, что для корректной обработки формы поля для ввода логина и пароля должны иметь имена login и password.
<xsl:template match="result[@module = 'users' and @method = 'login']">
// форма авторизации
<xsl:apply-templates select=”document(‘udata://users/auth/’)/udata” />
</xsl:template>
<xsl:template match="result[@module = 'users' and @method = 'auth']">
// форма авторизации
<xsl:apply-templates select=”document(‘udata://users/auth/’)/udata” />
</xsl:template>
Форма авторизации:
<xsl:template match="udata[@module = 'users' and @method = 'auth']">
<form method="post" action="/users/login_do/">
<div>
<xsl:text>Логин: </xsl:text>
<input type="text" name="login" id="login" />
</div>
<div>
<xsl:text>Пароль: </xsl:text>
<input type="password" name="password" id="password" />
</div>
<div>
<input type="submit" value=”Войти” />
</div>
</form>
</xsl:template>
Обратите внимание, что поля "логин", "пароль" и "адрес электронной почты" являются обязательными для типа Пользователь, поэтому они всегда должны присутствовать в форме регистрации. Имена полей как для ввода данных, так и для повторения пароля должны быть такими же, как в примере. Другие поля типа Пользователь для заполнения в данном случае выводятся путем применения шаблона <xsl:apply-templates select="document(concat(‘udata://data/getCreateForm/’, type_id))/udata" />
См. описание макроса %users registrate()% для XSLT-шаблонизатора.
<xsl:template match="result[@method = 'registrate']">
<xsl:apply-templates select="document('udata://users/registrate')/udata" />
</xsl:template>
Подключение формы регистрации:
<xsl:template match="udata[@method = 'registrate']">
<form id="registrate" enctype="multipart/form-data" method="post" action="/users/registrate_do/">
<div>
<xsl:text>Логин:</xsl:text>
<input type="text" name="login" />
</div>
<div>
<xsl:text>Пароль:</xsl:text>
<input type="password" name="password" />
</div>
<div>
<xsl:text>Повторите пароль:</xsl:text>
<input type="password" name="password_confirm" />
</div>
<div>
<xsl:text>Е-mail:</xsl:text>
<input type="text" name="email" />
</div>
// запрос подключения полей для ввода дополнительных данных пользователя
<xsl:apply-templates select="document(concat(‘udata://data/getCreateForm/’, type_id))/udata" />
// запрос подключения captcha
<xsl:apply-templates select="document('udata://system/captcha')/udata" />
<div>
<input type="submit" value="Зарегистрироваться" />
</div>
</form>
</xsl:template>
<xsl:template match="result[@module = ‘users’][@method = 'registrate_done']">
<h4>
<xsl:text>Заголовок </xsl:text>
</h4>
<p>
<xsl:text> Сообщение о пройденной регистрации </xsl:text>
</p>
</xsl:template>
Переменная $param0 определяется в основном шаблоне <xsl:param name="param0" />
. В данном случае она будет содержать код активации.
<xsl:template match="result[@module = 'users'][@method = 'activate']">
<h1><xsl:value-of select="@header" /></h1>
// подключение обработчика активации пользователя
<xsl:apply-templates select="document(concat('udata://users/activate/',$param0,'/'))/udata" />
</xsl:template>
<xsl:template match="udata[@module = 'users'][@method = 'activate']">
// если активация успешна, то происходит перенаправление на (предустановленную?) страницу
<xsl:apply-templates select="document('udata://content/redirect/(/users/auth/)/')/udata" />
</xsl:template>
<xsl:template match="udata[@module = 'users'][@method = 'activate'][error]">
// выведение ошибок, если они произошли
<xsl:value-of select="error" />
</xsl:template>
Обратите внимание, что при заполнении данной формы выполняется скрипт, чтобы обработчик формы получил либо адрес электронной почты, либо логин пользователя. Поля для ввода такой формы должны иметь имена как в примере, чтобы корректно выполнялись системные методы восстановления пароля. После проверки возможности восстановления пароля пользователю выводятся сообщения об ошибках или сообщение о том, что ссылка на получения пароля была выслана на электронный адрес, указанный при регистрации.
<xsl:template match="result[@method = 'forget']">
<form id="forget" method="post" action="/users/forget_do/">
<script>
<![CDATA[
jQuery(document).ready(function(){
jQuery('#forget input:radio').click(function() {
jQuery('#forget input:text').attr('name', jQuery(this).attr('id'));
});
});
]]>
</script>
<div>
<label>
<span>
<input type="radio" id="forget_login" name="choose_forget" checked="checked" />
<xsl:text>Логин</xsl:text>
</span>
</label>
<label>
<span>
<input type="radio" id="forget_email" name="choose_forget" />
<xsl:text>Е-мэйл</xsl:text>
</span>
</label>
</div>
<div>
<input type="text" name="forget_login" />
</div>
<div>
<input type="submit" value="Отправить" />
</div>
</form>
</xsl:template>
После того как пользователь пройдет по ссылке, которая пришла в письме, выполняется активация аккаунта.
<xsl:template match="result[@method = 'forget_do']">
<p>
<xsl:text>Сообщение о том, что на почту выслана ссылка для получения нового пароля</xsl:text>
</p>
</xsl:template>
<xsl:template match="result[@module = 'users'][@method = 'restore']">
<h1><xsl:value-of select="@header" /></h1>
<xsl:apply-templates select="document(concat('udata://users/restore/',$param0,'/'))/udata" />
</xsl:template>
<xsl:template match="udata[@module = 'users'][@method = 'restore'][@status = 'success']">
<div>Пароль успешно изменен, на e-mail адрес, указанный при регистрации выслано уведомление.</div>
<div>
<p>Логин: <xsl:value-of select="login" /></p>
<p>Пароль: <xsl:value-of select="password" /></p>
</div>
</xsl:template>
<xsl:template match="udata[@module = 'users'][@method = 'restore'][@status = 'fail']">
<div>Невозможно восстановить пароль: неверный код активации.</div>
</xsl:template>