Битрикс. Регистрация и авторизация. Часть 1 из 3

15.07.2018

Теги: CMSWeb-разработкаАвторизацияБитриксКомпонентРегистрацияФормаШаблонКомпонента

Самый простой вариант создания страницы регистрации, авторизации, восстановления пароля — создать раздел auth и в самом начале файла /auth/index.php определить константу NEED_AUTH.

<?php
// обратите внимание на эту константу
define("NEED_AUTH", true);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Авторизация и регистрация");
?>

<p>Вы зарегистрированы и успешно авторизовались.</p>

<?php
// ссылка для выхода из личного кабинета
$logout = $APPLICATION->GetCurPageParam(
    "logout=yes",
    array(
        "login",
        "logout",
        "register",
        "forgot_password",
        "change_password"
    )
);
?>
<p><a href="<?= $logout; ?>">Выйти</a></p>

<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
?>

После этого регистрация и авторизация уже работает:

Теперь нам надо кастомизоровать шаблоны системных компонентов:

  • system.auth.registration
  • system.auth.authorize
  • system.auth.forgotpasswd
  • system.auth.changepasswd

Для этого копируем:

  • bitrix/components/bitrix/system.auth.registration/templates/.default в local/templates/.default/components/bitrix/system.auth.registration/.default
  • bitrix/components/bitrix/system.auth.authorize/templates/.default в local/templates/.default/components/bitrix/system.auth.authorize/.default
  • bitrix/components/bitrix/system.auth.forgotpasswd/templates/.default в local/templates/.default/components/bitrix/system.auth.forgotpasswd/.default
  • bitrix/components/bitrix/system.auth.changepasswd/templates/.default в local/templates/.default/components/bitrix/system.auth.changepasswd/.default

Шаблон компонента system.auth.registration

<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.registration/.default/template.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
?>

<div class="system-auth-registration">

<h2><?= GetMessage('SYS_AUTH_REGISTRATION_TITLE'); /* заголовок формы */ ?></h2>

<?php
// сообщение о том, как закончилась операция регистрации
ShowMessage($arParams["~AUTH_RESULT"]);
?>

<?php if ($arResult["USE_EMAIL_CONFIRMATION"] === "Y"
          && is_array($arParams["AUTH_RESULT"])
          && $arParams["AUTH_RESULT"]["TYPE"] === "OK"): ?>
    <p><?= GetMessage('SYS_AUTH_REGISTRATION_EMAIL_SENT'); /* отправлено письмо для подтверждения */ ?></p>
    </div>
    <?php return; ?>
<?php endif; ?>

<?php if ($arResult["USE_EMAIL_CONFIRMATION"] === "Y"): ?>
    <p><?= GetMessage('SYS_AUTH_REGISTRATION_EMAIL_HELP'); /* будет отправлено письмо для подтверждения */ ?></p>
<?php endif; ?>

