Office 1.1.0 - улучшения авторизации. Modx неправильное имя пользователя или пароль


постоянно слетает пароль в MODX

modx pass error

Одна из проблем, которая возникла при разработке сайте с которой я столкнулся - после переноса сайта на выделенный сервер пароль администратора постоянно слетал. И дело не в том, что пароль постоянно сбрасывается юзерами, а проблема была с сервером. После каждой перезагрузки сервера пароль к админке не подходил. Как итог, MODX выдает ошибку "Неправильное имя пользователя или пароль. Пожалуйста, проверьте введённые данные и попытайтесь снова."

 

Решить проблему удалось созданием нового пользователя с правами администратора. И заходить уже через него. Для этого перейдите в "Управление" -> "Пользователи". На странице укажите все данные нового юзера и не забудьте поставить неограниченные права:modx pass error

И во вкладке "Права доступа" добавьте группу Administrator и роль Super User.modx pass login После этого можно смело логиниться под новым пользователем.

Как восстановить пароль администратора

Если вы хотите для начала восстановить пароль администратора, в сети есть несколько способов как это сделать. Способ через phpMyAdmin: Найдите таблицу mod_users. В ней найдите вашего пользователя.

  1. Смените email на правильный и сделайте восстановление через почту.modx pass error
  2. Установите значения для полей:password: kXXEPN9pTwdXnaSlDvUzaJcR2y/1XzCqs9AXcxOzFdQ=salt: 18de7acfa078ec932d6d09f18cf0dbac Пароль станет password321. Так же обратите внимание на поле active, его значение должно быть 1.За способ спасибо MerinovKV.

Способ решения проблемы путем создания нового пользователя не идеален, наверняка проблема кроется в отстутствии каких-то библиотек. Если вы найдете другое решение проблемы, просим вас сообщить об этом в комментариях.

Теги:

modx
modx revo
CMF
доступ запрещен
пароль администратора
восстановить

error-log.ru

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

Подготовил и выпустил новую версию 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:

modx.pro

Пользователь или гость? | Зона MODX

Проверить, авторизован ли пользователь на сайте или нет, можно несколькими способами — с помощью фильтров MODX и с помощью методов класса пользователя MODX. Начнём по порядку.

Фильтры MODX

При загрузке страницы MODX выставляет ряд системных плейсхолдеров, в том числе и плейсхолдеры текущего пользователя — modx.user.id и modx.user.username. В них MODX записывает id текущего пользователя и имя пользователя (используемое для логина), при условии конечно, что пользователь авторизован. Если же нет, то modx.user.id будет равен 0, а modx.user.username — "(anonymous)". Кстати, имя гостя можно изменить в системных настройках. К ним мы и будет применять специальные фильтры для проверки авторизации.

Этот способ отлично подойдёт для администраторов и контент-менеджеров, так как не требует от них знаний языка программирования PHP. Достаточно научиться пользоваться фильтрами MODX.

Начнём с самого простого. В шаблонах, ресурсах или чанках вставляем плейсхолдеры текущего пользователя с фильтрами сравнения.

// Если id пользователя больше 0, значит пользователь авторизован, если равен 0, то это гость [[!+modx.user.id:gt=`0`:then=`Пользователь авторизован`:else=`Пользователь не авторизован`]] // Тоже самое, только для другого плейсхолдера. Как правило используется редко [[!+modx.user.username:is=`(anonymous)`:then=`Пользователь авторизован`:else=`Пользователь не авторизован`]] // Плейсхолдеры нужно вызывать некешируемыми.

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

Это простое решение подойдёт в большинстве случаев. Но у него есть одна тонкость — оно не учитывает контекты. Т.е. если пользователь ещё не авторизовался на сайте (контекст «web»), но авторизовался в админке (контекст «mgr»), то MODX считает пользователя авторизованным и присвоит плейсхолдеру modx.user.id идентификатор пользователя, авторизованного в админке. Из чего следует, что это решение не подойдёт, когда требуется проверка авторизации в конкретном контексте. Для таких случаев в MODX предусмотрены специальные фильтры —

// Проверяем авторизацию в текущем контексте [[!+modx.user.id:isloggedin:is=`1`:then=`Вы авторизованы`:else=`Вы не авторизованы`]] // Проверяем авторизацию в указанном контексте (web) [[!+modx.user.id:isloggedin=`web`:is=`1`:then=`Вы авторизованы`:else=`Вы не авторизованы`]] Хочу раскрыть небольшой секрет. Два последних фильтра работают с любыми плейсхолдерами. Им не требуется идентификатор пользователя, так как эти фильтры проверяют авторизацию текущего пользователя используя переменную $modx->user. Поэтому можно проверить авторизацию пользователя даже так [[!+tralala:isloggedin:is=`1`:then=`Вы авторизованы`:else=`Вы не авторизованы`]] // Или так [[!+100500:isloggedin:is=`1`:then=`Вы авторизованы`:else=`Вы не авторизованы`]]

Но для семантической ясности всё-таки лучше использовать modx.user.id.

Применение фильтров существенно упрощает процесс динамического формирования страницы, но немного нагружает парсер. Кроме того, у них есть один минус — они не работают в ajax режиме.

Программный способ проверки

Для проверки авторизации пользователя в сниппетах и плагинах программистам пригодится метод класса modUser::isAuthenticated(). Он возвращает TRUE, если пользователь авторизован в текущем контексте или в контексте, указанном в качестве аргумента. Как мы видим, он похож на фильтр isloggedin. И это не случайно, так как фильтр как раз и вызывает этот метод для проверки статуса пользователя.

// Проверка авторизации пользователя в текущем контексте if ($modx->user->isAuthenticated()) { // Выполняем код для пользователя }

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

05 января 2016, 18:01   7555     2

modzone.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта