我目前正在开发一个API,以便从我们的数据库中以JSON的形式检索数据。我决定在检索数据之前强制验证。
因为我正在使用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
的情况下验证管理员是否已登录?或者我的分析完全错了?
编辑:看起来我误解了项目要求。这与OpenCart的用户验证无关,而是来自我们内部系统的另一个用户验证。
$this->session->data['isAdminLogin'] = 0;
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
$this->session->data['token'] = md5(mt_rand());
$this->session->data['isAdminLogin'] = 1;
if (isset($this->request->post['redirect'])) {
$this->redirect($this->request->post['redirect'] . '&token=' . $this->session->data['token']);
} else {
$this->redirect($this->url->link('common/home', 'token=' . $this->session->data['token'], 'SSL'));
}
}
用此替换common / login.php索引函数代码。现在用这个检查adminlogin
$this->session->data['isAdminLogin']
在版本2.XX中
使用在/index.php中插入此代码
// User
$registry->set('user', new User($registry));
并使用此代码检查登录管理员
//Checks to see if the logged in user has permission to view or edit a particular admin page.
$this->user->isLogged();
//Checks to see if the admin user is logged into their account.
$this->user->getId();
//Gets the ID number of the administrator account.
$this->user->getUserName();
Opencart 1.5.x
例如,如果您希望页面的访问者不要仅为admin看到语言选择器,则输入/catalog/controller/common/header.php
// Show if logged in as admin
$this->load->library('user');
$this->user = new User($this->registry);
在“受保护的函数index(){”后面说并保存。
然后打开你的模板:
/catalog/view/theme/*/template/common/header.太平路
<?php echo $language; ?>
你要替换:
<?php if($this->user->isLogged()){echo $language;} ?>
准备好......
// In Version 3.X
// logged in user id
echo (int)$this->user->getId();