Office 1.1.0 - улучшения авторизации

Подготовил и выпустил новую версию Office, в которую вошло множество исправлений и улучшений.

Список заказов miniShop2 теперь выглядит так:
Это промежуточная тема оформления из MODX 2.3, которую уже заменили на более новую (и яркую). В админке её как-то не очень восприняли, а вот для Office она подошла как родная!

Также сразу встроен Font Awesome 4.1.0 для вывода иконок и элементов навигации Ext JS и плоские кнопки от Bootstrap 3. На базе Office можно рисовать вот такие приятные интерфейсы:


Улучшение авторизации


Предыдущие версии Office предлагали очень иннвационную систему авторизации, когда нужно было только ввести свой email и перейти по ссылке из почты. Если такого ящика на сайте не было — создавался новый юзер и отправлялось письмо. То есть, даже как таковой регистрации не было.

При разработке авторизации мы исходили из следующих предположений:
  1. Люди не запоминают пароли. Чуть что — они просто делают их сброс через почту.
  2. Люди привяжут соц.сети к своей учетке — и будут входить через них, чтобы быстрее.
  3. Такая система очень надежна.
В реальности вышло немного иначе:
  1. Люди не запоминают даже свою почту.
  2. И какие соц.сервисы они привязали — тем более.
  3. Система действительно надежна, но далеко не всегда удобна.
  4. Нельзя дать временный доступ к своему аккаунту постороннему лицу
  5. Можно наплодить кучу левых аккаунтов, пока пытаешься вспомнить, через что ты заходил в прошлый раз?
  6. Заморочки с первым входом через HybridAuth, потому что не все соц.сервисы отдают почту, а она необходима для работы Office.
В общем, я как следует это всё осмыслил, и решительно переработал систему авторизации в Office.

Правила теперь такие:
  1. Авторизация и регистрация разделены на две формы. Вы можете попытаться подобрать свой email не создавая новых учеток.
  2. При авторизации и регистрации можно использовать свой пароль.
  3. Помнить пароль не нужно, как и раньше. Если вы входите без пароля — он будет сброшен и вы получите письмо с новым паролем и его активацией. Если вы регистрируетесь без пароля — вы получите автоматически сгенерированный и ссылку для активации аккаунта.
  4. Создание новых учетных записей через HybridAuth отключено! Вы должны нормально зарегистрироваться, а потом привязать соц.сервисы к своей учетке — тогда можно входить через них. Если запись ни к чему не привязана — вы получите понятную ошибку.
Таким образом, надеюсь, больше вопросов по авторизации в Office не будет. Всё понятно, удобно и красиво.

Кстати говоря, если вам все эти новшества не по душе — вы можете просто не обновлять чанк авторизации, и всё будет работать как и раньше.

Новая версия уже установлена на нашем хостинге — можно проверять, как работает:
Если всё будет хорошо — обновлю авторизацию в сообществе и в магазине. Кстати, еще я сильно доработал чанки писем — советую их обновить, чтобы вашим пользователям было еще понятнее, что происходит с авторизацией.

Все, кто уже купил Office могут обновляться, версия хоть и бета, но работает хорошо. Кстати говоря, она уже готова для работы с miniShop2 2.1.8, про который напишу позже.

Обновлено 06.07.2014


