Логотип

Документация по макросам и шаблонам UMI.CMS

Шаблон авторизации пользователя

Обратите внимание, что для корректной обработки формы поля для ввода логина и пароля должны иметь имена 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>