Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Вывод определенного mail при отправке сообщения с формы обратной связи!?

Автор muldyРаздел Custom макросы

Ответов: 1
Просмотров: 1854
Последний ответ 13 Сентября 2013, 11:11:59
от admin
Отправка вложения по своему e-mail

Автор SumrakrndРаздел Custom макросы

Ответов: 2
Просмотров: 1135
Последний ответ 18 Апреля 2016, 15:34:45
от Sumrakrnd

0 Пользователей и 1 Гость просматривают эту тему.

*

kroxa

  • *
  • 21
  • +2/-0
    • Просмотр профиля
    • vilka.by
umi стандартно восстанавливает пароль на основе логина, однако не все пользователи помнят свой логин.
в этом большая проблема.
необходимо добавить возможность восстановления пароля на основе введенного пользователем e-mail
сейчас используется tpl версия (начал править /tpls/users/forget/default.tpl)
и плавно перешел к classes\modules\users\__forget.php
строка 25:
$sel = new selector('objects');
$sel->types('object-type')->name('users', 'user');
$sel->where('login')->equals($forget_login);
$sel->where('e-mail')->equals($forget_email);
$sel->option('or-mode');
$sel->limit(0, 1);

или такой подход неверен, нужно как-то по другому делать?

*

kroxa

  • *
  • 21
  • +2/-0
    • Просмотр профиля
    • vilka.by
Re:восстановить логин и пароль по e-mail
« Ответ #1 : 02 Июня 2011, 17:01:55 »
по первому из-за чего-то не получилось зато заработало в таком виде, что очень удобно. странно что до сих пор этого не было сделано в UMI

         $sel = new selector('objects');
         $sel->types('object-type')->name('users', 'user');
         $sel->where('login')->equals($forget_login);
         $sel->limit(0, 1);

         if($sel->first) {
            $user_id = $sel->first->id;
         } else {
            $sel = new selector('objects');
            $sel->types('object-type')->name('users', 'user');
            $sel->where('e-mail')->equals($forget_login);
            $sel->limit(0, 1);

            if($sel->first) {
               $user_id = $sel->first->id;
            } else {
               $user_id = false;
            }
         }

теперь встала задача, как обеспечить логин, не только по логину, но и по e-mail пользователя
т.е. указываем e-mail и пароль, но что-то в login_do() разобраться не могу:(
« Последнее редактирование: 02 Июня 2011, 17:13:19 от kroxa »

*

kroxa

  • *
  • 21
  • +2/-0
    • Просмотр профиля
    • vilka.by
Re:восстановить логин и пароль по e-mail
« Ответ #2 : 02 Июня 2011, 18:20:04 »
для логина по e-mail пришлось переписать checkLogin() - вернее написал свой:

   public function checkLogin($login, $password) {
      $sel = new selector('objects');
      $sel->types('object-type')->name('users', 'user');
      $sel->where('login')->equals($login);
      $sel->where('password')->equals(md5($password));
      $sel->where('is_activated')->equals(true);
      if($sel->first)  {
         return $sel->first;
      }
      $sel = new selector('objects');
      $sel->types('object-type')->name('users', 'user');
      $sel->where('e-mail')->equals($login);
      $sel->where('password')->equals(md5($password));
      $sel->where('is_activated')->equals(true);
      $sel->limit(0, 1);
      return $sel->first;
   }

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:восстановить логин и пароль по e-mail
« Ответ #3 : 02 Июня 2011, 19:57:41 »
я так понимаю тут больше не вопрос, а ваш вариант решения авторизации и восстановления пользователя не только по логину, но и по e-mail.

Судя по коду я именно так его и менял когда надо было привязаться не только к логину но и к e-mail. Единственное чтобы добавил, новый функционал надо вынести в кастомные макросы прописать на них кастомные права, иначе при обновлении все ваши правки затрутся)

может имеет смысл на основе ваших постов написать тему и разместить её на umihelp.ru со ссылкой на вас? возьметесь за такое?

*

kroxa

  • *
  • 21
  • +2/-0
    • Просмотр профиля
    • vilka.by
Re:восстановить логин и пароль по e-mail
« Ответ #4 : 03 Июня 2011, 11:44:57 »
сначала был вопрос, но ждать не хотел, вот сам и сделал кое-как.
я бы написал эту заметку, однако не владею вопросом как именно оформляются "кастомные макросы", т.е. я в umi разбираюсь  только по необходимости. Может быть кинете ссылку как это оформляется.
так что оформить могу только то, что есть сейчас, если подскажете про "кастомные макросы", сделаю "правильно".

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:восстановить логин и пароль по e-mail
« Ответ #5 : 03 Июня 2011, 12:25:28 »
там в принципе ничего сложного нет, я на примере вашей задачи распишу в статье и заодно про вашу доработку напишу и покажу как её вынести в отдельные макросы, чтобы она не перезатиралась при обновлении.

Отпишите в личку как вас упоминать в статье, ссылкой, ником или еще как.