Авторизация по емейлу

Довольно много раз звучал вопрос «Как сделать так, чтобы можно было авторизовываться по емейлу?». А решение на самом деле очень простое: Создаем вот такой плагин:

// Try to find by email
$modx->event->_output = $modx->getObjectGraph('modUser', '{"Profile":{},"UserSettings":{}}', array ('Profile.email' => $scriptProperties['username']));

и вешаем его на событие OnUserNotFound. Все. То есть если пользователь ввел емейл, и MODX не смог его найти (так как ищет по username), то в плагине на это событие мы пытаемся найти этого пользователя по емейлу.

Только ни в коем случае нельзя делать возврат через return, так как объект Event умеет возвращать только строку. Надо именно так, как я написал.

P.S. теперь авторизация здесь возможно и по емейлу.

Comments

Супер! Когда сменили на коммюнити дизайн сразу заметил, что авторизация по e-mail не проходит и понял, что это из-за MODX)))

Нет, там авторизация по емейлу работает. Потому что там вообще нет синхронизации MODX и Livestreet пользователей (специально там сейчас перепроверил). А вот здесь синхронизация есть. Вот пришлось поправить :-)