验证管理员是否在OpenCart中登录

时间:2014-11-05 08:37:15

标签: php validation opencart

我目前正在研究一种API,以便从我们的数据库中以JSON的形式检索数据。我已经决定在检索数据之前强制验证。

因为我正在使用OpenCart,所以我获得了名为isLogged()的函数。

但是,据我所知,有两个isLogged()

  1. isLogged()用户,即此路径下的管理员:

    opencart/upload/system/library/user.php

  2. 客户的
  3. isLogged(),在此路径下:

    opencart/upload/system/library/customer.php

  4. 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的用户验证无关,而是来自我们内部系统的另一个用户验证。

4 个答案:

答案 0 :(得分:2)

$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']

答案 1 :(得分:1)

<2.>版本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();

答案 2 :(得分:1)

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);

在“protected function index(){”之后说并保存。

然后打开你的模板:

/目录/视图/主题/ * /模板/普通/ header.tpl

<?php echo $language; ?>

你要替换:

<?php  if($this->user->isLogged()){echo $language;} ?>

准备好......

答案 3 :(得分:0)

// In Version 3.X

// logged in user id

echo (int)$this->user->getId();