$wa->user("password")
$wa->user("password") отдает далеко не тот хэш, что лежит в таблице wa_contact.
При этом выдаваемое значение меняется. Есть подозрения, что в этой функции поверх md5 прикручена соль от времени или еще какой переменной. Как получить хэш пароля? Если в публикуемом в магазине Webasyst приложении я напрямую обращусь к таблице не будет ли это перечить правилам?
ЗЫ: Попробую объяснить зачем это надо. В приложении есть api которое смотрит наружу через фронт. Что бы кому попало не отдавало, есть мысль пользоваться справочником приложения "контакты" сравнивая с ним входящие в api login и хэш пароля.
2 ответа
Если наследовать классы API приложения от системного класса waAPIMethod, то можно использовать его метод getRights() для проверки прав доступа. Это не поможет решить вашу задачу?
Нет. Это немного другое. Тут невозможно сделать проверку пары логин и хэш. Еще раз попробую объяснить. Определенной странице фронта приходит методом post или get 3 переменных: login, hash и аналитический признак действия... назовем его условно api_action. Экшены фронта проверяют наличие пары login/hash и если все ок, то формируются данные по запрошенному api_action и отдаются как результат запроса post. Если пары login/hash нет, то ничего из данных не отдается. Возможно где-то между проверкой пары login/hash и api_action стоит прикрутить getRights, но глядя в код функции
полагаю, что это только для текущего авторизованного пользователя. Видимо придется что-то свое писать для этой задачи. Или я заблуждаюсь? Если нет, то вторая часть вопроса остается актуальной. Можно ли (де-юре) прямым sql-запросом без плейсхолдеров в экшене фронта или бэка обращаться к таблице wa_contact ?
Немного заблуждался.
Следующая конструкция позволяет считать права любого пользователя.
Однако вопрос о сравнении хэша пароля полученного постом в экшен с хэшом в базе, остается открытым.
Зависит от того где вы просите данные. В шаблоне будет фейковый хэш, в самом PHP всё корректно.
Даст хэш пароля, но не стоит верить что он будет всегда md5.