Версия 1.1.0-pl:
  • [miniShop2] Исправлено отображение имён продуктов в версиях MS2 ниже 2.1.8
  • [Auth] В форму регистрации добавлены поля «username» и «fullname», по умолчанию. Для заполнения не обязательны.
  • [Auth] Возможность использовать для входа логин вместо email.
  • [Auth] При попытке входа в неактивированный аккаунт юзер получит новое письмо со ссылкой, вместо ошибки.
  • [#3] [Auth] Если юзер зайдёт на форму авторизации через ссылку с параметром ?hauth_return=/url_на_сайте, то после авторизации он будет отправлен на указанный адрес.
  • [#2] [Profile] Исправлено удаление свежезагруженного фото в Firefox.
  • [#1] [Profile] Улучшено регулярное выражение для очистки полей профиля. Теперь поддерживаются все символы юникод, включая умляуты.
Василий Наумкин
04 июня 2014, 15:36
modx.pro
5
7 254
+5
Поблагодарить автора Отправить деньги

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

Федор
04 июня 2014, 21:55
0
Спасибо, за быстрое обновление, Василий! Теперь вопросов по хостингу у заказчика с авторизацией быть не должно, спасибо! Хотя, по мне так, просто логин по мейлу без пароля очень удобен, но к сожалению не на хостинге :(
    Василий Наумкин
    05 июня 2014, 04:07
    0
    логин по мейлу без пароля очень удобен
    Самое прикольное, что он остался — можно просто не вводить пароль и каждый раз входить по ссылке из почты.
Andrei D.
05 июня 2014, 00:02
0
Очень круто! Только сделал такую же авторизацию на старой версии office и тут на тебе — долгожданное обновление! :)
Dmitry Elert
05 июня 2014, 03:32
0
Очень в тему! Спасибо!
Николай
05 июня 2014, 12:51
0
Пакет уже обновлён до последней версии: office-0.9.0-pl2
Я что то делаю не так?
    Василий Наумкин
    05 июня 2014, 15:06
    0
    Всего скорей.

    Если ты покупал дополнение в магазине — создай там вопрос в поддержке, разберемся.
      ic
      ic
      10 июня 2014, 05:29
      0
      Такая же история, не обновляется. Говорит установлена последняя (1.0.0 rc2).
        Василий Наумкин
        10 июня 2014, 06:20
        0
        Создавай тикет в поддержке магазина.
          ic
          ic
          13 июня 2014, 16:57
          0
          Тикет это что? fkn Тикет?
          Я задал вопрос в поддержке.
          Ни ответа, ни привета.
    ic
    ic
    13 июня 2014, 17:08
    0
    Чувак, где support?
    Расскажи нам тут всем, про office обновления и все такое?
    Как обновляться? Как использовать штуки за $50.
    Как дела вообще.
      Василий Наумкин
      13 июня 2014, 17:37
      0
      За сегодня был ровно один вопрос про Office

      Если это был ты — то круто спросил, прям всю информацию выдал, чтобы я мог помочь.

      Ну и я там тебе ответил, что ты купил дополнение для одного ключа, а используешь совершенно другой. Естественно, что магазин не отдаст обновление для сайта, который не покупал дополнение в магазине.

      P.S. Ты сам спросил об этом публично, вот я тебе так же и отвечаю.
        ic
        ic
        13 июня 2014, 18:40
        -3
        Чувак, я просто поменял домен вроде. Я купил и не торгую. Я не умею доказывать, что я не спиздел. Чота неработает вроде.
        ic
        ic
        13 июня 2014, 18:46
        -1
        так ты скажи как с тобой связаться за полторы штуки, или сделай кнопку «заебись».
          Василий Наумкин
          13 июня 2014, 18:49
          +1
          Я так понимаю, что ты уже получил дополнение за полторы штуки?

          Для получение обновления должен быть использован ключ, для которого оно было куплено. Если не выходит его использовать — ну не судьба.

          Будешь дальше продолжать поясничать — отключу от коллектива. Поддержка в магазине, а здесь — приличное сообщество.

          А вообще — закусывать надо в праздники.
            Это сообщение было удалено
      Василий Наумкин
      13 июня 2014, 18:17
      +2
      Эй, чувак, ну где реакция?
      Я те написал 40 минут назад, в свой выходной — а ты молчишь!
      Нормально дела вообще.
        ic
        ic
        13 июня 2014, 18:41
        -3
        Где-то в марте купил. Этого достаточно?
        Николай
        13 июня 2014, 18:43
        0
        Василий, наверное нужно лично позвонить человеку и спросить как у него дела :)
          ic
          ic
          13 июня 2014, 18:47
          0
          точно ;)
Алексей Ерохин
05 июня 2014, 16:32
0
При свежей установке подтягивает hybridAuth 0.8.6 хотя свежая версия 0.8.7
    Василий Наумкин
    05 июня 2014, 16:37
    0
    Это потому что 0.8.6 не была помечена в репозитории, как устаревшая.

    Поправил, спасибо! Сейчас ты можешь просто обновить HA на 0.8.7.
Это сообщение было удалено
Andrei D.
20 июня 2014, 20:22
0
А как добавить свои поля в форму регистрации?
Добавляю в tpl.Office.auth.login —
<input type="text" name="fullname" class="form-control" value="" />
и ничего не происходит
    Василий Наумкин
    21 июня 2014, 08:05
    +1
    Регистрации нужен только email и пароль. Всё остальное — в редактировании профиля.
      Andrei D.
      21 июня 2014, 17:06
      0
      Спасибо! Вот тебе неймется в отпуске работать)
      Andrei D.
      04 июля 2014, 10:10
      0
      Василий, можешь, пожалуйста, мне ответить на email по поводу разработки компонента для tickets
