MODX - Login (Авторизация пользователей)

Александр Мальцев
Александр Мальцев
31K
103
Содержание:
  1. Страница "Авторизация"
  2. Страница "Восстановление пароля"
  3. Комментарии

Урок, в котором рассмотрим создание страниц "Авторизация" и "Восстановление пароля" с помощью компонента Login.

Страница "Авторизация"

Страница "Авторизация" предназначена для отображения пользователю формы входа на сайт, а также HTML-фрагмента с помощью которого он может выйти из системы. Всё логику работы по авторизации пользователя выполняет сниппет Login.

Содержимое ресурса "Авторизация" (сниппет Login):

[[!Login? 
  &tplType=`modChunk`
  &loginTpl=`myLoginChunk`
  &logoutTpl=`myLogoutChunk`
  &errTpl=`lgnErrTpl` 
  &redirectToPrior=`1`
]]
MODX Login - Процесс авторизации пользователя

Описание используемых параметров сниппета Login:

Имя параметра Описание
tplType Тип шаблона для loginTpl и logoutTpl. Значение: modChunk.
loginTpl Шаблон формы для авторизации (входа) пользователя.
logoutTpl Шаблон, который отображается авторизованному пользователю.
errTpl Шаблон, который отображается пользователю при возникновении ошибки.
redirectToPrior Если установлено значение 1, то перенаправляет пользователя на предыдущую страницу (HTTP_REFERER) после успешного входа.

Содержимое чанка myLoginChunk (шаблон формы входа):

<div class="container">
  <div class="row">
    <div class="col-md-8 col-lg-6">
      <div class="panel panel-primary">
        <div class="panel-heading"><i class="glyphicon glyphicon-edit"></i> [[+actionMsg]]</div>
        <div class="panel-body">
          <p class="text-danger">[[+errors]]</p>
          <form class="form-horizontal" action="[[~[[*id]]]]" method="post">
            <div class="form-group">
              <label for="username" class="col-sm-4 control-label">[[%login.username]]</label>
              <div class="col-sm-8">
                <input type="text" name="username" class="form-control" id="username">
              </div>      
            </div>
            <div class="form-group">
              <label for="password" class="col-sm-4 control-label">[[%login.password]]</label>
              <div class="col-sm-8">
                <input type="password" name="password" class="form-control" id="password">
              </div>      
            </div>              
            <input class="returnUrl" type="hidden" name="returnUrl" value="[[+request_uri]]" />
            <input class="loginLoginValue" type="hidden" name="service" value="login">
            <input type="submit" value="[[+actionMsg]]" name="Login" id="Login" class="btn btn-primary pull-right">
          </form>
          <div class="clearfix"></div>
          <hr style="margin-top:10x;margin-bottom:5px;">
          <p><a href="[[~32]]" class="btn btn-link pull-right">Забыли пароль?</a></p>
        </div>
      </div>
    </div>
  </div>
</div>
MODX Login - Форма входа

Содержимое чанка myLgnErrTpl (шаблон ошибки):

<p class="error">[[+msg]]</p>
MODX Login - Форма входа (ошибка)

Содержимое чанка myLogoutChunk (шаблон, которой отображается авторизированному пользователю; используется для выхода из системы):

<div class="container">
  <div class="row">
    <div class="col-md-5">
      <div class="panel panel-primary">
        <div class="panel-heading"><i class="glyphicon glyphicon-user"></i> Пользователь</div>
        <div class="panel-body">
          <div class="loginMessage">[[+errors]]</div>
          Имя пользователя: [[!+modx.user.username]]
          <hr style="margin-top:8px; margin-bottom:8px;">
          <div class="row">
            <div class="col-xs-6" style="margin-bottom:8px;">
              <i class="glyphicon glyphicon-off"></i> <a href="[[+logoutUrl]]" title="[[+actionMsg]]">[[+actionMsg]]</a>
            </div>
            <div class="col-xs-6" style="margin-bottom:8px;">
              <i class="glyphicon glyphicon-pencil"></i> <a href="[[~33]]" title="Изменение пароля">Изменение пароля</a>
            </div>
            <div class="col-xs-6" style="margin-bottom:8px;">
              <i class="glyphicon glyphicon-home"></i> <a href="[[~30]]" title="Личный кабинет">Личный кабинет</a>
            </div>
            <div class="col-xs-6" style="margin-bottom:8px;">
              <i class="glyphicon glyphicon-cog"></i> <a href="[[~34]]" title="Редактирование данных">Редактирование данных</a>
            </div>
          </div>
        </div>
    </div>
  </div>
</div>
MODX Login - Форма выхода

Страница "Восстановление пароля"

Страница "Восстановления пароля" используется для тех случаев, когда пользователь забыл пароль и хочет его сбросить. Переход на данную страницу осуществляется с помощью ссылки "Забыли пароль?", которая расположена ниже формы авторизации.

Этот ресурс выполняет следующие действия:

  • отображает пользователю форму, с помощью которой он может потребовать выполнить сброс пароля;
  • отправляет письмо (после успешной обработки формы) на email. Письмо содержит ссылку, с помощью которой пользователь может выполнить сброс своего пароля. На этой странице вышеперечисленные действия выполняет сниппет ForgotPassword;
  • отображает сообщение (если пользователь перешёл на эту страницу с помощью ссылки из письма), с помощью которой пользователь сможет выполнить сброс пароля. Эти действия на странице (установку нового пароля и отображение результата сброса) выполняет сниппет ResetPassword.

Содержимое ресурса "Восстановления пароля" (сниппет ForgotPassword и ResetPassword):

[[!ResetPassword:empty=`
  [[!ForgotPassword?  
    &resetResourceId=`[[*id]]`
    &loginResourceId=`29`
    &tpl=`mylgnForgotPassTpl`
    &sentTpl=`mylgnForgotPassSentTpl`
    &emailTpl=`mylgnForgotPassEmail`
    &emailSubject=`Восстановление пароля`
  ]]`? &tpl=`mylgnResetPassTpl`
       &expiredTpl=`mylgnExpiredTpl`
       &loginResourceId=`29`
]]
MODX Login - Процесс восстановления пароля пользователя

Описание используемых параметров сниппета ForgotPassword:

Имя параметра Описание
tpl Шаблон формы для восстановления пароля. Значение: mylgnForgotPassTpl
emailTpl Шаблон письма с инструкцией по восстановлению пароля, отправляемый пользователю. Значение: mylgnForgotPassEmail.
emailSubject Тема письма. Значение: Восстановление пароля.
sentTpl Шаблон сообщения, которое необходимо показать пользователю при удачной отправки email. Значение: mylgnForgotPassSentTpl.
loginResourceId Ресурс, на который необходимо направить пользователя после успешного подтверждения. Значение: 29.
resetResourceId Идентификатор ресурса, в котором расположен сниппет ResetPassword. Значение: [[*id]].

Описание используемых параметров сниппета ResetPassword:

Имя параметра Описание
tpl Шаблон сообщения, содержащий информацию о сбросе пароля. Значение: mylgnResetPassTpl.
tplType Тип шаблона tpl. Значение: modChunk.
loginResourceId Ресурс, на который необходимо направить пользователя после успешного выполнения сброса пароля. Значение: 29.
expiredTpl Шаблон сообщения о том, что пароль уже был сброшен или срок действия ссылки истёк. Значение mylgnExpiredTpl.

Содержимое чанка mylgnForgotPassTpl (шаблон, которой отображает пользователю форму для восстановления пароля):