<form method="post" action="<?= $arResult["AUTH_URL"]; ?>" name="bform" enctype="multipart/form-data">

    <?php if (strlen($arResult["BACKURL"]) > 0): ?>
        <input type="hidden" name="backurl" value="<?= $arResult["BACKURL"]; ?>" />
    <?php endif; ?>

    <input type="hidden" name="AUTH_FORM" value="Y" />
    <input type="hidden" name="TYPE" value="REGISTRATION" />

    <div>
        <span>
            <?= GetMessage('SYS_AUTH_REGISTRATION_FNAME'); /* имя пользователя */ ?>
        </span>
        <span>
            <input type="text" name="USER_NAME" maxlength="50"
                   value="<?= $arResult["USER_NAME"]; ?>" />
        </span>
    </div>

    <div>
        <span>
            <?= GetMessage('SYS_AUTH_REGISTRATION_LNAME'); /* фамилия пользователя */ ?>
        </span>
        <span>
            <input type="text" name="USER_LAST_NAME" maxlength="50"
                   value="<?= $arResult["USER_LAST_NAME"]; ?>" />
        </span>
    </div>

    <div>
        <span>
            <?= GetMessage('SYS_AUTH_REGISTRATION_LOGIN'); /* логин пользователя */ ?>
            <i>*</i> <!-- поле обязательно для заполнения -->
        </span>
        <span>
            <input type="text" name="USER_LOGIN" maxlength="50"
                   value="<?= $arResult["USER_LOGIN"]; ?>" />
        </span>
    </div>

    <div>
        <span>
            <?= GetMessage('SYS_AUTH_REGISTRATION_EMAIL'); /* e-mail пользователя */ ?>
            <?php if ($arResult["EMAIL_REQUIRED"]): ?>
                <i>*</i> <!-- поле обязательно для заполнения -->
            <?php endif; ?>
        </span>
        <span>
            <input type="text" name="USER_EMAIL" maxlength="255" value="<?= $arResult["USER_EMAIL"]; ?>" />
        </span>
    </div>

    <div>
        <span>
            <?= GetMessage('SYS_AUTH_REGISTRATION_PASSWORD'); /* пароль пользователя */ ?>
            <i>*</i> <!-- поле обязательно для заполнения -->
        </span>
        <span>
            <input type="password" name="USER_PASSWORD" maxlength="50"
                   value="<?= $arResult["USER_PASSWORD"]; ?>" autocomplete="off" />
        </span>
    </div>

    <?php if ($arResult["SECURE_AUTH"]): /* безопасная авторизация (зашифрованная передача пароля) */ ?>
        <!-- код удален -->
    <?php endif; ?>

    <div>
        <span>
            <?= GetMessage('SYS_AUTH_REGISTRATION_CONFIRM'); /* подтверждение пароля */ ?>
            <i>*</i> <!-- поле обязательно для заполнения -->
        </span>
        <span>
            <input type="password" name="USER_CONFIRM_PASSWORD" maxlength="50"
                   value="<?= $arResult["USER_CONFIRM_PASSWORD"]; ?>" autocomplete="off" />
        </span>
    </div>

    <?php if ($arResult["USER_PROPERTIES"]["SHOW"] == "Y"): /* User properties */ ?>
        <?php
            echo
            strlen(trim($arParams["USER_PROPERTY_NAME"])) > 0
            ?
            $arParams["USER_PROPERTY_NAME"]
            :
            GetMessage("USER_TYPE_EDIT_TAB");
        ?>
        <?php foreach ($arResult["USER_PROPERTIES"]["DATA"] as $FIELD_NAME => $arUserField): ?>
            <?php if ($arUserField["MANDATORY"]=="Y"):?>
                <i>*</i> <!-- поле обязательно для заполнения -->
            <?php endif; ?>
            <?= $arUserField["EDIT_FORM_LABEL"]?>:
            <?php
            $APPLICATION->IncludeComponent(
                "bitrix:system.field.edit",
                $arUserField["USER_TYPE"]["USER_TYPE_ID"],
                array(
                    "bVarsFromForm" => $arResult["bVarsFromForm"],
                    "arUserField" => $arUserField,
                    "form_name" => "bform"
                ),
                null,
                array("HIDE_ICONS"=>"Y")
            );
            ?>
        <?php endforeach; ?>
    <?php endif; ?>

    <?php if ($arResult["USE_CAPTCHA"] == "Y"): /* использовать CAPTCHA? */ ?>
        <div class="captcha">
            <h3><?= GetMessage('SYS_AUTH_REGISTRATION_CAPTCHA_TITLE'); /* Защита от роботов */ ?></h3>
            <input type="hidden" name="captcha_sid" value="<?= $arResult["CAPTCHA_CODE"]; ?>" />
            <img src="/bitrix/tools/captcha.php?captcha_sid=<?= $arResult["CAPTCHA_CODE"]; ?>"
                 width="180" height="40" alt="" />
            <span>
                <?= GetMessage('SYS_AUTH_REGISTRATION_CAPTCHA_TEXT'); /* введите код с картинки */ ?>
                <i>*</i> <!-- поле обязательно для заполнения -->
            </span>
            <span>
                <input type="text" name="captcha_word" maxlength="50" value="" />
            </span>
        </div>
    <?php endif;  ?>

    <?php
    $APPLICATION->IncludeComponent( /* запрос согласия пользователя */
        "bitrix:main.userconsent.request",
        "",
        array(
            "ID" => COption::getOptionString("main", "new_user_agreement", ""),
            "IS_CHECKED" => "Y",
            "AUTO_SAVE" => "N",
            "IS_LOADED" => "Y",
            "ORIGINATOR_ID" => $arResult["AGREEMENT_ORIGINATOR_ID"],
            "ORIGIN_ID" => $arResult["AGREEMENT_ORIGIN_ID"],
            "INPUT_NAME" => $arResult["AGREEMENT_INPUT_NAME"],
            "REPLACE" => array(
                "button_caption" => GetMessage("AUTH_REGISTER"),
                "fields" => array(
                    rtrim(GetMessage("AUTH_NAME"), ":"),
                    rtrim(GetMessage("AUTH_LAST_NAME"), ":"),
                    rtrim(GetMessage("AUTH_LOGIN_MIN"), ":"),
                    rtrim(GetMessage("AUTH_PASSWORD_REQ"), ":"),
                    rtrim(GetMessage("AUTH_EMAIL"), ":"),
                )
            ),
        )
    );
    ?>
    <div class="submit">
        <input type="submit" name="Register"
               value="<?= GetMessage('SYS_AUTH_REGISTRATION_SUBMIT'); /* кнопка отправки формы */ ?>" />
    </div>