Николай
04 июля 2014, 13:10
0
Почему Я всегда смотрел на office и получал чёткую ассоциацию с Microsoft office? :D Не думал, что это для авторизации.
Василий несколько вопросов по компоненту:
Можно ли сделать чтобы через соц сети могли входить только уже зарегистрированные через них, а для остальных эта возможность была недоступна?
Можно ли при регистрации делать аккаунт неактивным?
Есть ли возможность отправки одного письма при создании аккаунта и другого при его активации (насколько это сложно?)
Авторизация в несколько контекстов имеется?
Добавление в несколько групп при создании аккаунта?
Данке
    Василий Наумкин
    04 июля 2014, 16:48
    0
    Все дополнения можно беплатно протестировать на test.modx.pro

    Если я не отвечаю в комментариях не нужно мне писать на почту, мол эй давай ответь быстро. Бесит.
      Николай
      05 июля 2014, 09:26
      0
      Непонятна работа с аватарами.
      Например я здесь загрузил новую аватару — появилась и пропала надпись, что аватара загружена, но на экране осталась старая. После обновления страницы появилась новая аватара. Пользователю это будет непонятно и он будет загружать аватары до посинения.

      Затем нажал удалить изображение — появилась и пропала надпись, что изображение удалено. Висит старое изображение даже если обновляться. Наверное не стоит вызывать некешированным photo.
        Василий Наумкин
        05 июля 2014, 09:36
        0
        Проверь как работает вот здесь — id.modx.pro

        По моему, нет проблем. Может у тебя там есть в консоли ошибки javascript? Ты посмотри, пожалуйста.
          Николай
          05 июля 2014, 09:42
          0
          Зашел с другого браузера: при удалении картинка сразу меняется. ок.
          А при загрузке меняется после нажатия кнопки сохранить. Ошибок не выдаёт.
          Это в Хроме.
          А в firefox картинка удаляется только чисткой кэша каждый раз.
            Николай
            05 июля 2014, 09:54
            0
            Это я на id.modx.pro всё делал.
            Василий Наумкин
            05 июля 2014, 10:04
            0
            У меня в firefox тоже работает, могу видео записать и показать.
              Николай
              05 июля 2014, 10:06
              0
              Спасибо не надо. Видимо у меня какие-то надстройки в браузере так влияют.
                Василий Наумкин
                05 июля 2014, 10:11
                0
                Похоже, фокус в том, что если загрузить картинку в Firefox и сразу попробовать её удалить, то поле с файлом картинки не очищается, и она как-бы отправляется заново.

                А в хроме очистка нормально работает. Наверное, немного юзеров будут загружать и сразу удалять картинку, но на будущее себе задачу повесил.
                  Николай
                  05 июля 2014, 10:37
                  0
                  Я так и не понял: При загрузке изображение сразу должно меняться или после нажатия кнопки «Сохранить»?
                    Василий Наумкин
                    05 июля 2014, 10:45
                    0
                    Загрузка изображения происходит только после нажатия «сохранить».

                    А выбор картинки — это не загрузка, а выбор картинки.
                      Николай
                      05 июля 2014, 10:57
                      0
                      Понял.
                      Николай
                      06 июля 2014, 05:24
                      0
                      А как в комментариях использовать указанную в профиле аватару?
                      Сейчас так
                      [[!TicketComments? &gravatarIcon=`http://сайт.ру/assets/images/enso_24.jpg`]]
                      <img src="[[+avatar]]" class="ticket-avatar" alt="" />
                      Менял на
                      [[!+photo:default=`[[+gravatar]]?s=24&d=http://сайт.ру/assets/images/enso_24.jpg`]]
                      выводит 100 на 100
                      Василий Наумкин
                      06 июля 2014, 05:37
                      0
                      А как должно? У тебя же указано: вывести фото. а если его нет, то граватар размером 24х24 по такому-то адресу.

                      Photo грузится размером 100х100, по умолчанию — никакой дополнительной обработки у тебя нет.
                      Николай
                      06 июля 2014, 05:41
                      0
                      т.е. надо через phptrumbon чтоли обрезать? Или как логичней?
                      Василий Наумкин
                      06 июля 2014, 05:44
                      0
                      Логичнее настроить размер аватарки в CSS — указать, что этот блок 24х24.

                      Запускать сниппет обрезки на каждый комментарий (а их может быть очень много) просто расточительно.
                      Николай
                      06 июля 2014, 05:46
                      0
                      Точно))
        Николай
        06 июля 2014, 09:07
        0
        кажись последний вопрос: в настройках опция Email как имя пользователя — ставлю Нет все равно подставляет в Графу Имя e-mail.
        Как-то не хочется светить почты пользователей, а много где username стоит как alt=«username», а может и ещё где теперь уж не вспомнить.
        Может оставлять в этом поле то, что до знака @, а остальное вырезать? И имя понятное будет и почта нигде не светится.
          Василий Наумкин
          06 июля 2014, 09:58
          0
          Email как имя пользователя — ставлю Нет все равно подставляет в Графу Имя e-mail.
          Если эта опция отключена, то юзер может изменить своё имя в редактировании профиля. Оно не будет заменяться принудительно на email.

          Но когда он регистрируется, username нет, поэтому туда подставляется email. Кстати говоря, можно в форме регистрации добавить поле username, тогда оно должно добавляться сразу.

          Может оставлять в этом поле то, что до знака @, а остальное вырезать? И имя понятное будет и почта нигде не светится.
          Плагином на сохранение юзера можно делать что угодно, в том числе и менять имя.

          Подумаю, возможно стоит сделать так по умолчанию.
            Николай
            06 июля 2014, 10:26
            0
            Ещё в профиле в en контексте остаются кириллицей кнопка Обзор и надпись Файл не выбран. Где поменять не нашёл.
              Василий Наумкин
              06 июля 2014, 11:18
              0
              Смешно.

              Это браузер рисует, в зависимости от языка твоей операционной системы.
                Николай
                06 июля 2014, 11:21
                0
                Ну кто ж знал :-)
                  Василий Наумкин
                  06 июля 2014, 11:33
                  0
                  А ты никогда не замечал, что чекбоксы, селекты и инпуты в разных браузерах отображаются по разному? Поле выбора файла — это как раз инпут.

                  Есть отдельный вид геморроя верстальщиков — сделать так, чтобы все эти элементы везде выглядели одинаково, невзирая на браузер.
                    Николай
                    06 июля 2014, 11:41
                    0
                    Замечал, но в голове с языком как-то не связывалось
          Василий Наумкин
          06 июля 2014, 13:39
          0
          Обновись на последнюю версию, я там добавил всё, что нужно.

          Описание на этой же странице, в конце заметки. Для работы username и fullname нужно обновить чанк формы авторизации.
            Николай
            06 июля 2014, 15:23
            0
            Изменения только в форме регистрации? Я её вынес на отдельную страницу просто. Вот всё содержимое чанка:
            <div class="row" id="office-auth-form">
            	<div class="col-sm-offset-2 col-md-8 office-auth-register-wrapper">
            		<h4>[[%office_auth_register]]</h4>
            		<form method="post" class="form-horizontal" id="office-auth-register">
            			<div class="form-group">
            				<label for="office-auth-register-email" class="col-md-4 control-label">[[%office_auth_register_email]]</label>
            				<div class="col-md-8">
            					<input type="email" name="email" placeholder="" class="form-control" id="office-auth-register-email" value="" />
            					<p class="help-block"><small>[[%office_auth_register_email_desc]]</small></p>
            				</div>
            
            				<label for="office-auth-register-password" class="col-md-4 control-label">[[%office_auth_register_password]]</label>
            				<div class="col-md-8">
            					<input type="password" name="password" placeholder="" class="form-control" id="office-register-form-password" value="" />
            					<p class="help-block"><small>[[%office_auth_register_password_desc]]</small></p>
            				</div>
            
            				<input type="hidden" name="action" value="auth/formRegister" />
            				<div class="col-sm-offset-4 col-sm-8">
            					<button type="submit" class="btn btn-danger">[[%office_auth_register_btn]]</button>
            				</div>
            			</div>
            		</form>
            	</div>
            </div>
            Заполняю всё, кроме пароля — пишет пользователь не найден. Пользователь создаётся, письмо не приходит. Или я опять чёго-то не допонял?
            ps редирект сам будет работать или к ссылке надо дописывать hauth_return=..id…? (просто вчера сделал редирект, убирать или как?)

            ps вывел чанк tpl.Office.auth.login обновленный. Заполнил все поля регистрации, тоже Пользователь не найден.

            Со старым чанком тоже не работат.
              Николай
              06 июля 2014, 15:56
              0
              Откатил БД. Заменил контроллеры на старые — заработало.
              Василий Наумкин
              06 июля 2014, 19:00
              1
              0
              Прокралась ошибка — поторопился я. Исправил и перезалил пакет, можно еще разок обновиться.

              Редирект работает просто — нужно зайти на страницу с формой авторизации по ссылке с указанным возвратом, например:
              http://mysite.ru/auth.html?hauth_return=/thispage.html

              Чтобы возвращать на текущую страницу, делаем так:
              http://mysite.ru/auth.html?hauth_return=[[~[[+id]]]]
                Николай
                06 июля 2014, 19:08
                0
                Я прописывал
                /authorization/?hauth_return=[[*id]]
                И ловил уже
                if ($modx->context->key == 'ru' && $modx->resource->id == '220' && $modx->user->isAuthenticated($modx->context->key)) {
                    $id=$_GET['hauth_return'];
                    $url=$modx->makeUrl($id);
                    $modx->sendRedirect($url);
                }
                Я хз, как прописать ссылку, поэтому использую id :)
                Завтра обновлюсь, спасибо.
                  Василий Наумкин
                  06 июля 2014, 19:12
                  0
                  [[*id]] не совсем верно использовать, ведь юзер может уходить на авторизацию с «виртуальной» страницы, типа modx.pro/users/630/comments/.

                  Если указать id, то он вернётся на modx.pro/users/, а не на /users/630/comments/.
                    Николай
                    06 июля 2014, 19:14
                    0
                    А как тогда надо
                    [[*alias]]
                    ?
                      Василий Наумкин
                      06 июля 2014, 19:17
                      0
                      Если включен парсер pdoTools, то можно просто
                      auth.html?hauth_return=/[[#request.q]]
                      Иначе своим сниппетом выводить $_REQUEST['q'].
                        Николай
                        06 июля 2014, 19:18
                        0
                        Понял. Спасибо.
                        Николай
                        07 июля 2014, 07:18
                        0
                        Парсер не учитывает в каком контексте находится документ (вырезает ru/) ну это ладно.

                        Если пользователь уже существует выдается ошибка office_auth_err_user_exists (вместо текста)

                        Если при авторизации использовать Логин вместо e-mail всплывает ошибка введите e-mail.

                        Если не вводить логин при регистрации в username опять попадает весь e-mail.
                        Василий Наумкин
                        07 июля 2014, 07:57
                        0
                        Парсер не учитывает в каком контексте находится документ (вырезает ru/) ну это ладно.
                        Он и не должен ничего учитывать, он выдаёт то, что запросил пользователь.

                        Если пользователь уже существует выдается ошибка office_auth_err_user_exists (вместо текста)
                        В текущей версии нет такой фразы вообще нигде. А вот office_auth_err_username_exists — есть. Это или кэш, или у тебя старый контроллер.

                        Если при авторизации использовать Логин вместо e-mail всплывает ошибка введите e-mail.
                        Естественно, email обязателен, там в форме и звездочка рядом с ним. Куда иначе отправлять ссылку на активацию и сброс пароля — на логин?

                        Если не вводить логин при регистрации в username опять попадает весь e-mail.
                        Естественно, а что туда может попадать? Если я обрежу всё до знака @, а потом окажется, что такой username уже есть в БД — мне нужно выдать ошибку, что такой логин существует. А юзер спросит, что за фигня, я вообще не указывал никакой логин, как он может существовать?

                        Именно поэтому, в форме регистрации написано
                        Вы можете указать отдельный логин, чтобы не использовать email для входа.
                        Не указываете — дело ваше.
                        Николай
                        07 июля 2014, 08:07
                        0
                        Да, контроллеры не обновились почему-то
                        Николай
                        07 июля 2014, 09:39
                        0
                        Вроде всё работает.

                        Не могу только понять почему в комментах аватары всегда берутся с gravatar при стандартном вызове комментариев.
                        В чанке
                        <img src="[[+photo:default=`[[+avatar]]`]]" class="ticket-avatar" width="24px" height="24px" />
                        Если выводить комменты так
                        [[!pdoPage?
                            &element=`getComments`....
                        то аватара грузится из профиля если есть, если нет — с gravatar.
                        Василий Наумкин
                        07 июля 2014, 10:08
                        0
                        Обновись на последнюю версию — там можно использовать просто [[+avatar]], без условий.

                        Вот коммит.
                        Николай
                        07 июля 2014, 10:15
                        0
                        Крутяк. У всех аватарки появились. Благодарю!
                        Николай
                        30 июля 2014, 14:04
                        0
                        После обновления что-то с языком стало:
                        Снимаю галку в ru контексте с подписаться на тикеты в разделе сообщение: tickets_section_unsubscribed
                        Ставлю галку: You will no longer receive notifications about new tickets in this section.

                        При этом всё работает — отписывает, подписывает. Забыл сразу отписать тк не пользовался а тут понадобилось.
                        Василий Наумкин
                        30 июля 2014, 14:08
                        0
                        Какая может быть связь с Office?
                        Николай
                        30 июля 2014, 14:18
                        0
                  Николай
                  10 июля 2014, 04:52
                  0
                  Василий, снова я :)
                  Не работает ручная смена пароля в профиле. Вводишь пароль — Сохранить — пишет сохранено все ок. При попытке войти выдаёт
                  Ошибка при входе в систему: Неправильное имя пользователя или пароль. Проверьте введённые данные и попытайтесь снова.
                  Если меняю пароль пользователю через админку, всё ок.
                    Николай
                    10 июля 2014, 05:03
                    0
                    Судя по тому, что в БД значение пароля никак не изменяется после его сохранения в профиле, — он просто не сохраняется.
                    Василий Наумкин
                    10 июля 2014, 09:37
                    0
                    У меня все отлично работает, в успешном сообщение должен показываться новый пароль. Может, чанк старый?

                    Создай тикет в поддержке, укажи там сайт и доступ к админке — посмотрю, в чем дело.
                      Николай
                      10 июля 2014, 13:22
                      0
                      Всё решили. Мой косяк.
      Wassi Wassinen
      26 февраля 2015, 01:14
      0
      Василий, отчего может возникать такая ситуация — несколько контекстов (1,2,3), являющихся субдоменами. На всех авторизация через Офис. Авторизует на всех контекстах. Но выходит только на двух. loginCntext=`1` addContext=`2,3`. session_cookie_domain = .site.pro
        Wassi Wassinen
        26 февраля 2015, 01:40
        0
        Поправка — выходит только в текущем контексте.
      Олег Песчанский
      24 марта 2015, 09:23
      0
      Не хватает запятых в текстах под полями авторизации и регистрации (класс help-block).

      «Если вы не помните свой пароль — просто оставьте это поле пустым и вы получите новый, вместе со ссылкой на активацию.» Нет запятой перед «и вы получите».

      «Вы можете указать свой пароль, или оставить это поле пустым и тогда он будет сгенерирован автоматически.» Нет запятой перед «и тогда он».

      Будет лучше без ошибок :)
      Олег Песчанский
      07 апреля 2015, 19:13
      0
      У меня сниппет [[!officeAuth? &groups=`Users` &HybridAuth=`0`]] подключен прямо на странице тикета, что бы форма авторизации сразу отображалась, и не нужно было никуда переходить. И она корректно отображается. Но нужные js-скрипты подгружаются только первый раз после очистки кэша! То есть, если страницу обновить, то этих скриптов уже нет, и как следствие — форма отправляется не аяксом.

      Если сделать этот тикет некэшируемым, все работает, как и положено.

      Почему так может быть?
      shiyankin
      20 августа 2015, 10:11
      0
      Здравствуйте, а возможно ли сделать, чтобы авторизация проходила только по email? Иными словами, как сделать, чтобы при смене email в профиле, email записывался в поле логина.
        Воеводский Михаил
        20 августа 2015, 16:39
        0
        Это возможно сделать маленьким плагином на событие OnUserSave или OnUserFormSave (точно не помню).
          shiyankin
          20 августа 2015, 16:41
          0
          А не могли бы дать пример попробовать?)
            Воеводский Михаил
            20 августа 2015, 16:50
            1
            0
            <?php
            switch ($modx->event->name) {
            	case 'OnBeforeUserFormSave':
            		if ($user->get('username') <> $user->Profile->get('email')) {
            			$user->get('username') = $user->Profile->get('email');
            		}
            		break;
            }
            Код не проверял, могут быть ошибки.
      Серьёзный
      31 августа 2015, 15:57
      0
      Вопрос:
      Можно ли отправлять письмо о регистрации, если включить создание нового пользователя при авторизации через соц сеть?
        Василий Наумкин
        31 августа 2015, 16:00
        0
        Можно!

        Только придётся самостоятельно написать плагин для этого на событие создания пользователя =)
          Серьёзный
          31 августа 2015, 16:02
          1
          0
          Спасибо, код плагина вотЖ
          <?php
          switch ($modx->event->name) {
              case 'OnUserSave':
                  $tpl = $modx->getOption('emailTpl',$scriptProperties,'tpl.reg_user');
                  if ($mode == 'new') {
                      $message = $modx->getChunk($tpl,array_merge($user->toArray(),$user->Profile->toArray()));
                      $email = $modx->getOption('admin_email');
                      
                      $modx->getService('mail', 'mail.modPHPMailer');
                      $modx->mail->set(modMail::MAIL_BODY,$message);
                      $modx->mail->set(modMail::MAIL_FROM,'noreply@from.ru');
                      $modx->mail->set(modMail::MAIL_FROM_NAME,'Сервис уведомлений');
                      $modx->mail->set(modMail::MAIL_SUBJECT,'Новый пользователь');
                      $modx->mail->address('to',$email);
                      $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);
                      }
                      $modx->mail->reset();
                  }
                  break;
          }
          на что нужно заменить admin_email чтобы туда вставлялся email человека, который регнулся?

          Заранее благодарю!
      Любовь
      07 сентября 2015, 19:26
      0
      Добрый вечер! Пытаюсь понять нужен ли мне Office.
      Есть ли возможность добавить кучу своих полей (не по умолчанию) в личный кабинет? Или нужно писать свое дополнение с отдельной таблицей пользователей? Речь идет о юридических лицах, у которых будет много данных (ИНН, КПП, адрес и т.д. + возможность загружать документы).
        Василий Наумкин
        07 сентября 2015, 19:34
        0
        Ну вот id.modx.pro — это Office.

        Если не нужна будет фильтрация потом по этим параметрам, то всё делается из коробки.

        Загружать документы — это в любом случае что-то придумывать, но с Office мне это не кажется сложным.
          Любовь
          07 сентября 2015, 19:37
          0
          Я не совсем поняла — можно будет добавить сколько угодно своих полей? Помимо тех, что из коробки? И как быть с загрузкой и хранением файлов? Это можно там организовать или есть другое дополнение для этого? Пока фильтрация вроде не нужна.
            Василий Наумкин
            07 сентября 2015, 19:40
            0
            Полей можно добавить сколько угодно.

            Для загрузки и привязки файлов к юзеру придётся что-то программировать. Я таких готовых дополнений не знаю.

            По идее, это решается несложным плагином на сохранение профиля.
              Любовь
              07 сентября 2015, 20:43
              0
              У Uploadify нет такой возможности? Отображать в личном кабинете файлы, которые загрузил сам пользователь? Или у него нет интеграции с Office?
                Василий Наумкин
                07 сентября 2015, 21:58
                0
                Нет, Uploadify нужен несколько для другого.

                Я когда писал, что
                таких готовых дополнений не знаю
                — не шутил. Действительно, ничего такого не знаю.
      Сергей Шлоков
      06 февраля 2016, 13:29
      0
      Василий, а где можно почитать про удаленную авторизацию как на modx.pro? У Office есть 2 сниппета — officeRemoteAuth и officeRemoteServer. Видимо как раз для этого. А как они работают нигде не описано.
          Сергей Шлоков
          06 февраля 2016, 13:33
          0
          О, спасибо. А я уже привык на docs.modx.pro сразу лезть, если тут ничего не нашёл.
            Василий Наумкин
            06 февраля 2016, 13:35
            0
            Для Office только недавно начал собирать все заметки, еще не закончил.
          Сергей Шлоков
          06 февраля 2016, 13:36
          0
          И ещё вопросик… На modx.pro и id.modx.pro профили одинаковые. Они синхронизируются или один подгружается из другого?
            Василий Наумкин
            06 февраля 2016, 13:38
            0
            Это один сайт.

            На других синхронизируются при логине.
              Сергей Шлоков
              06 февраля 2016, 13:42
              0
              Ясно. Т.е. это просто другой контекст. А bezumkin.ru профиль показывает с id.modx.pro.
                Василий Наумкин
                06 февраля 2016, 13:43
                0
                Нет, при авторизации bezumkin.ru создаёт или обновляет юзера у себя, и дальше работает с ним, родными механизмами MODX.

                В случае смены модели авторизации ничего не сломается и никто не потеряется.
                  Сергей Шлоков
                  06 февраля 2016, 13:46
                  0
                  Странно, у тебя написано
                  Войти через id.modx.pro
                  и когда авторизуешься, при нажатии на «Настройки» профиля перекидывает на id.modx.pro
                    Василий Наумкин
                    06 февраля 2016, 13:54
                    0
                    Поэтому такую авторизацию и называют «удалённой».

                    Но это не отменяет того факта, что юзер создаётся на каждом сайте и тот логинит его уже сам.
                    Центр авторизации только подтверждает правильность логина и пароля, и выдаёт информацию из профиля.

                    id.modx.pro не может авторизовать тебя на bezumkin.ru, понимаешь? Это может сделать только сам bezumkin.ru, а для этого у него должен быть такой юзер.
      Денис Дыранов
      28 сентября 2016, 19:58
      0
      Кстати говоря, если вам все эти новшества не по душе — вы можете просто не обновлять чанк авторизации, и всё будет работать как и раньше.
      Как быть, если я впервые поставил office уже с новыми чанками и эти новшества мне не по душе? :-) Хочу как на makimaki.ru, чтоб только email. Может где-то остался код старого чанка авторизации?
        Василий Наумкин
        29 сентября 2016, 08:30
        1
        +1
        Просто форма с одним email, без пароля — вот так:
        <form action="" method="post">
            <input type="hidden" name="action" value="auth/formLogin"/>
            <h4>Вход</h4>
            <div class="form-group">
                <input type="email" name="email" placeholder="email">
            </div>
            <button class="btn btn-success">Отправить</button>
        </form>
          Денис Дыранов
          29 сентября 2016, 11:49
          0
          Сработало так:

          <div class="row" id="office-auth-form">
          <form method="post">
              <input type="hidden" name="action" value="auth/formLogin"/>
              <h4>Вход</h4>
              <div class="form-group">
                  <input type="email" name="email" placeholder="email">
              </div>
              <button type="submit" class="btn btn-success">Отправить</button>
          </form>
          </div>
          Но как сделать, чтоб тут же регистрировался пользователь, email которого не найден?
            Василий Наумкин
            29 сентября 2016, 12:00
            0
            Попробуй просто убрать
            <input type="hidden" name="action" value="auth/formLogin"/>
              Денис Дыранов
              29 сентября 2016, 12:16
              0
              Работает, спасибо.

              Теперь я хочу вызвать окно, для подтверждения регистрации нового пользователя. Как я понял нужно пилить js и там менять auth/formLogin на auth/formRegister если пользователь не найден. Как лучше поймать этот момент?
              if (response.message = 'Пользователь не найден') {...}
              Можно лучше?
      Михаил
      15 сентября 2017, 14:29
      0
      А есть ли механизм восстановления пароль пользователем? Просто искал не нашёл… Очень часто спаршивают и вот нужно сделать…
        Андрей
        15 сентября 2017, 17:11
        0
        Есть, если оставить поле пароля пустым в форме логина, при нажатии на Вход на почту придёт новый пароль и ссылка активации.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
109