<div class="container">
  <div class="row">
    <div class="col-md-8 col-lg-6">
      <div class="panel panel-primary">
        <div class="panel-heading"><i class="glyphicon glyphicon-erase"></i> [[%login.forgot_password]]</div>
        <div class="panel-body">
          <div class="text-danger">[[+loginfp.errors]]</div>
          
          <form class="form-horizontal" action="[[~[[*id]]]]" method="post">
            <div class="form-group">
              <label for="username" class="col-sm-4 control-label">[[%login.username]]</label>
              <div class="col-sm-8">
                <input type="text" name="username" class="form-control" id="username" value="[[+loginfp.post.username]]">
              </div>      
            </div>
            <p>[[%login.or_forgot_username]]</p>
            <div class="form-group">
              <label for="username" class="col-sm-4 control-label">[[%login.email]]</label>
              <div class="col-sm-8">
                <input type="text" name="email" class="form-control" id="email" value="[[+loginfp.post.email]]">
              </div>      
            </div>            
            <input class="returnUrl" type="hidden" name="returnUrl" value="[[+loginfp.request_uri]]" />
            <input class="loginFPService" type="hidden" name="login_fp_service" value="forgotpassword" />
            <input type="submit" value="[[%login.reset_password]]" name="login_fp" id="login_fp" class="btn btn-primary pull-right">            
          </form>
        </div>
      </div>
    </div>
  </div>
</div>
MODX Login - Форма для восстановления пароля

Содержимое чанка mylgnForgotPassSentTpl (шаблон, которой отображает пользователю сообщение об успешной отправке почты):

<p>Инструкция по сбросу пароля была отправлена на Ваш почтовый адрес ([[+email]]).</p>
MODX Login - Сообщение об успешной отправке почты пользователю для восстановления пароля

Содержимое чанка mylgnForgotPassEmail (шаблон письма для восстановления пароля):

<p>Здравствуйте.</p>
<p>Для активации нового пароля, пожалуйста, перейдите по следующей ссылке:</p>
<p><a href="[[+confirmUrl]]">[[+confirmUrl]]</a></p>
<p>В случае успеха, вы можете использовать следующий пароль для входа:</p>
<p><strong>Имя: </strong>[[+username]]</p>
<p><strong>Пароль: </strong> [[+password]]</p>
<p>Если Вы не запрашивали это сообщение, то просто проигнорируйте его.</p>

<p>Спасибо,<br>
<em>Администратор сайта</em></p>
MODX Login - Письмо содержащее имя и новый пароль пользователя, а также ссылку, активирующую данный пароль

Содержимое чанка mylgnResetPassTpl (шаблон сообщения о результате сброса пароля):

<div class="loginResetPass">
<p class="loginResetPassHeader">[[+username]],</p>
<p class="loginResetPassText">Ваш пароль успешно сброшен. Пожалуйста перейдите на страницу <a href="[[+loginUrl]]">"Авторизация"</a> для входа.</p>  
</div>
MODX Login - Сообщение об успешном сбросе пароля

Содержимое чанка mylgnExpiredTpl (шаблон сообщения о том, что пароль уже был сброшен или срок действия ссылки истёк):

<p><strong>Информация о сбросе пароля</strong></p>
<p>Ваш пароль уже сброшен или срок действия ссылки уже истёк. Если вам нужно сбросить пароль, то перейдите по следующей <a href="[[~32]]">ссылке</a>.</p>
MODX Login - Сообщение о том, что пароль уже был сброшен или срок действия ссылки истёк