</form>

<p><?= GetMessage('SYS_AUTH_REGISTRATION_LOGIN_LEN'); /* предупреждение о min длине логина */ ?></p>

<p><?= $arResult["GROUP_POLICY"]["PASSWORD_REQUIREMENTS"]; /* предупреждение о min длине пароля */ ?></p>

<p>
    <i>*</i> <?= GetMessage('SYS_AUTH_REGISTRATION_REQUIRED'); /* Эти поля обязательны для заполнения */ ?>
</p>

<p>
    <a href="<?= $arResult["AUTH_AUTH_URL"]; ?>" rel="nofollow">
        <?= GetMessage('SYS_AUTH_REGISTRATION_AUTH'); /* ссылка на страницу авторизации */ ?>
    </a>
</p>

<script type="text/javascript">
document.bform.USER_NAME.focus();
</script>

</div>
<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.registration/.default/lang/ru/template.php
 */
$MESS['SYS_AUTH_REGISTRATION_TITLE']         = 'Регистрация';
$MESS['SYS_AUTH_REGISTRATION_EMAIL_HELP']    = 'На указанный в форме e-mail придет запрос на подтверждение регистрации.';
$MESS['SYS_AUTH_REGISTRATION_EMAIL_SENT']    = 'На указанный в форме e-mail было выслано письмо с информацией
о подтверждении регистрации.';
$MESS['SYS_AUTH_REGISTRATION_FNAME']         = 'Имя';
$MESS['SYS_AUTH_REGISTRATION_LNAME']         = 'Фамилия';
$MESS['SYS_AUTH_REGISTRATION_LOGIN']         = 'Логин';
$MESS['SYS_AUTH_REGISTRATION_PASSWORD']      = 'Пароль';
$MESS['SYS_AUTH_REGISTRATION_CONFIRM']       = 'Подтверждение пароля';
$MESS['SYS_AUTH_REGISTRATION_EMAIL']         = 'E-mail';
$MESS['SYS_AUTH_REGISTRATION_CAPTCHA_TITLE'] = 'Защита от автоматической регистрации';
$MESS['SYS_AUTH_REGISTRATION_CAPTCHA_TEXT']  = 'Введите символы с картинки';
$MESS['SYS_AUTH_REGISTRATION_SUBMIT']        = 'Регистрация';
$MESS['SYS_AUTH_REGISTRATION_LOGIN_LEN']     = 'Логин должен быть не менее 3 символов длиной.';
$MESS['SYS_AUTH_REGISTRATION_REQUIRED']      = 'Эти поля обязательны для заполнения';
$MESS['SYS_AUTH_REGISTRATION_AUTH']          = 'Авторизация';
/*
 * Файл local/templates/.default/components/bitrix/system.auth.registration/.default/style.css
 */
