В настоящее время я работаю над API для получения данных в форме JSON из нашей базы данных. Я решил принудительно выполнить проверку перед извлечением данных.Проверка входа администратора или нет в OpenCart
Потому что я использую OpenCart, мне предлагается функция, называемая isLogged()
.
Однако, от того, что я знаю, есть два isLogged()
:
isLogged()
для пользователя, который является администратором, при этом пути:opencart/upload/system/library/user.php
isLogged()
для Заказчик, по этому пути:opencart/upload/system/library/customer.php
Использование isLogged()
есть (насколько я сейчас знаю) зависит от того, где мой контроллер. В настоящее время я развиваюсь под /opencart/upload/catalog/controller/api/order.php
, который по определению находится на стороне customer
. Таким образом, я не могу использовать $this->user->isLogged()
, а вместо этого должен использовать $this->customer->isLogged()
, что противоречит точке проверки администратора.
Если я пытаюсь использовать $this->user->isLogged()
, я получаю следующее сообщение об ошибке:
PHP Fatal error: Call to a member function isLogged() on a non-object in /vagrant/opencart/upload/catalog/controller/api/order.php
Как, не двигая мой контроллер для admin
, проверки, был ли администратор вошел в систему или нет? Или я совершенно неправ в своем анализе?
EDIT: Похоже, я неправильно понял требования к проекту. Это не имеет никакого отношения к проверке пользователей OpenCart, но проверка пользователя из другой внутренней системы.
Если вы заглянете в файлы 'index.php' как для интерфейса, так и для администратора, вы увидите, что в одном только объект клиента i (frontend), а во втором зарегистрирован только пользовательский объект (admin). Вот почему вы не можете вызывать '$ this-> user-> isLogged()' на стороне интерфейса. Какую проверку вы хотите сделать? Обычно внешний интерфейс не должен знать о присутствии администратора и наоборот. То, что вы можете сделать на интерфейсе, - это прямая проверка для просмотра: 'isset ($ this-> session-> data ['user_id'])' должен предоставить вам необходимую вам информацию. – shadyyx
Выполняя некоторые из моих собственных тестов, я обнаружил, что после входа в интерфейс вы можете использовать '$ this-> customer-> isLogged()', чтобы проверить, вошли ли они в систему или нет (я просто использовал простой true/false, учитывая условие isLogged()). Я также проверил, что функции в библиотеке/клиенте работают, учитывая, что клиент вошел в систему. Однако я немного запутался с целью 'session'. Связан ли этот объект с этой конкретной сессией? Я заметил, что в 'checkout/confirm' он используется очень часто - зачем и когда следует использовать' session' над 'customer-> getSomething()'? – theGreenCabbage
'isset ($ this-> session-> data ['user_id'])' был предположительно ** только **, чтобы проверить, включен ли администратор (бэкэнд-пользователь). Если вы находитесь в интерфейсе и работаете только с клиентом , используйте его getters/seters. – shadyyx