Комментарии:

  1. Reut
    Reut
    14.10.2021, 13:17
    Всем привет! ПОМОГИТЕ!!! Создал все по инструкции. Но есть одна проблема… На этапе восстановления пароля не отправляет инструкцию по восстановлению на мыло… прилагаю скрин первый и скрин второй тут. Что делать?!
    1. Reut
      Reut
      15.10.2021, 11:24
      Ребята! Ответьте пожалуйста! Очень нужна помощь…
    2. Дмитрий
      Дмитрий
      15.03.2021, 12:27
      Здравствуйте, после того как закрываю браузер и захожу на сайт, то снова предлагает авторизацию, как можно сделать чтобы не сбрасывалось?))
      1. Дмитрий
        Дмитрий
        16.03.2021, 15:48
        Сам отвечу, может кому пригодиться.
        В чанке авторизации вставляем:
        <label class="loginRemembermeLabel">Запомнить меня?
        <input class="loginRememberme" type="checkbox" name="rememberme" checked="checked" />
        </label>
      2. Максим
        Максим
        08.02.2021, 20:42
        Здравствуйте.
        Прошу помощи.
        Вроде все работает, но не происходит сброса пароля. Приходит письмо с новым паролем и ссылкой для активации, но пароль остается прежним.
        Можете подсказать куда копать?
        MODX 2.8.1
        1. Александр Мальцев
          Александр Мальцев
          14.02.2021, 06:36
          Здравствуйте.
          Посмотрите логи, может там какая подсказка имеется. Также проверьте на какую страницу ведёт ссылка в письме и подключен ли к этой странице сниппет ResetPassword.
        2. Фунтик
          Фунтик
          19.08.2020, 22:17
          Здравствуйте, у меня вопрос. Как изменить сообщение, которое приходит на мыло при сбросе пароля? Вижу в чанке шаблона строку [[%login.forgot_password_email_text?.. Не понимаю, что это. и где оно находится??
          1. Александр Мальцев
            Александр Мальцев
            20.08.2020, 05:05
            Здравствуйте. Это лексиконы. Они находятся в «Управлениями словарями» (в главном меню нажимаем на значок «шестерёнки», далее на этот пункт).
            На открывшейся странице выбираем пространство имен «login», нужный язык, далее находим это название и меняем ему текст на нужный.
            Лексиконы – это такие элементы MODX, которые заменяются на соответствующее значения из словаря. В зависимости от языковой версии сайта – это может быть одно или другое значение.
            Если у вас сайт на одном языке, и вы не собираетесь в дальнейшем делать его мультиязычным, то тогда просто можно удалить этот элемент, и написать вместо него нужный текст.
            1. Фунтик
              Фунтик
              04.09.2020, 15:52
              Спасибо большое
          2. fidst
            fidst
            16.08.2020, 12:25
            Добрый день! Установил modx. Установил Login(согласно вашей инструкции). Пишу [[!Login]] — все в порядке. Но когда пишу [[!Login? &loginResourceId='5']], то начинается следующее: страница обновляется, загружается та же начальная страница с той же формой для логина, потом нажимаю, не вбивая Войти и он заходит на тот же ресурс, который изначальный и уже без формы
            1. fidst
              fidst
              17.08.2020, 11:44
              нашел решение проблемы, для того, чтобы корректно перенаправлял после авторизации нужно использовать [[!Login?loginResourceId=`5`]]. И только так, за исключением id страницы конечно
            2. Фунтик
              Фунтик
              07.08.2020, 18:31
              Здравствуйте. Пытался и отдельно сниппеты ResetPassword и ForgotPassword писать, и вместе. Ссылка на мыло приходит, но при переходе выводится expiredTpl. В чем может быть причина?
              1. Ivan
                Ivan
                30.06.2020, 08:09
                Александр, приветствую!
                Подскажите, пожалуйста, как решить проблему.
                При попытке перейти на страницу «Личный кабинет», без авторизации, ожидаемо перенаправляемся на страницу авторизации (либо любую другую указанную в параметрах). После авторизации, на странице "Личный кабинет" видим всю необходимую информацию.
                Проблема: после выполнения logout и попытке перехода на страницу "Личный кабинет" не происходит перенаправления на страницу авторизации, а попадаем в личный кабинет в котором все поля пустые (т.к. logout выполнен). Как победить эту беду? Почему после logout страница остается доступной и не происходит перенаправления? Помогает только очистка кэша в админке. Как можно побороть?
                1. Александр Мальцев
                  Александр Мальцев
                  04.07.2020, 13:02
                  Привет! Выполняйте тесты в режиме инкогнито или в другом браузере. Когда вы авторизованы в контексте mgr, а затем выполняете login и logout на фронтенде (в контексте web) вы всё равно остаётесь авторизованным в mgr. А это конечно влияет на работу.
                  1. Ivan
                    Ivan
                    06.07.2020, 02:58
                    Спасибо огромное!
                    Действительно, все оказалось так просто)
                    Отличный ресурс!
                    Еще раз спасибо, успехов!
                2. Анастасия Луговая
                  Анастасия Луговая
                  08.06.2020, 20:53
                  Александр, добрый день! У меня есть основной сайт и тот, где я «тренируюсь»
                  На «тренировочном» все работает (кроме выхода, хотя логаут как у вас прописан)
                  На основном же все отправляет на главную! хотя и там и там настройки идентичные, чанки идентичные (только ссылки ресурсов поправила), но все равно ничего не работает(((
                  На тренировочном «выход» отправляет на смену пароля
                  1. Анастасия Луговая
                    Анастасия Луговая
                    12.06.2020, 09:33
                    По всей видимости был какой-то глюк… сейчас все работает одинаково… осталась проблема с «выходом»
                    Самое интересное, он каждый раз отправляет на разные стр, то в ЛК, то на изменение данных

                    Нет, не так… все равно все не работает если с др браузера зайти((( отправка на главную и все тут
                  2. Дмитрий
                    Дмитрий
                    10.04.2020, 22:36
                    Здравствуйте. Пользовался раньше Вашими инструкциями — всё работало. А сегодня поставил на сайт — и в письме-подтверждении нет ссылки для активации аккаунта, пустое место. Можете подсказать, что может быть?
                    1. Александр Мальцев
                      Александр Мальцев
                      12.04.2020, 08:38
                      Здравствуйте. Проверьте, всё ли вы перенесли на хостинг, может что-то забыли.
                    2. amikawa
                      amikawa
                      28.02.2020, 15:16
                      Александр, ваш ресурс на голову выше аналогов в нашем сообществе, но я бы хотел, чтобы вы не пропускали (очевидные для вас) необъяснённые моменты) В форме [[%login.password]] почему используется %? что это значит, я как новичок не понимаю этого, можете объяснить, учитель? а вот в той же форме такие placeholder- ы [[ + action_msg]] а это откуда берётся всё? или дальше опять вижу [[error]]
                      этот error всегда есть что ли? он не связан с плагином, а связан с modx?
                      1. Александр Мальцев
                        Александр Мальцев
                        29.02.2020, 04:54
                        Спасибо, за отзыв! Элементы, которые начинаются в MODX с % называются лексиконами. [[%login.password]] — это лексион. Они необходимы, когда сайт у вас многоязычный. В этом случае, например для русской версии вместо [[%login.password]] будет выводиться слово «Пароль», а на английской версии — «Password».
                        Эти значения устанавливаются в «Управление словарями». Чтобы их найти, нужно в админке нажать на значок шестерёнки и выбрать соответствующий раздел. После этого выбрать пространство имён «login» и найти этот ключ. Этот ключ на определённом языке будет иметь определённое значение. Именно оно и будет выводиться вместо [[%login.password]]. Если ваш сайт не многоязычный, то эти элементы можете просто заменить на любой свой текст.

                        [[+actionMsg]] и другие элементы MODX начинающиеся со одного знака «+» называются плейсхолдерами. Их устанавливают сниппеты. Могут их конечно устанавливать и другие элементы MODX, но в большинстве случаев делают это именно они.
                        Например, имеется следующий вызов сниппета:
                        [[!Login? 
                          &tplType=`modChunk`
                          &loginTpl=`myLoginChunk`
                          &logoutTpl=`myLogoutChunk`
                          &errTpl=`lgnErrTpl` 
                          &redirectToPrior=`1`
                        ]]
                        В нём форма входа устанавливается с помощью параметра myLoginChunk. В myLoginChunk указывается чанк. В процессе выполнения сниппет выполняет некоторые действия и если ему нужно вывести форму, то он заменяет в ней плейсхолдеры на значения, которые он получил в результате своей работе.
                        Например, в коде actionMsg определяется так:
                        $actionMsg = $this->isAuthenticated
                          ? $this->getProperty('logoutMsg',$this->modx->lexicon('login.logout'))
                          : $this->getProperty('loginMsg',$this->modx->lexicon('login'));
                        Т.е. если пользователь аутентифицированный, то это значение устанавливается равной значению лексикона с ключом «login.logout», иначе значению лексикона с ключом «login».
                        Плейсхолдер [[+error]] тоже устанавливается сниппетом Login, но уже следующим образом:
                        $errorOutput = $this->prepareFailureMessage($response,$this->modx->lexicon('login.login_err'));
                        $this->modx->setPlaceholder('errors', $errorOutput);
                        1. amikawa
                          amikawa
                          02.03.2020, 10:18
                          Спасибо, отличное объяснение.
                      2. Евгений
                        Евгений
                        20.01.2020, 19:55
                        Доброго времени суток!

                        Подскажите пожалуйста из-за чего при попытке авторизоваться может просто перезагружать страницу и выдавать абсолютно пустую страницу? В логах везде пусто, в консоли тоже. Для быстроты брал всё с сайта на котором это работало с последующей правкой под текущий сайт (изменение ID страниц редактирования профиля и т.д.), но быстрее не вышло…
                        1. Евгений
                          Евгений
                          20.01.2020, 20:21
                          Дополню: страница изменения пароля тоже не загружается, пока не закомментировать вызов сниппета ChangePassword. Висит прелоадер, который должен с помощью jQuery убираться. В консоли чисто. Почему-то в {block 'content'} повторно вставляется весь код страницы.
                          1. Александр Мальцев
                            Александр Мальцев
                            21.01.2020, 13:52
                            Здравствуйте! Проверьте наличие чанков и id ресурсов, которые вы используете в конструкциях вызова сниппетов.
                            1. Евгений
                              Евгений
                              02.02.2020, 15:02
                              Добрый день!
                              Потратил две недели на эту проблему, а нож в спину получил вовсе не оттуда откуда мог бы ожидать) Возможно кому-то пригодится моё решение…

                              Как оказалось всё дело было в плагине отрабатывающем по событию OnHandleRequest и обрабатывающем AJAX-запросы, а именно в строке
                              if ( $modx->context->get('key') == 'mgr' || (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') && empty($_POST) ) return;
                              далее по коду плагина вызывалaсь die().

                              Пришлось дополнять ещё одной проверкой:
                              if ( in_array($_POST['service'], ['login', 'logout']) || in_array($_SERVER['QUERY_STRING'], ['q='.$modx->makeUrl(32), 'q='.$modx->makeUrl(33)]) ) return;
                              , где 32 и 33 — это ID страниц редактирования пароля и профиля.

                              Возможно стоило просто понизить приоритет плагина, установив, например -100? С приоритетами плагинов ещё пока не разобрался и не до конца представляю их работу. Например, есть 2 плагина с приоритетами -100 и 0, плагин с приоритетом -100 выполнится раньше второго? Или я неправильно понимаю эти приоритеты?
                              1. Александр Мальцев
                                Александр Мальцев
                                02.02.2020, 15:37
                                Приоритет определяет последовательность выполнения плагинов. Т.е. они выполняются в порядке возрастания этих значений. В вашем примере, сначала выполнится плагин с приоритетом -100, затем плагин с приоритетом 0.
                                1. Евгений
                                  Евгений
                                  02.02.2020, 15:41
                                  Значит правильно понимал, спасибо
                        2. Дмитрий
                          Дмитрий
                          01.10.2019, 06:43
                          Здравствуйте. Подскажите пожалуйста куда копать?
                          При нажатии авторизация на верху сайта всплывало окно с темой шаблона для авторизации, а сейчас ничего не всплывает и не открывается, а авторизация постоянно в самом низу сайта без формы, просто квадратики для ввода логина и пароля. В этом движке итак ничего не понимаю и как тут всё работает.
                          На скрине как было и стало


                          1. Александр Мальцев
                            Александр Мальцев
                            01.10.2019, 14:01
                            Привет! А как это произошло? Тут либо компонент обновили, или что-то изменили в стилях или скриптах.
                            1. Дмитрий
                              Дмитрий
                              03.10.2019, 09:45
                              Скорее всего из за обновления компонента.
                              Я понял одно, что ничего лучше не обновлять.
                              1. Александр Мальцев
                                Александр Мальцев
                                03.10.2019, 13:50
                                Да, если не знаете систему, то конечно лучше ничего не обновлять.
                                1. Дмитрий
                                  Дмитрий
                                  03.10.2019, 14:18
                                  Подскажите пожалуйста где искать причину, вверху сайта карусель должна быть горизонтально, а она вертикальна в один ряд, или хотя бы как отключить её.
                                  1. Александр Мальцев
                                    Александр Мальцев
                                    03.10.2019, 14:42
                                    Лучше откатить версию сайта на ту дату, в которой всё работало. Такая функция обычно предоставляется на всех виртуальных хостингах. Для удаления нужно найти шаблон или ресурс в зависимости от того, как там всё это организовано, а в нём место вставки карусели. После этого удалить код, связанный с каруселью. Ну или если совсем просто, то можно просто присвоить карусели CSS свойство «display: none» на время и пытаться разобраться как там всё устроено.
                                    1. Дмитрий
                                      Дмитрий
                                      03.10.2019, 17:47
                                      Купил уже готовый сайт, мне утверждают, что это меня руки кривые, а я только устанавливаю на хостинг и уже там косяки, откатиться нет возможности.
                          2. Алексей
                            Алексей
                            06.08.2019, 17:56
                            Добрый день.
                            Подскажите пожалуйста в чём проблема.
                            Не получается повторно войти с логином/паролем зарегистрированного пользователя.

                            Первый раз при регистрации, подтверждаю почту, захожу всё без проблем. Далее выхожу из под данного пользователя и всё, повторно уже не получается войти (пишет что логин или пароль не верный, хотя этот логин и пароль приходят на почту).
                            1. Mark
                              Mark
                              20.06.2019, 19:52
                              Здравствуйте, установил регистрацию\авторизацию ровно по статье, пользователь записывается в базу и может авторизироваться. На странице куда его редиректит отображается его id(выводил с помощью [[!+modx.user.id]]), но как только юзер переходит на любую другую страницу — он разлогинивается. Id выводится только на 1 странице, но у сайта одинаковый header и надо что бы id выводился на каждой. Посоветуйте пожалуйста как это можно решить. Мучаюсь уже пол месяца и не могу решить.
                              1. Александр Мальцев
                                Александр Мальцев
                                26.06.2019, 09:53
                                Здравствуйте! В MODX это работает на уровне системы, ничего дополнительного для этого прописывать не нужно, header тут вообще не причём. Проверять нужно в режиме инкогнито, либо в другом браузере, т.к. авторизация в админке влияет на сам сайт. Ещё можно проверить контексты, в какой пользователь авторизуется, и в каком выполняется сайт. Также стоит проверить, позволяет ли браузер сохранять этому сайту куки и читать их.
                                1. Mark
                                  Mark
                                  28.06.2019, 20:56
                                  Извините что то что напряг и спасибо за ответ.
                                  Я нашел проблему — некоторые сайты автоматические редиректались с www. а некоторые нет. Так вот — авторизация не переходит с одних сайтов на вторые. В .htaccess поставил что бы все было без www и все заработало :)
                              2. Никита Витальевич
                                Никита Витальевич
                                17.01.2019, 15:06
                                Александр, добрый день! Подскажите, хотя бы направьте, куда смотреть, чтобы прикрутить к этому всему HybridAuth. Чтобы можно было авторизовываться через сервисы ВK и прочее, заранее спасибо!
                                1. Александр Мальцев
                                  Александр Мальцев
                                  23.01.2019, 14:55
                                  Добрый! HybridAuth привязывает сервисы к уже существующей учётке, для того чтобы с помощью них можно было бы просто входить. Не знаю насколько это нужное решение. Практики прикручивания ко всему этому нет. Можно в принципе всё самому написать, т.к. коды эти сервисы предоставляют. В качестве разрешений необходимо требовать email, в этом случае никаких дублей и конфликтов при авторизации не будет.
                                  1. Никита Витальевич
                                    Никита Витальевич
                                    23.01.2019, 15:03
                                    Спасибо, что ответили! То есть если я допустим через login зарегистрировался, то потом просто привязываю к своей учетке сервисы и заходить могу и через логин и пароль и через привязанный сервис? Я пока просто не пробовал это решение, но не пойму, нужно ли что-то дополнительно прописывать или все будет работать из коробки?
                                    1. Александр Мальцев
                                      Александр Мальцев
                                      23.01.2019, 15:26
                                      Да. Может из коробки будет всё работать. Надо пробовать.
                                2. Alex
                                  Alex
                                  15.06.2018, 16:25
                                  Добрый день Александр, а можете подсказать, как реализовать, при входе на сайт Кнопка «Логин», заменялась как у Вас?
                                  — Нажал на логин/регистрация, зарегистрировался.
                                  — После этого Фраза «логин/регистрация» заменилась на НИК пользователя
                                  1. Александр Мальцев
                                    Александр Мальцев
                                    15.06.2018, 17:04
                                    Добрый! В MODX не авторизированный пользователь (гость) имеет в качестве id значение 0.
                                    Поэтому, используя это можно определить, авторизирован ли пользователь или нет так:
                                    [[!+modx.user.id:gt=`0`:then=`
                                      Имя пользователя: [[!+modx.user.id:userinfo=`fullname`]]
                                    `:else=`
                                      <a href="#">Войти</a>
                                    `]]
                                    
                                    Если используете Fenom то так:
                                    {if $_modx->user.id > 0}
                                      Имя пользователя: {$_modx->user.fullname}
                                    {else}
                                      <a href="#">Войти</a>
                                    {/if}
                                    
                                  2. Анастасия
                                    Анастасия
                                    10.06.2018, 14:33
                                    Добрый день, все получилось, все работает, за исключением выхода из личного кабинета. В чем может быть причина?
                                    1. Александр Мальцев
                                      Александр Мальцев
                                      11.06.2018, 04:16
                                      Добрый день! Попробуйте выполнить действия в браузере в режиме инкогнито, т.к. авторизация в админке влияет и на фронт.
                                      1. Дмитрий
                                        Дмитрий
                                        06.08.2018, 18:55
                                        в режиме инкогнито не работает
                                    2. Ми
                                      Ми
                                      21.08.2017, 07:46
                                      Доброго времени суток! И спасибо за Вашу работу! Очень полезно и четко всё написано!
                                      Подскажите, каким образом реализовать такие функции при авторизации:
                                      1. Показать вводимый пароль или скрыть его (как у многих глаз либо открыт либо закрыт)
                                      2. Сохранить пароль, или вы используете чужой компьютер

                                      Заранее спасибо
                                      1. Александр Мальцев
                                        Александр Мальцев
                                        28.08.2017, 15:05
                                        Добрый день!

                                        Осуществить показ и скрытия пароля можно так.
                                        1. HTML код:
                                        <div class="input-group">
                                          <input type="password" class="password form-control" value="" placeholder="password">
                                          <div class="input-group-addon">
                                            <i class="sh-password glyphicon glyphicon-eye-open" style="cursor: pointer;" title="Показать пароль"></i>
                                          </div>
                                        </div>
                                        
                                        2. JavaScript сценарий:
                                        $(function(){
                                          $('.sh-password').click(function(){
                                            var input_password = $(this).closest('.input-group').find('.password');
                                            var sh_password = input_password.attr('type');
                                        	if (sh_password==='password') {
                                        	  $(this).removeClass('glyphicon-eye-open').addClass('glyphicon-eye-close').attr('title','Скрыть пароль');
                                        	  input_password.attr('type','text');
                                        	} else {
                                        	  $(this).removeClass('glyphicon-eye-close').addClass('glyphicon-eye-open').attr('title','Показать пароль');
                                        	  input_password.attr('type','password');
                                        	}
                                          });
                                        });
                                        
                                        Для запоминания пароля добавьте в форму флажок:
                                        <label class="loginRemembermeLabel">Запомнить меня
                                             <input class="loginRememberme" type="checkbox" name="rememberme" checked="checked" />
                                        </label>
                                        
                                        1. Ми
                                          Ми
                                          31.08.2017, 01:12
                                          Александр, то что надо. спасибо!

                                          Спасибо, спасибо, спасибо! Всё работает!
                                      2. Василий
                                        Василий
                                        25.07.2017, 13:08
                                        Здравствуйте, Александр!
                                        У Вас на сайте при авторизации происходит перенаправление на предыдущую страницу.
                                        Не подскажите как это реализовано?
                                        1. Александр Мальцев
                                          Александр Мальцев
                                          26.07.2017, 06:44
                                          С помощью JavaScript добавляю URL-параметр hauth_return к ссылке, имеющей класс authorization:
                                          // добавить к атрибуту href ссылки для авторизации параметр hauth_return 
                                          $('a.authorization').each(function(){
                                            $(this).attr('href','authorization?hauth_return='+location.pathname.substring(1));
                                          });
                                          
                                          Затем после успешной авторизации пользователя, вы проверяете наличие этого параметра в суперглобальном массиве $_GET. И если он есть, то формируете редирект:
                                          // $url - URL, на который надо перейти после успешной авторизации
                                          // URL формируете на основании $_GET['hauth_return']
                                          $this->modx->sendRedirect($url);
                                          
                                          1. Василий
                                            Василий
                                            26.07.2017, 14:00
                                            Спасибо!
                                            Это удобно.
                                        2. inna
                                          inna
                                          01.04.2017, 13:49
                                          при переходе на протокол https перестал работать login. Будьте добры, подскажете, какие настройки надо добавить в htaccess или еще где?
                                          1. Александр Мальцев
                                            Александр Мальцев
                                            01.04.2017, 15:56
                                            Работа компонента Login не зависит от используемого протокола. Необходимо проверить ссылки и элемент base с атрибутом href на страницах.
                                          2. Андрей
                                            Андрей
                                            02.03.2017, 01:37
                                            Отличная работа. Огромное спасибо!
                                            1. Олег
                                              Олег
                                              26.02.2017, 01:42
                                              У меня та же проблема, что в прошлом году была у Андрея — все функционирует прекрасно, кроме активации. Разве что установлено не на опенсервере, а на денвере. Точно так же захожу в заглушку мейл-сервера, открываю нужное письмо, копирую ссылку, и она ведет на errorPage.
                                              Ссылка сформирована так:
                                              http://мойдомен/моястраницаактивации?lp=Ymszdm1kMTk&lu=0KLQtdGB0YLQtdGAIDQ
                                              Проверил Base64-декодером: имя юзера действительно зашифровано во второй части, где lu, lp же выдает какой-то символьный набор, и что он означает, одному Login`у известно. Может, неправильно ссылка формируется? Активации нет, как бубном ни тряси…
                                              Может, уважаемый Андрей объявится и скажет удалось ли победить проблему, или у кого-то похожие траблы и тоже удалось решить?
                                              1. Александр Мальцев
                                                Александр Мальцев
                                                26.02.2017, 07:11
                                                Параметры lp и lu — это соответственно пароль и имя пользователя зашифрованные с помощью base64 (они используются для предотвращения атак):
                                                lp — пароль пользователя
                                                lu — имя пользователя
                                                В сниппете Register проверьте значение параметра activationResourceId. Данное значение — это id ресурса, в котором должен находиться вызов сниппета ConfirmRegister. Кроме этого, ресурс содержащий вызов сниппета ConfirmRegister должен быть доступен анонимному пользователю. А также убедитесь в том, что все сниппеты вызываются не кэшированными.
                                                Если вы копируете ссылку из заглушки, то обработайте все специальные символы. Например:
                                                &amp;
                                                необходимо заменить на:
                                                &
                                                А также проверьте URL. Он должен ввести на страницу, в которой расположен сниппет ConfirmRegister. Ещё совет: почистите кэш MODX Revo и выполняйте действия во фронтенде (в браузере) в режиме инкогнито.
                                                1. Олег
                                                  Олег
                                                  26.02.2017, 11:08
                                                  Александр, огромное спасибо!
                                                  Действительно, все дело было в спецсимволе. Все остальное настроено правильно.
                                              2. momcom
                                                momcom
                                                12.02.2017, 14:46
                                                поправьте вот на этот.
                                                [[!ResetPassword:empty=`
                                                  [[!ForgotPassword?  
                                                    &resetResourceId=`[[*id]]`
                                                    &loginResourceId=`29`
                                                    &tpl=`mylgnForgotPassTpl`
                                                    &sentTpl=`mylgnForgotPassSentTpl`
                                                    &emailTpl=`mylgnForgotPassEmail`
                                                    &emailSubject=`Восстановление пароля`
                                                  ]]`? &tpl=`mylgnResetPassTpl`
                                                         &expiredTpl=`mylgnExpiredTpl` [[-шаблон сообщения о том, что пароль уже был сброшен или срок действия ссылки истёк]] 
                                                       &loginResourceId=`29`
                                                ]]
                                                иначе используется оригинальный, англоязычный чанк lgnResetPassTpl, а так можно свой вставить.
                                                1. Александр Мальцев
                                                  Александр Мальцев
                                                  13.02.2017, 15:58
                                                  Спасибо, поправил.
                                                2. Sergey
                                                  Sergey
                                                  23.01.2017, 12:48
                                                  Александр, а как сделать так, чтобы скажем ошибки в форме восстановления пароля появлялись на новой странице? или скажем чтобы была видна только ошибка, но сама форма убиралась.
                                                  1. Александр Мальцев
                                                    Александр Мальцев
                                                    26.01.2017, 14:23
                                                    Например, это можно выполнить с помощью javascript. Для этого необходимо будет поместить следующий скрипт на страницу:
                                                    <script>
                                                    $(function(){
                                                      if ($('.text-danger .error').eq(0).text().length>0) {
                                                        $('form').hide();
                                                      } 
                                                    });
                                                    </script>
                                                    
                                                    Данный скрипт будет скрывать форму, если в элементе с классом error содержится текст (т.е. описание ошибки).

                                                    Но код лучше изменить (т.е. искать элементы не по классам и тегам, а посредством идентификаторов)… Для этого необходимо присвоить идентификаторы необходимым элементам и указать их в скрипте вместо классов и тегов.
                                                    1. Sergey
                                                      Sergey
                                                      26.01.2017, 15:28
                                                      Александр, то что надо. спасибо!
                                                  2. Maxim
                                                    Maxim
                                                    09.01.2017, 15:04
                                                    Спасибо за статью!
                                                    Не могу заставить работать снипет ResetPassword
                                                    Письмо с новым паролем приходит, но когда переходишь по ссылке выводится чанк: lgnExpiredTpl
                                                    и соответственно новый пароль не устанавливается.
                                                    Как это можно решить? с чем это может быть связанно?
                                                    Проблема вот в этом коде, RessetPassword.php:
                                                    if (empty($this->user)) return $this->modx->getChunk($this->getProperty('expiredTpl'));
                                                    if (!$this->verifyIdentity()) return $this->modx->getChunk($this->getProperty('expiredTpl'));
                                                    1. Александр Мальцев
                                                      Александр Мальцев
                                                      12.01.2017, 14:12
                                                      Попробуйте обновиться на последнюю версию, а также проверьте не вызывается ли сниппет ForgotPassword когда вы переходите на страницу для сброса пароля. А также для проверки попробуйте разместить сниппеты ForgotPassword и ResetPassword на разных страницах. Кроме этого ещё проверьте, как у вас обстоят дела с кэшированием…
                                                      1. Maxim
                                                        Maxim
                                                        12.01.2017, 14:16
                                                        Благодрю попробую, пока просто закомментировал эти условия.
                                                    2. Alexandro
                                                      Alexandro
                                                      29.12.2016, 11:36
                                                      В общем, кое-что подправил, сама регистрация работает. Только вот со стилями бутстраповскими загвоздка. Оставил в head от Бутстрапа только:
                                                      <link href="/assets/components/twbs3h5bp4/vendor/twbs/css/bootstrap.css" rel="stylesheet" type="text/css" />
                                                      И все равно, как писал выше, в боковой панели с выводом последних статей осталась активной ссылка только на верхнюю статью. Там были сперва заголовки-ссылки на 3 статьи, 1 активная, 2-3 стали неактивные. Увеличил кол-во статей на 5, и 1, 4, 5-я активные, 2-3-я по-прежнему нет. Причем, что интересно, если дважды щелкнуть мышью по этим омертвевшим ссылкам, то выделяются надписи в форме, например, на странице «Авторизация» — Вход, Имя пользователя, пароль. Никак не могу понять, как они взаимосвязаны )))) Даже пытался ссылку на стили Бутстрапа убрать из head и запихнуть прямо в контент, уж он-то вроде в шаблоне отдельно от сайдбара. Но ничего не изменилось.
                                                      Оставил в bootstrap.css только те стили, что есть на страницах и в тикетах, картина та же. Если же в head убрать ссылку на стили Бутстрапа, все приходит в норму, только сама форма по умолчанию тикетовская выглядит уж больно убого.
                                                      1. Александр Мальцев
                                                        Александр Мальцев
                                                        06.01.2017, 13:42
                                                        Не знаю, что вам посоветовать. Как отмечал выше можно создать свои необходимые стили, чтобы элементы выглядели так, как вы хотите…
                                                      2. Alexandro
                                                        Alexandro
                                                        28.12.2016, 18:05
                                                        Установил на MODX компоненты Login, Bootstrap и покорежилась верстка страниц, например, исчез фон из собственного style.css, в боковой панели с выводом последних статей осталась активной ссылка только на верхнюю статью, изменился вид и самой ссылки и пр. Т.е. стили Bootstrap мешают стилям в style.css. Для решения проблемы, вероятно, нужно оставить в bootstrap.css только те стили, которые нужны для работы Login, т.к. более ни для чего Bootstrap я не использую. Но стилей в bootstrap.css очень много, отбирать те, что фигурируют в чанках Login — дело долгое. Может, есть иное решение?
                                                        1. Александр Мальцев
                                                          Александр Мальцев
                                                          29.12.2016, 10:55
                                                          Если вам необходимо выдернуть нужные стили, то наиболее просто это сделать из файла bootstrap.css. Чтобы в этом файле осталось только необходимое (кроме базовых стилей) можно скачать пользовательскую сборку на странице getbootstrap.com/customize/. При настройке пользовательской сборки оставьте только то, что используете (например, Forms, Input groups и др)…
                                                          Если вам это не подходит, то можно создать свои CSS стили, которые будут вписываться в ваш дизайн.
                                                        2. Александр
                                                          Александр
                                                          05.12.2016, 21:37
                                                          Здравствуйте!
                                                          Такая проблема образовалась: после авторизации происходит редирект вот такой-profile?off_req=fullname
                                                          Я так понял что нужно заполнить поле fullname, но
                                                          1.отображается белый экран
                                                          2.в регистрации и профиле нет fullname
                                                          Подскажите как быть!
                                                          1. Александр Мальцев
                                                            Александр Мальцев
                                                            06.12.2016, 11:54
                                                            Редирект настраивается с помощью следующих параметров сниппета Login:
                                                            1) redirectToPrior (после успешного входа перенаправляет пользователя на предыдущую страницу).
                                                            2) redirectToOnFailedAuth (перенаправляет пользователя при неудачной авторизации на указанную страницу).

                                                            Поле fullname не является обязательным, вместо него можно, например, использовать username. Поле fullname находится в Profile, который связан с User отношением 1:1.

                                                            Если не указывать redirectToPrior или установить ему значение 0, то у вас страница с авторизацией должна просто перезагружаться и вместо чанка myLoginChunk (&logoutTpl) показываться myLogoutChunk (&logoutTpl). Проверьте, откуда у вас появляется GET параметр в URL.
                                                          2. Питон
                                                            Питон
                                                            06.08.2016, 10:30
                                                            Спасибо, все работает. Одна загвоздка — почему то не срабатывает выход авторизованного пользователя. Точнее после выхода и повтороного захода есть досуп к личному кабинету и т.п.
                                                            1. Александр Мальцев
                                                              Александр Мальцев
                                                              06.08.2016, 11:41
                                                              Авторизацию необходимо проверять в браузере, с помощью которого Вы не входите в админку. Т.к. авторизация в админке MODX влияет на авторизацию во фронтенде.
                                                              Кроме этого попробуйте очистить кэш сайта, кэш браузера и перезагрузить права доступа в менеджере MODX.
                                                              1. Питон
                                                                Питон
                                                                06.08.2016, 12:02
                                                                Спасибо за ответ. Причина в этом.
                                                                — Подскажите, а как сделать ссылку на выход отдельно, например в на главной странице сайта?
                                                                1. Александр Мальцев
                                                                  Александр Мальцев
                                                                  06.08.2016, 12:47
                                                                  Можно с помощью фильтра:
                                                                  [[!+modx.user.id:isloggedin:is=`1`:then=`
                                                                  <a href="[[~10]]?service=logout">Выход</a>
                                                                  `:else=``]]
                                                                  
                                                                  где 10 — id ресурса «Авторизация»
                                                                  1. Питон
                                                                    Питон
                                                                    06.08.2016, 13:32
                                                                    И вот с этим кодом не все ясно:
                                                                    [[!ConfirmRegister? 
                                                                      &authenticate=`1`
                                                                      &redirectTo=`4`
                                                                      &errorPage=`4`
                                                                    ]]
                                                                    где он должен быть и что есть за ресурс с номером 4?
                                                                    4
                                                                    1. Александр Мальцев
                                                                      Александр Мальцев
                                                                      06.08.2016, 13:41
                                                                      Ресурс (id), на который необходимо редиректить пользователя:
                                                                      redirectTo — после успешного подтверждения регистрации
                                                                      errorPage — при возниковении ошибки
                                                                      Это может быть любой ресурс, например, страница авторизации.
                                                                      1. Питон
                                                                        Питон
                                                                        06.08.2016, 15:55
                                                                        Спасибо, много полезной информации.
                                                                    2. Питон
                                                                      Питон
                                                                      06.08.2016, 13:29
                                                                      Спасибо за помощь еще раз. Однако с выходом все еще наблюдаются проблемы, описанные в первом вопросе. Даже после принудительного завершения (все пользователи выведены) выход не срабатывает. А будет ли пользователь сам чистить кеш? Это вопрос. Может в настройках ресурсов птички надо все проставить там где кеширование?
                                                                      1. Сергей Карпук
                                                                        Сергей Карпук
                                                                        11.09.2016, 17:24
                                                                        Также были проблемы с выходом.
                                                                        Чуть поправил чанк 'myLogoutChunk' и всё заработало:
                                                                        <div class="col-xs-6" style="margin-bottom:8px;">
                                                                            <i class="glyphicon glyphicon-off"></i> <a href="[[~29]][[+logoutUrl]]" title="[[+actionMsg]]">[[+actionMsg]]</a>
                                                                        </div>
                                                                        Где [[~29]] — ссылка на страницу авторизации.
                                                                        1. Александр Мальцев
                                                                          Александр Мальцев
                                                                          06.08.2016, 13:47
                                                                          Можно также это сделать с помощью сниппета (например, showExit):
                                                                          <?php
                                                                          if ($user=$modx->getAuthenticatedUser()) {
                                                                          $output = $modx->getChunk('exit');
                                                                          return $output;
                                                                          }
                                                                          
                                                                          Чанк exit:
                                                                          <a href="[[~10]]?service=logout">Выход</a>
                                                                          
                                                                          Вызов сниппета в необходимом месте:
                                                                          [[!showExit]]
                                                                          
                                                                          1. Александр Мальцев
                                                                            Александр Мальцев
                                                                            06.08.2016, 13:38
                                                                            Не используйете его в содержимом ресурса. Установите его, например, в шаблоне.
                                                                  2. Слава
                                                                    Слава
                                                                    05.08.2016, 12:08
                                                                    Да теперь все нормально спасибо, а там прям видно было по коду, в чанке был код для авторизации. Спасибо. Хорошая статья.
                                                                    1. Слава
                                                                      Слава
                                                                      05.08.2016, 06:43
                                                                      У вас шаблон mylgnForgotPassTpl не тот. Поменяйте пожалуйста.
                                                                      1. Александр Мальцев
                                                                        Александр Мальцев
                                                                        05.08.2016, 11:34
                                                                        Это чанк. Его заменил на правильный. Попробуй очистить кэш в MODX и перезагрузить страницу.
                                                                      2. Андрей
                                                                        Андрей
                                                                        13.07.2016, 17:03
                                                                        Здравствуйте.Мучаю авторизацию второй день.
                                                                        tplType — Тип шаблона для loginTpl и logoutTpl. Значение: modChunk.
                                                                        modChunk — его надо где то прописать или создать, не могу понять?
                                                                        Еще вопрос. Захожу на страницу с авторизацией, ввожу email и пароль и получаю сообщение
                                                                        Ваша учётная запись была заблокирована…
                                                                        Подскажите, пожалуйста где может быть ошибка?
                                                                        1. Александр Мальцев
                                                                          Александр Мальцев
                                                                          14.07.2016, 13:17
                                                                          Параметр tplType имеет значение modChunk по умолчанию, поэтому его можно не указывать. Это означает, что в качестве шаблонов будут использоваться чанки.
                                                                          Если значение шаблона хранится в файле или непосредственного в параметре tpl, то тогда это необходимо сказать сниппету посредством этого параметра.
                                                                          1. Андрей
                                                                            Андрей
                                                                            14.07.2016, 18:45
                                                                            Спасибо, с modChunk разобрался.
                                                                            Параметр activationttl в порядке.
                                                                            public function setCachePassword($password) {

                                                                            $this->modx->getService('registry', 'registry.modRegistry');
                                                                            $this->modx->registry->addRegister('login','registry.modFileRegister');
                                                                            $this->modx->registry->login->connect();
                                                                            $this->modx->registry->login->subscribe('/useractivation/');
                                                                            $this->modx->registry->login->send('/useractivation/',array($this->user->get('username') => $password),array(
                                                                            'ttl' => ($this->controller->getProperty('activationttl',180)*60),
                                                                            ));
                                                                            Сейчас создал еще одну регистрацию для проверки.ConfirmRegister перенаправляет пользователя на личный кабинет, но активации нет.
                                                                            Наделал снимков с экрана. Посмотрите что не правильно делаю?
                                                                            1. Андрей
                                                                              Андрей
                                                                              14.07.2016, 19:20
                                                                              itchief.ru/assets/uploadify/c/b/c/cbca2c39a4e60b5b7b8391cfa9460516.jpg
                                                                              itchief.ru/assets/uploadify/0/e/2/0e268f334cc62e6f315f7fa15cf52554.jpg
                                                                              itchief.ru/assets/uploadify/f/7/d/f7dd8c0e12c2e0256e9f2c47dfc2eda3.jpg
                                                                              itchief.ru/assets/uploadify/4/4/0/4409dd0c42d873c6d7019c035c5e959b.jpg
                                                                              itchief.ru/assets/uploadify/c/7/d/c7d7700dab30aec3cabcf32cf990b597.jpg
                                                                              itchief.ru/assets/uploadify/5/9/5/595ecc05fb42acccd087ec33e4094acb.jpg
                                                                              itchief.ru/assets/uploadify/a/0/2/a0208869b5a5c124aeb040dd3fc31a8d.jpg
                                                                              itchief.ru/assets/uploadify/7/5/6/756290b2de055ce6e34ba1d6c7463dd0.jpg
                                                                              itchief.ru/assets/uploadify/0/d/5/0d51b3eb633839039e034b8c8a0508aa.jpg
                                                                              itchief.ru/assets/uploadify/7/a/0/7a0134741b47323b3654ef77719014ec.jpg
                                                                              itchief.ru/assets/uploadify/0/6/0/0600e187715f5d237c69316c8b0e9fa0.jpg
                                                                              itchief.ru/assets/uploadify/5/a/6/5a6da6d5e0aee41255d994332bf7889b.jpg
                                                                              itchief.ru/assets/uploadify/b/7/e/b7ec50fa6ad97d321d9804ef3d4a08c7.jpg
                                                                              itchief.ru/assets/uploadify/9/7/a/97a6383f94f4f0456eada95b963c1934.jpg
                                                                              itchief.ru/assets/uploadify/4/d/1/4d10c8824143e97a88ae4866ad567796.jpg
                                                                              itchief.ru/assets/uploadify/0/8/0/08089d2332fc7fd5f9a350f00efc5863.jpg
                                                                              itchief.ru/assets/uploadify/b/f/8/bf8253ee8a2e0ce11a36bd399c453a2e.jpg
                                                                              itchief.ru/assets/uploadify/7/b/8/7b885453b6a4a685c6e2a329f56ea2f7.jpg
                                                                              itchief.ru/assets/uploadify/1/e/c/1ece2a0981299898026c4549ff7bed1d.jpg
                                                                              itchief.ru/assets/uploadify/1/b/9/1b9e89b106e397de2256442cc91b897c.jpg
                                                                              itchief.ru/assets/uploadify/1/0/6/106e6d53b37387c7db69e7550dffe8bc.jpg
                                                                              itchief.ru/assets/uploadify/0/7/6/0768dfcb6b8478b235859452439f62ff.jpg
                                                                              itchief.ru/assets/uploadify/e/b/2/eb2eda422d71ee1a0d81062d7bdcae0a.jpg
                                                                              itchief.ru/assets/uploadify/8/3/c/83c875d32e8670d97fc85f674bd4194e.jpg
                                                                              itchief.ru/assets/uploadify/f/8/3/f835522928d0b5c6eda42766b04591b4.jpg
                                                                              itchief.ru/assets/uploadify/b/2/4/b24db5db917473a605781ea5afaf4438.jpg
                                                                              itchief.ru/assets/uploadify/3/c/d/3cdfa56bf99ef9f9c4ac76715c37f082.jpg
                                                                              itchief.ru/assets/uploadify/7/6/f/76f254b1397628487c7667e19140c30c.jpg

                                                                              1. Александр Мальцев
                                                                                Александр Мальцев
                                                                                16.07.2016, 11:38
                                                                                Вроде бы всё верно. Для начала измени параметры сниппета ConfirmRegister redirectTo и errorPage чтобы они ввели на разные страницы. Это поможет понять произошла ошибка или был успешный редирект. Второе действие — это проверить журнал ошибок, там фиксируются ошибки сниппета ConfirmRegister.
                                                                                1. Андрей
                                                                                  Андрей
                                                                                  16.07.2016, 18:49
                                                                                  Удалил старые ошибки из error.log.Потом изменил параметры в ConfirmRegister.При подтверждении регистрации срабатывает errorPage.Ошибки новые не появились.
                                                                                  Нашел ошибки в файле
                                                                                  \core\cache\logs\install.config.2016-07-13T17.48.38.log

                                                                                  Вот ошибка
                                                                                  [2016-07-13 17:48:45] (ERROR @ D:\op_server\OpenServer\domains\localhost\modxreg1\core\xpdo\transport\xpdoobjectvehicle.class.php: 227) Could not copy D:/op_server/OpenServer/domains/localhost/modxreg1/core/packages/core/modContext/f3b540208ce8847165ed470f565aa8e5/0/ to D:/op_server/OpenServer/domains/localhost/modxreg1/index.php
                                                                                  [2016-07-13 17:48:45] (ERROR @ D:\op_server\OpenServer\domains\localhost\modxreg1\core\xpdo\transport\xpdoobjectvehicle.class.php: 227) Could not copy

                                                                                  У меня три modx установлено и у всех эта ошибка
                                                                                  Завтра поищу другую версию modx.Может в ней дело
                                                                          2. Андрей
                                                                            Андрей
                                                                            14.07.2016, 06:34
                                                                            Нашел ошибку.У меня учетная запись не активировалась.В панели управления активировал и
                                                                            ошибка пропала.Тогда почему она не активируется? У меня дома Open Server.При регистрации
                                                                            письмо отправляется.Захожу в папку Temp и прохожу по ссылке в письме.Ссылка ведет в подтверждение регистрации.Но активации не происходит
                                                                            1. Александр Мальцев
                                                                              Александр Мальцев
                                                                              14.07.2016, 13:24
                                                                              Необходимо проверить, что ссылка ведёт на ресурс, содержащий сниппет ConfirmRegister. Кроме этого необходимо обратить внимание на параметр activationttl вызова сниппета Register. Он устанавливает время жизни ссылки. По умолчанию данное значение составляет 180 минут. Может быть ссылка в письме уже не актуальна? Попробуйте проверить основные моменты, можеть что-то где-то забыли?
                                                                          3. Андрей
                                                                            Андрей
                                                                            18.05.2016, 11:01
                                                                            Александр, подскажите, пожалуйста, где черпать информацию (перечень и описания) об устанавливаемых сниппетом дополнения (в данном случае — Login) плейсхолдерах. Вроде этих:
                                                                            [[+errors]]
                                                                            [[+actionMsg]]
                                                                            [[+confirmUrl]]
                                                                            [[+username]]
                                                                            [[+loginUrl]]
                                                                            [[+request_uri]]
                                                                            [[+error.email]]
                                                                            На официальном сайте в руководстве по Login, вроде бы нет упоминаний, во всяком случае, я найти не могу.
                                                                            1. Александр Мальцев
                                                                              Александр Мальцев
                                                                              19.05.2016, 12:37
                                                                              Здравствуйте.
                                                                              Информация не всегда представлена в документации. В большинстве случаев, кроме чтения документации, необходимо ещё смотреть php-код сниппетов, а также чанки, которые устанавливаются вместе со сниппетом. В большинстве случаев этой информации хватает для того, чтобы понять какие есть плейсхолдеры.
                                                                            2. IgorM
                                                                              IgorM
                                                                              11.05.2016, 18:55
                                                                              И на mylgnForgotPassTpl обратите внимание пожалуйста
                                                                              1. Александр Мальцев
                                                                                Александр Мальцев
                                                                                14.07.2016, 13:11
                                                                                А что с ним не так?
                                                                                1. Максим
                                                                                  Максим
                                                                                  02.08.2016, 14:35
                                                                                  не тот шаблон у вас в статье
                                                                                  1. Александр Мальцев
                                                                                    Александр Мальцев
                                                                                    04.08.2016, 12:27
                                                                                    Спасибо, действительно не тот. Изменил на правильный
                                                                              2. IgorM
                                                                                IgorM
                                                                                10.05.2016, 20:19
                                                                                Здравствуйте. Добавьте пожалуйста содержимое чанка mylgnResetPassTpl, а то пропустили.)
                                                                                1. Александр Мальцев
                                                                                  Александр Мальцев
                                                                                  11.05.2016, 11:19
                                                                                  Поправил.
                                                                                2. Александр П
                                                                                  Александр П
                                                                                  04.05.2016, 05:19
                                                                                  Спасибо. Весьма своевременно, как раз делаю авторизацию. Все понятно и доступно.))))
                                                                                  Войдите, пожалуйста, в аккаунт, чтобы оставить комментарий.