.system-auth-registration {

}
    .system-auth-registration > p {
        margin: 1em 0;
    }
        .system-auth-registration > p > a {
            text-decoration: underline;
        }
    .system-auth-registration > form {
        overflow: hidden;
    }
        .system-auth-registration > form > div {
            width: 50%;
            margin-bottom: 15px;
            float: left;
            box-sizing: border-box;
        }
        .system-auth-registration > form > div.captcha {
            border: 1px solid #ccc;
            padding: 20px 15px 15px 15px;
            position: relative;
            margin-top: 15px;
            width: 49%;
            clear: both;
        }
            .system-auth-registration > form > div.captcha > h3 {
                position: absolute;
                top: -10px;
                font-weight: normal;
                font-size: 16px;
                background: #eee;
                padding: 0 10px;
                color: #999;
            }
            .system-auth-registration > form > div.captcha > span:first-of-type {
                margin-top: 10px;
            }
        .system-auth-registration > form > div:nth-of-type(even) {
            padding-left: 1%;
        }
        .system-auth-registration > form > div:nth-of-type(odd) {
            padding-right: 1%;
        }
            .system-auth-registration > form > div > span {
                display: block;
            }
            .system-auth-registration > form > div > span:first-child {
                margin-bottom: 5px;
            }
                .system-auth-registration > form > div > span > input[type="text"],
                .system-auth-registration > form > div > span > input[type="password"] {
                    width: 100%;
                    padding: 5px;
                    border:1px solid #ccc;
                }
            .system-auth-registration > form > div.submit {
                float: none;
                padding-left: 0;
            }
            .system-auth-registration > form > div.submit > input[type="submit"] {
                width: 30%;
                padding: 5px;
                background: #333;
                color: #fff;
                border: none;
                margin-top: 10px;
            }
    .system-auth-registration i {
        font-style: normal;
        font-weight: bold;
        color: #f00;
    }

Шаблон компонента system.auth.authorize

<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.authorize/.default/template.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
?>

<div class="system-auth-authorize">

<h2><?= GetMessage('SYS_AUTH_AUTHORIZE_TITLE'); /* заголовок формы */ ?></h2>

<?php
// сообщение, как прошла операция авторизации
ShowMessage($arParams["~AUTH_RESULT"]);
// сообщение об ошибке при авторизации
ShowMessage($arResult['ERROR_MESSAGE']);
?>

<form name="form_auth" method="post" target="_top" action="<?= $arResult["AUTH_URL"]; ?>">

    <input type="hidden" name="AUTH_FORM" value="Y" />
    <input type="hidden" name="TYPE" value="AUTH" />

    <?php if (strlen($arResult["BACKURL"]) > 0): ?>
        <input type="hidden" name="backurl" value="<?= $arResult["BACKURL"]; ?>" />
    <?php endif; ?>

    <?php foreach ($arResult["POST"] as $key => $value): /* передача полученных POST-параметров */ ?>
        <input type="hidden" name="<?= $key; ?>" value="<?= $value; ?>" />
    <?php endforeach; ?>

    <div>
        <span>
            <?= GetMessage('SYS_AUTH_AUTHORIZE_LOGIN'); /* поле логин */ ?>
        </span>
        <span>
            <input type="text" name="USER_LOGIN" maxlength="255" value="<?= $arResult["LAST_LOGIN"]; ?>"/>
        </span>
    </div>

    <div>
        <span>
            <?= GetMessage('SYS_AUTH_AUTHORIZE_PASSWORD'); /* поле пароль */ ?>
        </span>
        <span>
            <input type="password" name="USER_PASSWORD" maxlength="255" autocomplete="off" />
        </span>
    </div>

    <?php if ($arResult["SECURE_AUTH"]): /* безопасная авторизация (зашифрованная передача пароля) */ ?>
        <!-- код удален -->
    <?php endif; ?>

    <?php if ($arResult["CAPTCHA_CODE"]): /* если используется CAPTCHA */ ?>
        <div class="captcha">
            <h3><?= GetMessage('SYS_AUTH_AUTHORIZE_CAPTCHA_TITLE'); /* Защита от роботов */ ?></h3>
            <input type="hidden" name="captcha_sid" value="<?= $arResult["CAPTCHA_CODE"]; ?>" />
            <img src="/bitrix/tools/captcha.php?captcha_sid=<?= $arResult["CAPTCHA_CODE"]; ?>"
                 width="180" height="40" alt="" />
            <span>
                <?= GetMessage('SYS_AUTH_AUTHORIZE_CAPTCHA_TEXT'); /* введите код с картинки */ ?>
                <i>*</i> <!-- поле обязательно для заполнения -->
            </span>
            <span>
                <input type="text" name="captcha_word" maxlength="50" value="" size="15" />
            </span>
        </div>
    <?php endif; ?>

    <?php if ($arResult["STORE_PASSWORD"] == "Y"): /* checkbox «Запомнить меня» */ ?>
        <div class="remember">
            <input type="checkbox" id="USER_REMEMBER" name="USER_REMEMBER" value="Y" />
            <label for="USER_REMEMBER"><?= GetMessage('SYS_AUTH_AUTHORIZE_REMEMBER'); ?></label>
        </div>
    <?php endif; ?>

    <div class="submit">
        <input type="submit" name="Login"
               value="<?= GetMessage('SYS_AUTH_AUTHORIZE_SUBMIT'); /* кнопка отправки формы */ ?>" />
    </div>

