Отправка на почту пароля, без активации

Добрый день!

Делаю регистрацию на сайте через Login, активацию аккаунта через email отключил (но при регистрации требую почту), поставил автогенерацию пароля.

В документации смотрю, что сгенерированный пароль на почту пользователя можно отправить, только если есть подтверждение email, &activation=`1`.

Подскажите, пожалуйста, как можно отправить сгенерированный пароль на почту, без обязательной активации аккаунта?
Александр
23 мая 2015, 15:40
modx.pro
1
4 354
0

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

Dmitry Rodionov
24 мая 2015, 09:47
0
Варианта 2, наверное: либо править код снипетов и модели Login, либо писать свою обертку для процессора добавления юзера, и то и другое требует расширенных знаний и времени.
Еще вариант взять Office (https://modstore.pro/packages/users/office) со скидкой, пока тепленький, предварительно уточнив наличие всего нужного функционала.
    Василий Наумкин
    24 мая 2015, 18:53
    0
    У Office, если юзер указал пароль при регистрации, то он приходит на почту вместе со ссылкой на активацию.
    Переходишь по ссылке и ты уже авторизован. Пользоваться паролем можно со следующей авторизации.

    Или пароль не указываешь, то тебе присваивается случайный и так же отправляется на почту.
      Константин Ильин
      19 января 2018, 11:46
      0
      Вась, версия последняя, ничего не правил, пароль введенный в ручную не приходит
      joxi.ru/8An5wPdTjPYY02

      А как обойти подтверждение пароля? т.е. зарегался сразу активный и паролем можно пользоваться

      В функции _createUser() правил(другой сайт)
      //return $this->_resetPassword($data['username'], $data['password'], $this->config['tplRegister']);
      return $this->success('Вы успешно зарегистрированы в проекте!
       Войдите в свой личный кабинет, при помощи указанных Вами логина и пароля.');
      Все регается, но не дает логиниться
        Василий Наумкин
        19 января 2018, 11:50
        0
        Этой дыркой пользовались спамеры, так что теперь указанный вручную пароль больше не приходит — юзер же должен сам его знать, раз указал.

        modx.pro/components/13850/
          Константин Ильин
          19 января 2018, 11:55
          0
          Понял.
          согласен, что он сам знает. я на другом сайте давным давно тоже убирал из письма пароль, т.к. не понимал нафиг, сам знать должен, а если не помнит восстановление есть.

          На второй вопрос я так понимаю не ответишь?) т.к. у вас новая политика в отношении платных компонентов
            Василий Наумкин
            19 января 2018, 11:58
            0
            Все регается, но не дает логиниться
            Значит, нужно еще что-то поправить.

            Я, честно говоря, не готов сейчас эту задачу решать и писать готовый ответ.
              Константин Ильин
              19 января 2018, 12:05
              0
              Значит, нужно еще что-то поправить.
              Логично:)
              Моя догадка(как выход), что нужно после создания юзера редиректить с той же ссылкой(т.е. hash login email), что в письме есть и сразу будет логиниться.

              Чтож, пошел я в редактор кода)
    Мордынский Николай
    24 мая 2015, 18:48
    -1
    Ну если ты не требуешь, подтверждения пароля значит при регистрации сразу же ставь параметр активирован 1 и все.

    И письма шли типа ваш емейл был указан при регистрации там то там то логин пароль такойто
      Александр
      24 мая 2015, 21:56
      0
      Вопрос в этом и заключался, как это сделать, отослать пароль на почту.
        Мордынский Николай
        24 мая 2015, 22:27
        +2
        В логине есть пост и пре хуки при создании юзера ставиш ему подтвержденный емейл, а письмо отправляешь пост хуком.

        rtfm.modx.com/extras/revo/login/login.tutorials/login.using-pre-and-post-hooks вот мануал там прямо пример как слать емейл.
          Пётр Молчанов
          25 мая 2015, 10:55
          5
          +2
          Лучше такое сделать плагином на событие OnUserRegister. Что-то типа такого:
          if ($modx->event->name == 'OnUserSave' && $mode=='new') {
              // генерим пароль
              $pass = $modx->user->generatePassword();
              $user->set('password',$pass);
              $user->set('active','1');
              $user->save();
              // получаем мыло
              $profile = $user->getOne('Profile');
              $email = $profile->get('email');
              // отправляем письмо
          		$messageFields = [массив каких-то данных, например, логин и пароль];
                          $message = $modx->getChunk('UserRegEmailTpl', $messageFields);
                          $modx->getService('mail', 'mail.modPHPMailer');
                          $modx->mail->set(modMail::MAIL_BODY,$message);
                          $modx->mail->set(modMail::MAIL_FROM,$modx->getOption('emailsender'));
                          $modx->mail->set(modMail::MAIL_FROM_NAME,$modx->getOption('site_name'));
                          $modx->mail->set(modMail::MAIL_SENDER,$modx->getOption('site_name'));
                          $modx->mail->set(modMail::MAIL_SUBJECT,'Благодарим за регистрацию');
                          $modx->mail->address('to',$email);
                          $modx->mail->address('reply-to',$modx->getOption('emailsender'));
                          $modx->mail->setHTML(true);
                          
                          if (!$modx->mail->send()) {
                            $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
                            return false;
                          }
                          $modx->mail->reset();
          }
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      12