Bilbo Baggins
именно
Bilbo Baggins
потому и спросил, вроде подобный метод сейчас не редкость - может кто-то уже делал
Aliaksandr
Я думаю самый простой вариант сначала определить логин на основе этого поля, т.е. пару строк дописать для контроллера
Bilbo Baggins
юзеры с менеджерами тоже не могут получается авторизовываться через одну форму?
Aliaksandr
Хотя я смотрю метод findUser, так он автоматом распознает id, email или username
Aliaksandr
Так что может оно и без правок сработает? Пробовал?
Aliaksandr
По коду похоже, что можно авторизоваться по логину, мэйлу или id пользователя без костылей. Возможно, так оно и есть, если эта логика до конца соблюдена.
Aliaksandr
юзеры с менеджерами тоже не могут получается авторизовываться через одну форму?
modUsers по идее только веб пользователей касается, для менеджеров формлистер разве используется
Bilbo Baggins
&context = 'mgr';
Bilbo Baggins
и модель
Bilbo Baggins
$params['model'] = '\modManagers'; $params['modelPath'] = 'assets/lib/MODxAPI/modManagers.php';
Aliaksandr
Ну так тут "или / или", одновременно не сделаешь с наскоку:)
Aliaksandr
Обертку разве что какую-то сверху дописывать, которая уже формлистер запустит с нужными параметрами
Aliaksandr
А так попробуй без всяких костылей авторизоваться по мэйлу и логину, вдруг сработает:)
Bilbo Baggins
ну в доке требуется loginField указать
Bilbo Baggins
ok, гляну спасибо
Andrey
И нам расскажи.
Aliaksandr
ну в доке требуется loginField указать
loginField это просто поле, где искать логин. А дальше по коду этот логин проверяется на предмет того, что это может быть - internalKey, email или username и возвращает пользователя уже исходя из этого
Aliaksandr
Глянь в modUsers метод edit и входящий в него метод findUser
Aliaksandr
И нам расскажи.
По идее это можно проверить на любой форме авторизации на формлистере, но у меня ни одной такой нет, я ретроград)))
Bilbo Baggins
эт я мудак
Bilbo Baggins
loginField указывать надо, чтоб он знал какое из переданных полей считать логином
Pathologic
хорошо было бы сделать документацию платной
Aliaksandr
Чтоб отвадить последних десятерых, интересующихся "как там эво":)
Bilbo Baggins
Bilbo Baggins
ну вот почему-то подумал что речь о поле таблицы пользователей
Pathologic
для этого и используется MODxAPI чтобы не думать о таблицах
Aliaksandr
Раз уж проснулся, так заодно б и ответил, авторизуется ли пользователь, если вместо логина ввести его мэйл или internalKey:)
Aliaksandr
А то никого найти нельзя, чтоб проверить))
Bilbo Baggins
ну хватит уже мизантпропничать. Понимаю, что частые глупые вопросы достали. Но ты явно недолюбливаешь людей.
Aliaksandr
Это я у паталожика спрашиваю, если что))
Bilbo Baggins
я ему, если что и отвечаю. не указал
Aliaksandr
Ну вот, т.е. проблемы изначально и не было и можно смело в поле логина писать "введите логин или email":)
Pathologic
это больше валидацией разруливается
Pathologic
если надо только email так ставишь правило и все
Aliaksandr
если надо только email так ставишь правило и все
Надо как раз модная нынче надпись "логин ИЛИ email" в одном поле
Aliaksandr
Если я правильно понял изначальный вопрос:)
Pathologic
ну так это будет работать, я ж сказал
Pathologic
если id вписать, то тоже будет работать ((:
Aliaksandr
Я понял:)
Pathologic
ну а в совсем тяжелых случаях придется расширять классы и придумывать свою авторизацию
Pathologic
а так я думаю, что тема авторизации в ево полностью исчерпана (:
Pathologic
осталось разве что написать платный компонент для авторизации с ExtJs
Aliaksandr
Эта тема неисчерпаема:)
Pathologic
из необычного я помню только авторизацию по номеру телефона, но это просто
Aliaksandr
Получается, что пользователь два раза запрашивается еще до того, как проверен его пароль. Сначала для проверки не заблокирован ли он, а потом еще раз для того, чтобы получить его поля?
Pathologic
нет
Aliaksandr
Сначала checkBlock, который вызывает edit, потом сам edit еще раз и только потом testAuth. Или там хитрее?:)
Pathologic
так edit не будет в базу обращаться если одну и ту же запись вызывать
Aliaksandr
Я так понимаю, что если edit не по internalKey, то он по новой срабатывает
Aliaksandr
Там же edit($login), у него getID() != $id
Pathologic
надо проверить
Aliaksandr
Ну я так понял логику, что в edit передается что-то, если это что-то равно this->id, то все ок, а если не равно (например передан логин или мэйл), то все закрывается и через findUser снова ищется пользователь и его id
Aliaksandr
Хотя может просто пора спать и там еще какая хитрость имеется:)
Pathologic
там сравнение немного не так
Pathologic
но вообще в каком случае нужно несколько раз вызывать edit?
Asan
После переноса сайта пропали картинки, как их восстановить?
Aliaksandr
В общем я бы глянул связку user->checkBlock($login) и далее user->edit($login), если будет желание на предмет повторного запроса:)
Aliaksandr
Перенести картинки со старого сайта:)
Pathologic
после checkBlock можно сделать getID()
Pathologic
то есть edit не нужен после checkBlock
Aliaksandr
В чекблок не используется сам this, там $tmp = clone $this; который в конце уничтожается:)
Aliaksandr
Потому тут я не в курсе, стоит ли трогать вообще)
Aliaksandr
Боюсь в testAuth там еще и третий раз запрашивается пользователь. В общем надо на свежую голову и с рабочей формой авторизации это глянуть, а не в ночь с пятницы на субботу)
Bilbo Baggins
я нечасто сталкиваюсь с необходимостью множества дополнительных полей у пользователя. Решение для меня очевидное - сделать доп.таблицу и связать по id. Но раз уж заговорили о том, что тема авторизации исчерпана: было бы неплохо при авторизации указывать имя таблицы, все поля которой окажутся в объекте юзера. И с ними можно было бы работать методами из АПИ
Pathologic
В чекблок не используется сам this, там $tmp = clone $this; который в конце уничтожается:)
вообще да, из-за клонирований этих и получаются запросы
Pathologic
об этом даже была статья на modx.im
Bilbo Baggins
расширяй класс и указывай там хоть сто таблиц
программисты для программистов - это хорошо. Но, уверен, что 3/4 местной аудитории умеют собирать неплохие сайты на evo, но не имеют понятия о «расширениях классов»
Aliaksandr
Наверно пока в edit использовался только id там все логично сходилось, а вот потом после появления findUser условие getID() != $id везде и поплыло
Pathologic
да и авторизации таким пользователям тем более не нужны, все равно не понимают, что как работает
Pathologic
а как заказчик захочет личный кабинет, так сразу начинается что примеров нет, из коробки не работает ничего
Bilbo Baggins
т.е. ты ни разу не слышал, что люди пытаются использовать стандартные поля юзера для иных целей?
Pathologic
люди много чего пытаются бездумно
Bilbo Baggins
я не настаиваю, и тем более не требую и не прошу. Просто холиварим.
Pathologic
ну а мне сегодня уже жаловались что нет готовых решений типа картинку из галереи сохранить в тв