</form>

<?php if ($arParams["NOT_SHOW_LINKS"] != "Y"): /* ссылка для восстановления пароля */ ?>
    <p>
        <a href="<?= $arResult["AUTH_FORGOT_PASSWORD_URL"]; ?>" rel="nofollow">
        <?= GetMessage('SYS_AUTH_AUTHORIZE_FORGOT'); ?>
        </a>
    </p>
<?php endif; ?>

<?php
// ссылка на страницу регистрации
if ($arParams["NOT_SHOW_LINKS"] != "Y"
    && $arResult["NEW_USER_REGISTRATION"] == "Y"
    && $arParams["AUTHORIZE_REGISTRATION"] != "Y"):
?>
    <p>
        <a href="<?= $arResult["AUTH_REGISTER_URL"]; ?>" rel="nofollow">
        <?= GetMessage('SYS_AUTH_AUTHORIZE_REG_USER'); ?>
        </a>
    </p>
<?php endif; ?>

<script type="text/javascript">
<?php if (strlen($arResult["LAST_LOGIN"]) > 0): ?>
    try{document.form_auth.USER_PASSWORD.focus();} catch(e){}
<?php else: ?>
    try{document.form_auth.USER_LOGIN.focus();} catch(e){}
<?php endif; ?>
</script>

</div>
<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.authorize/.default/lang/ru/template.php
 */
$MESS['SYS_AUTH_AUTHORIZE_TITLE']         = 'Авторизация';
$MESS['SYS_AUTH_AUTHORIZE_LOGIN']         = 'Логин';
$MESS['SYS_AUTH_AUTHORIZE_PASSWORD']      = 'Пароль';
$MESS['SYS_AUTH_AUTHORIZE_REMEMBER']      = 'Запомнить меня';
$MESS['SYS_AUTH_AUTHORIZE_CAPTCHA_TITLE'] = 'Защита от автоматической регистрации';
$MESS['SYS_AUTH_AUTHORIZE_CAPTCHA_TEXT']  = 'Введите символы с картинки';
$MESS['SYS_AUTH_AUTHORIZE_SUBMIT']        = 'Войти';
$MESS['SYS_AUTH_AUTHORIZE_REG_USER']      = 'Зарегистрироваться';
$MESS['SYS_AUTH_AUTHORIZE_FORGOT']        = 'Забыли пароль?';
/*
 * Файл local/templates/.default/components/bitrix/system.auth.authorize/.default/style.css
 */
.system-auth-authorize {

}
    .system-auth-authorize > p {
        margin: 1em 0;
    }
        .system-auth-authorize > p > a {
            text-decoration: underline;
        }
        .system-auth-authorize > form > div {
            width: 50%;
            margin-bottom: 15px;
        }
            .system-auth-authorize > form > div > span {
                display: block;
            }
            .system-auth-authorize > form > div > span:first-child {
                margin-bottom: 5px;
            }
                .system-auth-authorize > form > div > span > input[type="text"],
                .system-auth-authorize > form > div > span > input[type="password"] {
                    width: 100%;
                    padding: 5px;
                    border:1px solid #ccc;
                }
        .system-auth-authorize > form > div.captcha {
            border: 1px solid #ccc;
            padding: 20px 15px 15px 15px;
            position: relative;
            margin-top: 15px;
            width: 49%;
            clear: both;
        }
            .system-auth-authorize > form > div.captcha > h3 {
                position: absolute;
                top: -10px;
                font-weight: normal;
                font-size: 16px;
                background: #eee;
                padding: 0 10px;
                color: #999;
            }
            .system-auth-authorize > form > div.captcha > span:first-of-type {
                margin-top: 10px;
            }
        .system-auth-authorize > form > div.remember label {
            font-weight: normal;
            cursor: pointer;
            border-bottom: 1px dashed #333;
            position: relative;
            top: -3px;
            margin-left: 5px;
        }
            .system-auth-authorize > form > div.submit > input[type="submit"] {
                width: 30%;
                padding: 5px;
                background: #333;
                color: #fff;
                border: none;
            }
    .system-auth-authorize i {
        font-style: normal;
        font-weight: bold;
        color: #f00;
    }

Шаблон компонента system.auth.forgotpasswd

<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.forgotpasswd/.default/template.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
?>

<div class="system-auth-forgotpasswd">

