开发者

opencart to stop view index page until login

开发者 https://www.devze.com 2023-04-12 23:24 出处:网络
i am using opencart in one project, every thing is working fine but i am unable to find an option to stop view of home page until LOGIN.

i am using opencart in one project,

every thing is working fine but i am unable to find an option to stop view of home page until LOGIN.

actually this is project requirement, no one can see home until LOGIN.

is there way to do this with OPEN CAR开发者_JS百科T ?

Thanks


this is untested, but should point you in the right direction:

(OpenCart 1.4.9.x)

Save this to: catalog/controller/common/check_login.php

<?php
class ControllerCommonCheckLogin extends Controller {
    public function index() {
        if (!$this->customer->isLogged()) {
            // Require to be logged in
            $ignore = array(
                'account', 'payment'
            );

            $match = false;
            if (isset($this->request->get['route'])) {
                foreach ($ignore as $i) {
                    if (strpos($this->request->get['route'], $i) !== false) {
                        $match = true;
                        break;
                    }
                }
            }

            // Show site if logged in as admin
            $this->load->library('user');
            $this->registry->set('user', new User($this->registry));

            if (!$this->user->isLogged() && !$match) {
                return $this->forward('account/login');
            }
        }
    }
}
?>

Edit /index.php

Find:

// Maintenance Mode
$controller->addPreAction(new Action('common/maintenance/check'));

Add After:

// Login Check
$controller->addPreAction(new Action('common/check_login'));

Essentially use the same logic as the maintenence check... The big difference is it looks for the word 'account' in the string... If it finds it it allows the page to be displayed, if not it redirects to the login page...

Use the word "account" instead of "login" in case they need to register... All of the account pages already check for loggin so there is no worry there...

Again, untested so you may need to tweak one or two things - but it should/may work by dropping in the code


check_login.php for opencart 1.5.3

<?php
class ControllerCommonCheckLogin extends Controller {
    public function index() {
        // Require to be logged in
        if (!$this->customer->isLogged()) {

            // Require to be logged in
            $ignore = array(
                'account','payment'
            );

            $match = false;
            if (isset($this->request->get['route'])) {
                foreach ($ignore as $i) {
                    if (strpos($this->request->get['route'], $i) !== false) {
                        $match = true;
                        break;
                    }
                }
            }

            // Show site if logged in as admin
            $this->load->library('user');

            $this->user = new User($this->registry);

            if (!$this->user->isLogged() && !$match) {
                $this->redirect($this->url->link('account/login'));
            }
        }
    }
}
?>


There is nothing built-in that I know of, but you can do it yourself. Based on your answers to @CarpeNoctumDC's questions you may have to do some digging, but this should get you started:

system/library/customer.php

public function isLogged() { ... }

catalog/controller/common/home.php

if (!$this->customer->isLogged()) {
    // login page
    exit;
}


The right way to go about this is to open

/catalog/controller/common/home.php

find public function index() { at the top of the code, and after it put

if(!$this->customer->isLogged()) {
    $this->session->data['redirect'] = $this->url->link('common/home');
    $this->url->redirect('account/login', '', 'SSL');
}

In case you're unsure how to do this properly, just take a look at the first few lines after public function index() { in

/catalog/controller/account/account.php

setting your code in the home controller to common/home in place of account/account

0

精彩评论

暂无评论...
验证码 换一张
取 消