<h2><?= GetMessage('SYS_AUTH_FORGOT_TITLE'); /* заголовок формы */?></h2>

<?php
// сообщение о результате операции смены пароля
ShowMessage($arParams["~AUTH_RESULT"]);
// после отправки письма и вывода сообщания об этом, не нужно больше показывать форму
if (isset($arParams["~AUTH_RESULT"]['TYPE']) && $arParams["~AUTH_RESULT"]['TYPE'] == 'OK') {
    echo '</div>';
    return;
}
?>

<p><?= GetMessage('SYS_AUTH_FORGOT_HELP'); /* сообщение о том, как происходит восстановление пароля */?></p>

<form name="bform" method="post" target="_top" action="<?= $arResult["AUTH_URL"]; ?>">

    <?php if (strlen($arResult["BACKURL"]) > 0): ?>
        <input type="hidden" name="backurl" value="<?= $arResult["BACKURL"]; ?>" />
    <?php endif; ?>

    <input type="hidden" name="AUTH_FORM" value="Y">
    <input type="hidden" name="TYPE" value="SEND_PWD">

    <div>
        <span>
            <?= GetMessage('SYS_AUTH_FORGOT_LOGIN'); /* логин пользователя */ ?>
        </span>
        <span>
            <input type="text" name="USER_LOGIN" maxlength="50" value="<?= $arResult["LAST_LOGIN"]; ?>" />
        </span>
    </div>

    <div>
        <span>
            <?= GetMessage('SYS_AUTH_FORGOT_EMAIL'); /* e-mail пользователя */ ?>
        </span>
        <span>
            <input type="text" name="USER_EMAIL" maxlength="255" value="" />
        </span>
    </div>

    <?php if ($arResult["USE_CAPTCHA"]): /* использовать CAPTCHA? */ ?>
        <div class="captcha">
            <h3><?= GetMessage('SYS_AUTH_FORGOT_CAPTCHA_TITLE'); /* Защита от роботов */ ?></h3>
            <input type="hidden" name="captcha_sid" value="<?= $arResult["CAPTCHA_CODE"]; ?>" />
            <img src="/bitrix/tools/captcha.php?captcha_sid=<?= $arResult["CAPTCHA_CODE"]; ?>"
                 width="180" height="40" alt="CAPTCHA" />
            <span>
                <?= GetMessage('SYS_AUTH_FORGOT_CAPTCHA_TEXT'); /* введите код с картинки */ ?>
                <i>*</i> <!-- поле обязательно для заполнения -->
            </span>
            <span>
                <input type="text" name="captcha_word" maxlength="50" value="" />
            </span>
        </div>
    <?php endif; ?>

    <div class="submit">
        <input type="submit" name="send_account_info"
               value="<?= GetMessage('SYS_AUTH_FORGOT_SUBMIT'); /* кнопка отправки */ ?>" />
    </div>

</form>

<p>
    <a href="<?= $arResult["AUTH_AUTH_URL"]; ?>">
        <?= GetMessage('SYS_AUTH_FORGOT_AUTH'); /* ссылка на страницу авторизации */ ?>
    </a>
</p>

<script type="text/javascript">
    document.bform.USER_LOGIN.focus();
</script>

</div>
<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.forgotpasswd/.default/lang/ru/template.php
 */
$MESS['SYS_AUTH_FORGOT_TITLE']         = 'Восстановление пароля';
$MESS['SYS_AUTH_FORGOT_HELP']          = 'Введите логин или E-mail: инструкция по смене пароля
будет отправлена на Ваш почтовый адрес.';
$MESS['SYS_AUTH_FORGOT_LOGIN']         = 'Логин';
$MESS['SYS_AUTH_FORGOT_EMAIL']         = 'E-mail';
$MESS['SYS_AUTH_FORGOT_CAPTCHA_TITLE'] = 'Защита от автоматической регистрации';
$MESS['SYS_AUTH_FORGOT_CAPTCHA_TEXT']  = 'Введите символы с картинки';
$MESS['SYS_AUTH_FORGOT_SUBMIT']        = 'Отправить';
$MESS['SYS_AUTH_FORGOT_AUTH']          = 'Авторизация';
/*
 * Файл local/templates/.default/components/bitrix/system.auth.forgotpasswd/.default/style.css
 */
.system-auth-forgotpasswd {

}
    .system-auth-forgotpasswd > p {
        margin: 1em 0;
    }
        .system-auth-forgotpasswd > p > a {
            text-decoration: underline;
        }
        .system-auth-forgotpasswd > form > div {
            width: 50%;
            margin-bottom: 15px;
        }
        .system-auth-forgotpasswd > form > div.captcha {
            border: 1px solid #ccc;
            padding: 20px 15px 15px 15px;
            position: relative;
            margin-top: 25px;
        }
            .system-auth-forgotpasswd > form > div.captcha > h3 {
                position: absolute;
                top: -10px;
                font-weight: normal;
                font-size: 16px;
                background: #eee;
                padding: 0 10px;
                color: #999;
            }
            .system-auth-forgotpasswd > form > div.captcha > span:first-of-type {
                margin-top: 10px;
            }
            .system-auth-forgotpasswd > form > div > span {
                display: block;
            }
            .system-auth-forgotpasswd > form > div > span:first-child {
                margin-bottom: 5px;
            }
                .system-auth-forgotpasswd > form > div > span > input[type="text"],
                .system-auth-forgotpasswd > form > div > span > input[type="password"] {
                    width: 100%;
                    padding: 5px;
                    border: 1px solid #ccc;
                }
        .system-auth-forgotpasswd > form > div.submit {
            margin-top: 25px;
        }
            .system-auth-forgotpasswd > form > div.submit > input[type="submit"] {
                width: 30%;
                padding: 5px;
                background: #333;
                color: #fff;
                border: none;
            }
    .system-auth-forgotpasswd i {
        font-style: normal;
        font-weight: bold;
        color: #f00;
    }

Шаблон компонента system.auth.changepasswd

<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.changepasswd/.default/template.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
?>

<div class="system-auth-changepasswd">

<h2><?= GetMessage('SYS_AUTH_CHANGE_TITLE'); /* заголовок формы */ ?></h2>

<p><?php ShowMessage($arParams["~AUTH_RESULT"]); /* сообщение о результате смены пароля */ ?></p>

<?php
// после успешной смены пароля и вывода сообщания об этом, не нужно больше показывать форму
if (isset($arParams["~AUTH_RESULT"]['TYPE']) && $arParams["~AUTH_RESULT"]['TYPE'] == 'OK') {
    echo '</div>';
    return;
}
?>

<form name="bform" method="post" action="<?= $arResult["AUTH_FORM"]; ?>">

    <?php if (strlen($arResult["BACKURL"]) > 0): ?>
        <input type="hidden" name="backurl" value="<?= $arResult["BACKURL"]; ?>" />
    <?php endif; ?>

    <input type="hidden" name="AUTH_FORM" value="Y">
    <input type="hidden" name="TYPE" value="CHANGE_PWD">

    <div>
        <span>
            <?= GetMessage('SYS_AUTH_CHANGE_LOGIN'); /* логин пользователя */ ?>
            <i>*</i> <!-- поле обязательно для заполнения -->
        </span>
        <span>
            <input type="text" name="USER_LOGIN"
                   maxlength="50" value="<?= $arResult["LAST_LOGIN"]; ?>" />
        </span>
    </div>

    <div class="checkword">
        <span>
            <?= GetMessage('SYS_AUTH_CHANGE_CHECK'); /* контрольная строка */ ?>
            <i>*</i> <!-- поле обязательно для заполнения -->
        </span>
        <span>
            <input type="text" name="USER_CHECKWORD"
                   maxlength="50" value="<?= $arResult["USER_CHECKWORD"]; ?>" />
        </span>
    </div>

    <div>
        <span>
            <?= GetMessage('SYS_AUTH_CHANGE_PASSWORD'); /* новый пароль */ ?>
            <i>*</i> <!-- поле обязательно для заполнения -->
        </span>
        <span>
            <input type="password" name="USER_PASSWORD" maxlength="50"
                   value="<?= $arResult["USER_PASSWORD"]; ?>" autocomplete="off" />
        </span>
    </div>

    <?php if ($arResult["SECURE_AUTH"]): /* безопасная авторизация (зашифрованная передача пароля) */?>
        <!-- код удален -->
    <?php endif; ?>

    <div>
        <span>
            <?= GetMessage('SYS_AUTH_CHANGE_CONFIRM'); /* подтверждение пароля */ ?>
            <i>*</i> <!-- поле обязательно для заполнения -->
        </span>
        <span>
            <input type="password" name="USER_CONFIRM_PASSWORD" maxlength="50"
                   value="<?= $arResult["USER_CONFIRM_PASSWORD"]; ?>" autocomplete="off" />
        </span>
    </div>

    <?php if ($arResult["USE_CAPTCHA"]): /* использовать CAPTCHA? */?>
        <div class="captcha">
            <h3><?= GetMessage('SYS_AUTH_CHANGE_CAPTCHA_TITLE'); /* Защита от роботов */ ?></h3>
            <input type="hidden" name="captcha_sid" value="<?= $arResult["CAPTCHA_CODE"]; ?>" />
            <img src="/bitrix/tools/captcha.php?captcha_sid=<?= $arResult["CAPTCHA_CODE"]; ?>"
                 width="180" height="40" alt="CAPTCHA" />
            <span>
                <?= GetMessage('SYS_AUTH_CHANGE_CAPTCHA_TEXT'); /* введите код с картинки */ ?>
                <i>*</i> <!-- поле обязательно для заполнения -->
            </span>
            <span>
                <input type="text" name="captcha_word" maxlength="50" value="" />
            </span>
        </div>
    <?php endif; ?>

    <div class="submit">
        <input type="submit" name="change_pwd"
               value="<?= GetMessage('SYS_AUTH_CHANGE_SUBMIT'); /* кнопка отправки формы */ ?>" />
    </div>

</form>

<p><?= $arResult["GROUP_POLICY"]["PASSWORD_REQUIREMENTS"]; /* сообщение о min длине пароля */ ?></p>

<p><i>*</i> <?= GetMessage('SYS_AUTH_CHANGE_REQUIRED') /* Эти поля обязательны для заполнения */ ?></p>
<p>
    <a href="<?= $arResult["AUTH_AUTH_URL"]; ?>">
    <?= GetMessage('SYS_AUTH_CHANGE_AUTH'); /* ссылка на страницу авторизации */ ?>
    </a>
</p>

<script type="text/javascript">
document.bform.USER_LOGIN.focus();
</script>

</div>
<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.changepasswd/.default/lang/ru/template.php
 */
$MESS['SYS_AUTH_CHANGE_TITLE']         = 'Смена пароля';
$MESS['SYS_AUTH_CHANGE_LOGIN']         = 'Логин';
$MESS['SYS_AUTH_CHANGE_CHECK']         = 'Контрольная строка';
$MESS['SYS_AUTH_CHANGE_PASSWORD']      = 'Новый пароль';
$MESS['SYS_AUTH_CHANGE_CONFIRM']       = 'Подтверждение пароля';
$MESS['SYS_AUTH_CHANGE_CAPTCHA_TITLE'] = 'Защита от автоматической регистрации';
$MESS['SYS_AUTH_CHANGE_CAPTCHA_TEXT']  = 'Введите символы с картинки';
$MESS['SYS_AUTH_CHANGE_SUBMIT']        = 'Изменить пароль';
$MESS['SYS_AUTH_CHANGE_AUTH']          = 'Авторизация';
$MESS['SYS_AUTH_CHANGE_REQUIRED']      = 'Эти поля обязательны для заполнения';
/*
 * Файл local/templates/.default/components/bitrix/system.auth.changepasswd/.default/style.css
 */
.system-auth-changepasswd {

}
    .system-auth-changepasswd > p {
        margin: 1em 0;
    }
        .system-auth-changepasswd > p > a {
            text-decoration: underline;
        }
        .system-auth-changepasswd > form > div {
            width: 50%;
            margin-bottom: 15px;
        }
        .system-auth-changepasswd > form > div.checkword {
            display: none;
        }
            .system-auth-changepasswd > form > div > span {
                display: block;
            }
            .system-auth-changepasswd > form > div > span:first-child {
                margin-bottom: 5px;
            }
                .system-auth-changepasswd > form > div > span > input[type="text"],
                .system-auth-changepasswd > form > div > span > input[type="password"] {
                    width: 100%;
                    padding: 5px;
                    border:1px solid #ccc;
                }
        .system-auth-changepasswd > form > div.submit {
            margin-top: 25px;
        }
            .system-auth-changepasswd > form > div.submit > input[type="submit"] {
                width: 30%;
                padding: 5px;
                background: #333;
                color: #fff;
                border: none;
            }
    .system-auth-changepasswd i {
        font-style: normal;
        font-weight: bold;
        color: #f00;
    }

Поиск: CMS • Web-разработка • Авторизация • Битрикс • Компонент • Регистрация • Форма • Шаблон компонента

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.